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