View a markdown version of this page

MongoDB Atlas 数据库用户 - AWS Secrets Manager

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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 秒的传播延迟。