本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon DocumentDB 用户
在 Amazon DocumentDB 中,用户与密码一起使用才能通过集群的身份验证。每个集群都有一个在集群创建过程中建立的主用户和密码。
所有在 2020 年 3 月 26 日之前创建的新用户都已被授予 dbAdminAnyDatabase
、readWriteAnyDatabase
和 clusterAdmin
角色。建议您重新评估所有用户并根据需要修改角色,以便为集群中所有用户强制执行最低权限。
有关更多信息,请参阅 使用基于角色的访问控制限制数据库访问。
主用户和 serviceadmin
用户
新创建的 Amazon DocumentDB 集群有两个用户:主用户和serviceadmin
用户。
主用户 是单个特权用户,可以执行管理任务并创建具有角色的其他用户。当您首次连接到 Amazon DocumentDB 集群时,必须使用主用户名和密码进行身份验证。在创建 Amazon DocumentDB 集群时,主用户将获得该集群的这些管理权限,并被授予以下角色root
.
在创建集群时会隐式创建 serviceadmin
用户。每个Amazon DocumentDB B 集群都有一个serviceadmin
提供的用户Amazon管理集群的能力。您无法登录、删掉、重命名、更改密码,或者修改 serviceadmin
的权限。任何此类尝试都会导致错误。
主serviceadmin
无法删除 Amazon DocumentDB 集群的用户,其角色为root
主用户的无法撤销。
如果您忘记了主用户密码,则可以使用 Amazon Web Services Management Console 或 Amazon CLI 重置密码。
创建其他用户
作为主用户(或具有 createUser
角色的任何用户)连接后,您可以创建新用户,如下所示。
db.createUser( { user: "sample-user-1", pwd: "password123", roles: [{"db":"admin", "role":"dbAdminAnyDatabase" }] } )
要查看用户的详细信息,可以使用 show users
命令,如下所示。您还可以使用 dropUser
命令删除用户。有关更多信息,请参阅 常用命令。
show users
{
"_id" : "serviceadmin",
"user" : "serviceadmin",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
},
{
"_id" : "myMasterUser",
"user" : "myMasterUser",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
},
{
"_id" : "sample-user-1",
"user" : "sample-user-1",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
}
]
}
在上面的示例中,新用户 sample-user-1
受 admin
数据库的限制。对于新用户来说,情况总是如此。Amazon DocumentDB 没有authenticationDatabase
因此,所有身份验证都是在下文中进行的admin
数据库。
创建用户时,如果省略db
字段在指定角色时,Amazon DocumentDB 会将该角色隐式归因于发出连接的数据库。例如,如果您的连接是针对数据库 sample-database
发出的,并且您运行以下命令,则用户 sample-user-2
将在 admin
数据库中创建并具有对数据库 sample-database
的 readWrite
权限。
db.createUser( { user: "sample-user-2", pwd: "password123", roles: ["readWrite"] } )
创建具有跨所有数据库范围的角色的用户(例如,readInAnyDatabase
)需要在创建用户时处于 admin
数据库上下文,或者在创建用户时明确指定角色的数据库。
要切换数据库上下文,可以使用以下命令。
use admin
要了解有关基于角色的访问控制以及对集群用户强制执行最低权限的更多信息,请参阅使用基于角色的访问控制限制数据库访问。
自动轮换Amazon DocumentDB B 的密码
借助 Amazon Secrets Manager,您可以将代码中的硬编码凭证(包括密码)替换为对 Secrets Manager 的 API 调用,从而以编程方式检索密钥。这有助于确保检查您的代码的人不会泄露密钥,因为其中根本不包含密钥。此外,您还可以配置 Secrets Manager 以根据指定的计划自动轮换密钥。这使您能够将长期密钥替换为短期密钥,这有助于显著减少泄露风险。
使用 Secrets Manager,您可以自动轮换您的Amazon DocumentDB B 密码(即秘密) 使用Amazon LambdaSecrets Manager 提供的功能。
有关更多信息Amazon Secrets Manager以及与 Amazon DocumentDB 的本地集成,请参阅以下内容: