在 Azure DocumentDB 中,对次要本地用户的读取和读写权限

Azure DocumentDB 支持具有专门读写和只读角色的辅助型本机 DocumentDB 用户,确保能够安全地委派数据访问权限。 在群集预配期间创建的内置管理帐户具有完全权限,包括用户管理。 辅助用户会自动复制到群集副本,但必须在主群集上执行用户管理。

先决条件

  • Azure 订阅服务

    • 如果没有 Azure 订阅,请创建 试用版
  • 现有的 Azure DocumentDB 群集

原生角色

Azure DocumentDB 为具有以下角色的辅助用户支持原生基于角色的访问控制:

Description
readWriteAnyDatabase 完全读写权限,包括数据库管理
clusterAdmin 完全读写权限,包括数据库管理
readAnyDatabase 只读权限

使用 MongoDB 驱动程序或工具(如 MongoDB Shell)管理用户和角色。mongosh

注释

仅支持具有数据库管理和作权限的完整读写用户。 不能单独分配角色。

通过 MongoDB Shell 进行身份认证和执行操作

使用在群集预配期间创建的内置管理帐户进行身份验证。 此帐户在群集上具有独占用户管理权限(userAdmin)。

  1. 在安装了 MongoDB shell 的客户端上打开终端。

  2. 获取您的 Azure DocumentDB 集群的名称和当前凭据。

    小窍门

    可以在 Azure 门户的“连接字符串”部分获取群集的本机 连接字符串

  3. 使用以下连接字符串进行连接:

    mongosh "mongodb+srv://<username>:<password>@<cluster-name>?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
    

管理用户

在运行命令的群集上创建新用户。 如果该用户已存在,该 createUser 命令将返回重复的用户错误。

  1. 创建数据平面管理用户。

    db.runCommand(
      {
        createUser:"yourUserName",
        pwd : "yourPassword",
        roles : [
          { role:"clusterAdmin",db:"admin" },
          { role:"readWriteAnyDatabase", db:"admin" }
        ]
      }
    )
    
  2. 创建只读用户。

    db.runCommand(
      {
        createUser:"yourUserName",
        pwd : "yourPassword",
        roles : [
          { role:"readAnyDatabase",db:"admin" }
        ]
      }
    )
    
  3. 通过运行 updateUser 命令更新数据库上的用户。

    use admin
    
    db.runCommand(
      {
        updateUser:"<username>",
        pwd : "<new cleartext password>"
      }
    )
    

    注释

    该命令仅支持更新密码。

  4. 从群集中删除用户。

    use admin
    
    db.runCommand(
      {
        dropUser:"<username>"
      }
    )
    
  5. 检索有关群集上所有本机用户的详细信息,或指定单个用户以获取有关其角色和其他属性的信息。

    use admin
    
    db.runCommand(
      {
        usersInfo:1
      }
    )