对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

Amazon Web Services IAM 身份验证机制

重要

MONGODB-AWS身份验证机制仅在MongoDB 4.4 及更高版本中可用。

MONGODB-AWS身份验证机制使用Amazon Web Services Identity and Access Management (Amazon Web Services IAM)凭证对MongoDB进行用户身份验证。 只有在向MongoDB Atlas进行身份验证时才能使用此机制。

提示

为Amazon Web Services IAM 身份验证配置Atlas

要学习;了解有关为Amazon Web Services IAM身份验证配置MongoDB Atlas 的更多信息,请参阅Atlas文档中的使用Amazon Web Services IAM 设置身份验证。

要连接到启用了 MONGODB-AWS 身份验证的 MongoDB 实例,请指定 MONGODB-AWS 身份验证机制。

驱动程序会按所列顺序在以下来源中检查您的凭证:

  1. 连接字符串。

  2. 自定义凭证提供商。要了解更多,请参阅 指定自定义 Amazon Web Services 凭证提供商。

  3. 环境变量。

  4. Web 身份令牌文件。

  5. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 环境变量中指定的Amazon Web Services ECS 端点。

  6. Amazon Web Services EC2 端点。 要学习;了解更多信息,请参阅Amazon Web Services文档中的任务的 IAM 角色。

重要

驱动程序仅从找到档案的第一个来源获取凭证。例如,如果在连接字符串中指定 AWS 凭证,驱动程序将忽略您在环境变量中指定的任何凭证。

提示

以下示例使用 SetAuth() 方法设置相应的档案。您也可以使用 ApplyURI() 方法指定这些档案。如果使用 ApplyURI() 方法,则必须对用户名和密码进行 URL 编码,以确保正确解析。

如需使用 AWS IAM 档案连接到 MongoDB 实例,请执行以下步骤:

  • 为 AuthMechanism 选项指定值 MONGODB-AWS

  • 为 Username 选项指定 accessKeyID 的值

  • 为 Password 选项指定 secretAccessKey 的值

var accessKeyID, secretAccessKey string
awsCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
}
awsIAMClient, err := mongo.Connect(options.Client().SetAuth(awsCredential))
if err != nil {
panic(err)
}
_ = awsIAMClient

如果必须指定 AWS 会话令牌,请使用假设角色请求返回的临时凭证。

如需使用临时档案,请将 sessionToken 的值指定给 AuthMechanismProperties 选项:

var accessKeyID, secretAccessKey, sessionToken string
assumeRoleCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
AuthMechanismProperties: map[string]string{
"AWS_SESSION_TOKEN": "<sessionToken>",
},
}
assumeRoleClient, err := mongo.Connect(options.Client().SetAuth(assumeRoleCredential))

您可以向驱动程序提供您自己的 Amazon Web Services 凭证提供商,这使您能够使用 AWS SDK for Go v2 的完整凭证链。如果您使用驱动程序内置凭证链不支持的 Amazon Web Services 机制(例如 Amazon EKS Pod Identity)进行身份验证,请使用此方法。

在开始之前,请确保您具备以下内容:

  • Go 1.26 及以上

  • Go 驱动程序 v2.9 或更高版本

注意

实验功能

ext/awsauth 模块是预发布版本。其 API 不稳定,并可能以向后不兼容的方式变更。

要提供来自 Amazon Web Services SDK 的凭证提供商,请安装 ext/awsauth 模块和适用于 Go v2 的 Amazon Web Services SDK:

go get go.mongodb.org/mongo-driver/ext/awsauth github.com/aws/aws-sdk-go-v2/config

以下示例传递一个提供商链,从 AWS SDK 到 AWS 身份验证机制:

awsConfig, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
panic(err)
}
awsSdkCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AWSCredentialsProvider: awsauth.NewCredentialsProvider(awsConfig.Credentials),
}
awsSdkClient, err := mongo.Connect(options.Client().SetAuth(awsSdkCredential))
if err != nil {
panic(err)
}
_ = awsSdkClient

要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: