IBM Cloud Docs
管理用户、角色和权限

管理用户、角色和权限

PostgreSQL 使用角色系统来管理数据库许可权。 角色用于为单个用户或一组用户提供一组特权。 使用 psql 命令 \du 确定部署中的角色,组和特权。

在 IBM Cloud中供应新部署时,系统会自动为您提供 admin 用户以访问和管理 PostgreSQL。

admin 用户

在 IBM Cloud中供应新部署时,系统会自动为您提供 admin 用户以访问和管理 PostgreSQL。 设置管理密码 后,请使用该密码来连接到部署。

admin 在数据库中创建资源 (如表) 时,admin 拥有该对象。 admin 创建的资源不可供其他用户访问,除非您明确授予这些用户许可权。

admin 用户与添加到部署的任何其他用户之间的最大差异是 pg_monitorpg_signal_backend 角色。 pg_monitor 角色提供了一组许可权,这些许可权使管理用户适合于监视数据库服务器。 pg_signal_backend 角色使管理用户能够发送信号以取消由其他用户启动的查询和连接。 它无法向超级用户拥有的进程发送信号。

您还可以使用 admin 用户将这两个角色授予部署上的其他用户。

要向其他数据库用户公开取消查询的功能,请向 admin 用户授予 pg_signal_backend 角色。 使用类似如下的命令:

GRANT pg_signal_backend TO joe;

要允许用户 joe 取消后端,请使用如下命令将 pg_signal_backend 授予具有 ibm-cloud-base-user 角色的所有用户:

GRANT pg_signal_backend TO "ibm-cloud-base-user";

此特权允许用户终止与数据库的任何连接。

要设置特定监视用户 mary,请使用类似如下的命令:

GRANT pg_monitor TO mary;

使用如下命令将 pg_signal_backend 授予具有 ibm-cloud-base-user 角色的所有用户:

GRANT pg_monitor TO "ibm-cloud-base-user";

在用户界面中设置管理员密码

IBM Cloud控制面板的资源列表中选择您的实例,通过用户界面设置管理员密码。 然后,选择 设置。 接下来,在更改数据库管理员密码部分键入一个新密码,然后单击更改密码

在 CLI 中设置管理员密码

使用 Cloud Databases CLI 插件 中的 cdb user-password 命令来设置 admin 密码。

例如,要设置名为 example-deployment 的部署的管理密码,请使用以下命令:

ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>

在应用程序接口中设置管理员密码

在服务的“概览”面板部署详细信息部分显示的基础端点提供了通过 API 访问此部署的基础 URL。 将其与 Set specified user 's password 端点配合使用以设置管理密码。

curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \

服务证书 用户

通过 _服务证书_面板 创建的用户是 ibm-cloud-base-user 的成员。 他们能够登录,创建用户和创建数据库。

当组中的用户在数据库 (如表) 中创建资源时,同一组中的所有用户都有权访问该资源。 ibm-cloud-base-user 中的任何用户创建的资源可供 ibm-cloud-base-user 中的其他用户 (包括管理用户) 访问。

通过 CLI 创建的用户

通过 Cloud Databases CLI 插件 创建的用户也是 ibm-cloud-base-user 的成员。 他们能够登录,创建用户和创建数据库。

当用户在数据库 (如表) 中创建资源时,同一组中的所有用户都有权访问该资源。 由 ibm-cloud-base-user 中的任何用户创建的资源可供 ibm-cloud-base-user 中的其他用户 (包括 admin 用户) 访问。

直接从 API 和 CLI 创建的用户不会显示在 _服务凭证_中,但您可以 添加 (如果选择)。

通过 API 创建的用户

您通过 Cloud Databases API 创建的用户也是 ibm-cloud-base-user 的成员。 他们能够登录,创建用户和创建数据库。

当用户在数据库 (如表) 中创建资源时,同一组中的所有用户都有权访问该资源。 ibm-cloud-base-user 中的任何用户创建的资源可供 ibm-cloud-base-user 中的其他用户 (包括管理用户) 访问。

直接从 API 和 CLI 创建的用户不会显示在 _服务凭证_中,但您可以 添加 (如果选择)。

