重要
MONGODB-AWS身份验证机制仅在MongoDB 4.4 及更高版本中可用。
Overview
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-AWS
身份验证的 MongoDB 实例,请指定 MONGODB-AWS
身份验证机制。
驾驶员会按所列顺序在以下来源中检查您的凭证:
连接字符串。
环境变量。
Web 身份令牌文件。
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
环境变量中指定的Amazon Web Services ECS 端点。Amazon Web Services EC2 端点。 要学习;了解更多信息,请参阅Amazon Web Services文档中的任务的 IAM 角色。
重要
驾驶员仅从找到档案的第一个来源获取凭证。示例,如果在连接字符串中指定Amazon Web Services凭证,驾驶员将忽略您在环境变量中指定的任何凭证。
提示
以下示例使用 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))
要使用存储在环境变量中的 AWS 凭证对 MongoDB 实例进行身份验证,请使用 shell 按如下方式设置变量:
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
注意
如果您不需要用于进行身份验证的角色的 AWS 会话令牌,请省略包含 AWS_SESSION_TOKEN
的行。
设置上述环境变量后,指定 MONGODB-AWS
身份验证机制,如以下示例所示:
envVariablesCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", } envVariablesClient, err := mongo.Connect(options.Client().SetAuth(envVariablesCredential)) if err != nil { panic(err) } _ = envVariablesClient
您可以使用从 Web 身份提供程序获得的 OpenID Connect (OIDC) 令牌对 Amazon Elastic Kubernetes Service (EKS) 或其他服务进行身份验证。如要使用 OIDC 令牌,请创建或找到包含您令牌的文件。然后,设置以下环境变量:
AWS_WEB_IDENTITY_TOKEN_FILE
:设置为包含 OIDC 令牌的文件的绝对路径。AWS_ROLE_ARN
:设置为用于连接集群的IAM角色。示例:arn:aws:iam::111122223333:role/my-role
。
以下Shell命令设置这些环境变量:
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file that contains OIDC token> export AWS_ROLE_ARN=<IAM role name>
设置上述环境变量后,指定 MONGODB-AWS
身份验证机制,如以下示例所示:
envVariablesCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", } envVariablesClient, err := mongo.Connect(options.Client().SetAuth(envVariablesCredential)) if err != nil { panic(err) } _ = envVariablesClient
API 文档
要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: