本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
MongoDB Atlas 数据库用户
秘密值字段
以下是 Secrets Manager 密钥中必须包含的字段:
{
"username": "database username",
"password": "database password",
"clusterUrl": "cluster hostname",
"databaseName": "authentication database",
"groupId": "Atlas Project ID"
}
- username
-
MongoDB 数据库用户名 ()。SCRAM-authenticated必须在 MongoDB Atlas 中配置此用户才能接受 SCRAM 身份验证。
- password
-
MongoDB Atlas 数据库用户的当前密码。
- 集群网址
-
例如,MongoDB Atlas 集群的主机名。
cluster0.abc123.mongodb.net请勿包含mongodb+srv://前缀。这用于在轮换期间验证新密码。 - databaseName
-
存储用户凭据的身份验证数据库。通常
admin适用于 SCRAM 用户或$external。 X.509/LDAP - groupId
-
24 个字符的十六进制地图集项目 ID(也称为群组 ID)。你可以在你的 Atlas 项目设置中找到它。
机密元数据字段
以下是 MongoDB Atlas 数据库用户的元数据字段:
{ "adminSecretArn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:MongoDBAtlasServiceAccount", "apiVersion": "2025-03-12" }
- 管理员 SecretArn
-
包含具有项目数据库访问管理员权限的 Atlas 服务账户 OAuth 凭证(类型: MongoDBAtlasServiceAccount)的密钥的亚马逊资源名称 (ARN)。此管理员密钥用于向 Atlas 管理员 API 进行身份验证以更新密码。
- apiVersion
-
(可选)Atlas 管理员 API 版本的
yyyy-mm-dd格式日期。此值在Accept标题中使用为application/vnd.atlas.{apiVersion}+json。如果未指定,则默认为2025-03-12。
使用流程
这种轮换类型使用双密架构。要向 Atlas 管理员 API 进行身份验证,需要使用包含 Atlas 服务账户 OAuth 凭据 (clientIdclientSecret、、serviceAccountId) 的管理员密钥。管理员密钥的类型应为 MongoDBAtlasServiceAccount。
您可以使用CreateSecret调用来创建您的密钥,其密钥值包含上述字段,密钥类型为 MongoDBAtlasDatabaseUser。可以使用RotateSecret呼叫来设置轮换配置。您必须在轮换adminSecretArn中提供元数据。您还必须在RotateSecret调用中提供角色 ARN,该角色向服务授予轮换密钥所需的权限。有关权限策略的示例,请参阅安全和权限。
由于管理员密钥的类型 (MongoDBAtlasServiceAccount) 与用户密钥 (MongoDBAtlasDatabaseUser) 不同,因此范围为的默认轮换角色策略secretsmanager:resource/Type不会授予对管理员密钥的访问权限。您必须通过添加限定于该 MongoDBAtlasServiceAccount 类型的语句或直接在角色策略中指定管理员密钥 ARN 来明确提供轮换角色对管理员密钥的访问权限。
在轮换期间,驱动程序会生成新密码,调用 Atlas Admin API 来更新数据库用户的密码,并通过打开与集群的真实 MongoDB 连接来验证新密码。请注意,在密码更新后,在集群的身份验证层接受新密码之前,会有 5-10 秒的传播延迟。