只读用户

ibm-cloud-base-user-ro 管理为访问只读副本而创建的用户的特权。 有关详细信息,请参阅 配置只读副本

repl 用户

repl 用户具有“复制”特权,如果您在部署上启用 wal2json 插件,那么将使用该用户。 启用 wal2json 时,请设置 repl 用户的密码,这将允许 wal2json 插件使用该密码。

其他 ibm 用户

如果使用 admin 帐户运行 \du 命令,那么可能会注意到名为 ibmibm-cloud-base-useribm-replicationibm-rewind 的用户。

ibm-cloud-base-user 用作模板,用于管理其他用户的组角色。 它用于管理通过 CLI 和 API 创建的用户,以及启用与 IBM Cloud上的 服务凭证 用户创建的集成。 作为 ibm-cloud-base-user 成员的用户从 ibm-cloud-base-user 继承创建角色并创建数据库属性。 ibm-cloud-base-user 无法登录。

ibm 帐户是部署上的唯一超级用户。 超级用户帐户不可供您使用。 此用户是用于管理部署稳定性的内部管理帐户。

使用 psql 创建的用户

您可以完全绕过通过 IBM Cloud 创建用户,并使用 psql 直接在 PostgreSQL 中创建用户。 这样,您就可以使用 PostgreSQL's本地 角色和用户管理。 在 psql 中创建的用户/角色必须手动设置其所有特权以及对其创建的对象的特权。

直接在 PostgreSQL 中创建的用户不会出现在 _ 服务凭据_中,但您可以选择 添加这些用户

请注意,即使添加到 服务凭证,这些用户也不会与 IAM 控制集成。

附加用户和连接字符串

对 Databases for PostgreSQL 部署的访问权不限于 admin 用户。 通过 Cloud Databases CLI 插件Cloud Databases API 在用户界面的 Service credentials 中添加用户。

部署上的所有用户都可以使用连接字符串,包括公共或专用端点的连接字符串。

创建用户时,将为其分配某些数据库角色和特权。 这些特权包括登录,创建数据库和创建其他用户的能力。

在用户界面中创建用户

  1. 转到您服务的服务仪表板。
  2. 单击 Service credentials 打开 Service credentials
  3. 单击新建凭证
  4. 为新证书选择一个描述性名称。
  5. 可选指定新凭据应使用公共端点还是专用端点。 在添加内联配置参数字段中使用 { "service-endpoints": "public" } / { "service-endpoints": "private" },即可使用指定的端点生成连接字符串。 不强制使用端点,它仅控制连接字符串中的主机名。 默认情况下会生成专用端点。
  6. 单击“**添加 **”提供新凭证。 PostgreSQL 数据库中的用户名、密码和相关数据库用户会自动生成。

新凭据将显示在表中,连接字符串将以 JSON 格式出现在 _ 查看凭据_下的点击复制字段中。

通过 CLI 创建用户

如果通过 IBM Cloud CLI 和 云数据库插件 管理服务,那么可以使用 cdb user-create 创建新用户。 例如,要为 "example-deployment" 创建新用户,请使用以下命令:

ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>

完成该任务后,您可以使用 ibmcloud cdb deployment-connections 命令检索新用户的连接字符串。

从应用程序接口创建用户

在“概览”面板上显示的服务_部署详细信息_中的基础_端点_提供了通过 API 访问此部署的基础 URL。 要创建和管理用户,请使用 /users 端点的基本 URL。

curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'

任务完成后,从 /users/{userid}/connections 端点检索新用户的连接字符串。

将用户添加到 _服务证书_中

从 CLI 或 API 创建新用户不会自动将该用户的连接字符串填充到 _ 服务凭据_中。 要添加这些用户,请使用现有用户信息创建新凭证。

在 JSON 字段 _ 添加内联配置参数_ 中输入用户名和密码,或指定一个存储 JSON 信息的文件。 例如,在字段中输入 {"existing_credentials":{"username":"Robert","password":"supersecure"}} 会生成 服务凭据,并在连接字符串中填写用户名 "Robert "和密码 "supersecure"。

从现有用户生成凭证不会检查或创建该用户。