IBM Cloud Docs
管理用户和角色

管理用户和角色

Databases for MongoDB部署已启用身份验证并使用MongoDB's基于角色的访问控制

使用 Cloud Databases CLI 插件Cloud Databases API 在 UI 中的 _服务凭证_中添加用户。

管理用户

供应 Databases for MongoDB 部署时,将自动创建 admin 用户。

请先设置管理密码,然后再使用该密码进行连接。

admin 用户具有以下许可权:

  • userAdminAnyDatabase 在除 localconfig 以外的所有数据库上提供与 userAdmin 相同的特权。userAdminAnyDatabase 向管理用户提供管理权限。 它提供整个集群上的 listDatabases 操作。 通过 userAdminAnyDatabase创建角色并授予角色 给部署上的任何其他用户,包括任何 MongoDB 内置角色。 例如,要监视部署,请使用 admin 登录到 mongo shell 并将 clusterMonitor 角色授予任何用户 (包括其自身)。 使用类似如下的命令:

    db.grantRolesToUser(
     "admin",
     [
       { role: "clusterMonitor", db: "admin" }
     ]
    )
    
  • readWriteAnyDatabase 在除 localconfig 之外的所有数据库上提供与 readWrite 相同的特权。

  • dbAdminAnyDatabase 在除 localconfig 之外的所有数据库上提供与 dbAdmin 相同的特权。

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

通过用户界面设置管理密码,方法是从 IBM Cloud 资源列表中选择您的实例。 然后,选择 设置。 接下来,选择 更改数据库管理员密码

在 CLI 中设置管理员密码

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

例如,要为部署设置管理员密码,请使用以下命令:

ibmcloud cdb user-password <INSTANCE_NAME_OR_CRN> admin <NEWPASSWORD>

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

服务的“概述”面板“部署详细信息”部分上显示的基础端点提供了用于通过 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"}` \

通过用户界面管理用户和角色

  1. 转到您服务的服务仪表板。
  2. 单击 服务凭证 以打开 服务凭证 部分。
  3. 单击 新建凭证
  4. 为新证书选择一个描述性名称。
  5. (可选) 指定新凭证是使用公共端点还是专用端点。 在 添加内联配置参数 字段中使用 { "service-endpoints": "public" } / { "service-endpoints": "private" } 来生成使用指定端点的连接字符串。 未强制使用端点。 它仅控制连接字符串中的主机名。 缺省情况下会生成公共端点。
  6. 单击 添加 以供应新凭证。 将自动生成用户名和密码以及关联的 MongoDB 用户。

新凭证显示在表中,连接字符串在“查看凭证”下的“单击以复制”字段中以 JSON 形式提供。

通过 CLI 或 API 创建用户不会自动将该用户的连接字符串填充到 _服务凭证_中。 如果要将其添加到该处,那么可以使用现有用户信息创建新凭证。 在 _添加内联配置参数_下的 JSON 字段中输入用户名和密码。 例如,{"existing_credentials":{"username":"Robert","password":"supersecure"}}。 基本上,您只需发送用户名和密码,_服务凭据_就会生成填有凭据的连接字符串。

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

通过 服务凭证 创建的用户将被授予角色 readWriteAnyDatabasedbAdminAnyDatabase

如果需要从 服务凭证 创建的用户具有其他角色,那么可以使用管理用户来更改其角色。

通过 CLI 管理用户和角色

在 CLI 中创建的用户将被授予角色 readWriteAnyDatabasedbAdminAnyDatabase

如果需要用户具有其他角色,那么可以使用 admin 用户来更改其角色。

直接通过 CLI 创建的用户不会显示在 _服务凭证_中,但您可以添加这些用户。

  1. 如果通过 Cloud Databases CLI 插件 来管理服务,请使用 cdb user-create 创建新用户。 例如,要为部署创建一个新用户,请使用以下命令:
ibmcloud cdb user-create <INSTANCE_NAME_OR_CRN> <NEWUSERNAME> <NEWPASSWORD>
  1. 任务完成后,使用 ibmcloud cdb deployment-connections 命令检索新用户的连接字符串。

  2. MongoDB 将用户数据集中到 admin 数据库中。 使用 show users 命令列出 mongo shell 中的所有用户及其角色和数据库许可权。

ibmcloud cdb deployment-connections --start -u admin mongodb-production
Database Password>>
MongoDB shell version v4.0.3
connecting to: mongodb://....
....
replset:PRIMARY> use admin
switched to db admin
replset:PRIMARY> show users

通过应用程序接口管理用户和角色

在 API 中创建的用户将被授予角色 readWriteAnyDatabasedbAdminAnyDatabase

如果需要用户具有其他角色,请使用 admin 用户来更改其角色。

直接从 API 创建的用户不会显示在 _服务凭证_中,但您可以添加这些用户。

服务的“概述”部分上显示的 基础端点 提供了用于通过 API 访问此部署的基本 URL。 要创建和管理用户,请将基本 URL 与 /users 端点 配合使用。

该命令如下所示:

curl -X POST https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/{user_type}
-H 'Authorization: Bearer <>'
-H 'Content-Type: application/json'
-d '{"user": {"username": "user", "password": "v3ry-1-secUre-pAssword-2"}}' \

要检索用户的连接字符串,请将基本 URL 与 /users/{userid}/connections 端点配合使用。

MongoDB-created用户和角色

如果内置用户和角色不适合您的环境,请直接在 MongoDB中 创建用户和角色。 部署的管理员用户有权创建任何角色或特权集以用于部署。

直接在 MongoDB 中创建的用户和角色不会显示在 服务凭证 中,并且不会与 IBM Cloud 帐户或 IAM 集成。

ibm 用户

如果使用 mongo shell 列示部署上的用户,那么您可能会注意到名为 ibm 的用户。 ibm 用户是用于管理复制,集群操作和确保部署稳定性的其他功能的内部 root 用户帐户。 建议不要对 ibm 用户进行更改或删除,这将破坏部署的稳定性。

MongoDB Enterprise Edition 的 ops_manager 用户

Ops Manager 仅在 Databases for MongoDB Enterprise Edition 部署中可用。 ops_manager 用户类型具有有限的许可权。 有关更多信息,请参阅 Ops Manager 文档