你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过 Azure DocumentDB 上的辅助本机用户提供的读取和读写权限

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

先决条件

  • 现有的 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
      }
    )