Azure DocumentDB 支持具有专门读写和只读角色的辅助型本机 DocumentDB 用户,确保能够安全地委派数据访问权限。 在群集预配期间创建的内置管理帐户具有完全权限,包括用户管理。 辅助用户会自动复制到群集副本,但必须在主群集上执行用户管理。
先决条件
Azure 订阅服务
- 如果没有 Azure 订阅,请创建 试用版
现有的 Azure DocumentDB 群集
- 如果没有群集,请 创建新群集
MongoDB Shell。 有关详细信息,请参阅 安装 MongoDB shell
允许客户端连接到群集的防火墙规则。 有关详细信息,请参阅 配置防火墙。
原生角色
Azure DocumentDB 为具有以下角色的辅助用户支持原生基于角色的访问控制:
| Description | |
|---|---|
readWriteAnyDatabase |
完全读写权限,包括数据库管理 |
clusterAdmin |
完全读写权限,包括数据库管理 |
readAnyDatabase |
只读权限 |
使用 MongoDB 驱动程序或工具(如 MongoDB Shell)管理用户和角色。mongosh
注释
仅支持具有数据库管理和作权限的完整读写用户。 不能单独分配角色。
通过 MongoDB Shell 进行身份认证和执行操作
使用在群集预配期间创建的内置管理帐户进行身份验证。 此帐户在群集上具有独占用户管理权限(userAdmin)。
在安装了 MongoDB shell 的客户端上打开终端。
获取您的 Azure DocumentDB 集群的名称和当前凭据。
小窍门
可以在 Azure 门户的“连接字符串”部分获取群集的本机 连接字符串。
使用以下连接字符串进行连接:
mongosh "mongodb+srv://<username>:<password>@<cluster-name>?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
管理用户
在运行命令的群集上创建新用户。 如果该用户已存在,该 createUser 命令将返回重复的用户错误。
创建数据平面管理用户。
db.runCommand( { createUser:"yourUserName", pwd : "yourPassword", roles : [ { role:"clusterAdmin",db:"admin" }, { role:"readWriteAnyDatabase", db:"admin" } ] } )创建只读用户。
db.runCommand( { createUser:"yourUserName", pwd : "yourPassword", roles : [ { role:"readAnyDatabase",db:"admin" } ] } )通过运行
updateUser命令更新数据库上的用户。use admin db.runCommand( { updateUser:"<username>", pwd : "<new cleartext password>" } )注释
该命令仅支持更新密码。
从群集中删除用户。
use admin db.runCommand( { dropUser:"<username>" } )检索有关群集上所有本机用户的详细信息,或指定单个用户以获取有关其角色和其他属性的信息。
use admin db.runCommand( { usersInfo:1 } )