你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
Azure Cosmos DB for MongoDB vCore 中的原生辅助用户功能目前为预览版。 此预览版在没有服务级别协议的情况下提供,不建议用于生产工作负荷。 某些功能可能不受支持或者受限。
Azure Cosmos DB for MongoDB vCore 现在支持具有专用读写角色的辅助用户。 此功能使辅助用户能够访问和修改数据,这样便可更轻松地委派职责,同时增强数据安全性。 如果允许精细访问控制,团队可以自信地向各种利益干系人(如开发人员和分析师)扩展数据访问,而不会损害系统完整性。
先决条件
配置辅助用户
在群集上启用辅助本机用户管理,以便处理所有本机用户管理操作,例如创建和删除用户。 可以使用 ARM 模板或通过 Azure CLI 启用或禁用此功能。
az resource patch --ids "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroup}/providers/Microsoft.DocumentDB/mongoClusters/{ClusterName}" --api-version 2024-10-01-preview --properties "{\"previewFeatures\": [\"EnableReadOnlyUser\"]}"
禁用辅助用户
如果需要删除群集上的所有辅助用户,请使用 删除作。
若要禁用群集上的辅助用户管理作,请从previewFeatures 群集属性中删除 EnableReadOnlyUser 值。 禁用辅助用户管理后,群集上的所有辅助用户作(例如创建用户)都会被禁用,但在群集上创建的所有辅助用户仍可用于数据库访问。
支持的命令和示例
在群集预配期间,在 Azure Cosmos DB for MonogDB vCore 群集上创建了一个具有所有权限的管理用户。 此管理用户可以对群集执行所有作,并且无法删除。
此外,Azure Cosmos DB for MongoDB vCore 支持具有只读或读写权限的辅助用户的基于角色的访问控制(RBAC)。 此功能允许管理员分配角色,这些角色授予辅助用户对基本读取作的访问权限,同时保护主要数据完整性。
在群集级别为该群集上的所有数据库创建和授予用户权限。 readWriteAnyDatabase 和 clusterAdmin 角色共同授予对群集的完整读写权限,包括数据库管理和数据库作的权限。 readAnyDatabase 角色用于授予对群集的只读权限。
注意
仅支持具有数据库管理和数据库操作权限的完整读写用户。 不能单独分配 readWriteAnyDatabase 和 clusterAdmin 角色。
可以使用任何 MongoDB 驱动程序或工具(如 mongosh)来执行这些作。
通过 Mongosh 进行身份验证和执行操作
使用在群集预配期间创建的内置管理帐户进行身份验证。 只有此内置管理帐户在群集上具有用户管理权限(userAdmin)。
mongosh "mongodb+srv://<UserName>:<Password>@<ClusterName>?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
小窍门
可以在 Azure 门户中的“连接字符串”页上获取群集的本地连接字符串。
创建用户
在运行命令的群集上创建新用户。 如果用户存在,则 createUser
命令将返回重复的用户错误。
数据管理员用户
use admin
db.runCommand(
{
createUser:"yourUserName",
pwd : "yourPassword",
roles : [
{ role:"clusterAdmin",db:"admin" },
{ role:"readWriteAnyDatabase", db:"admin" }
]
}
)
只读权限用户
use 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>"
}
)
列出用户
返回有关在群集上创建的本地用户的信息。 它还支持将单个用户传入 usersInfo
。 在这种情况下,它会返回有关用户、其角色等的信息。
use admin
db.runCommand(
{
usersInfo:1
}
)
限制
- 每个群集最多可以创建 10 个用户/角色。
- 该
Updateuser
命令现在仅支持密码更新,并且无法修改其他对象字段。 - 预览版不支持该
Roleinfo
命令。 或者,也可以使用usersInfo
。 - 不支持向特定数据库或集合分配角色。
- 在群集上启用辅助用户预览版时,群集还原操作可能不起作用。
- 若要执行群集还原,请从previewFeatures 属性中删除 EnableReadOnlyUser 值。 完成还原后,可以重新启用预览版。 从群集删除预览不会影响在群集上创建的辅助用户,只会影响执行用户管理操作的能力。