Overview
MONGODB-AWS身份验证机制使用Amazon Web Services Identity and Access Management (AWS IAM)凭证对用户进行身份验证。
您可以使用 AWS IAM 对MongoDB Atlas进行身份验证,但不能对MongoDB Enterprise Advanced或MongoDB Community Edition进行身份验证。
代码占位符
本页上的代码示例使用以下占位符:
access key ID:您的Amazon Web Services访问密钥IDsecret access key:您的Amazon Web Services秘密访问权限密钥session token:您的Amazon Web Services会话令牌db:与用户关联的身份验证数据库
设置
要使用该身份验证机制,您必须将 aws-auth 功能标志添加到项目的 Cargo.toml 文件中的 mongodb 依赖项。下面的示例展示了您的 mongodb 依赖项功能列表必须包含哪些内容才能启用 MONGODB-AWS 身份验证机制:
[dependencies.mongodb] version = "3.5.2" features = [ "aws-auth", ... ]
重要
要在 Rust 驱动程序中使用MONGODB-AWS身份验证机制,您的应用程序必须满足以下要求:
您已连接到 MongoDB Server 4.4或更高版本。
您正在使用
tokio异步运行时。
凭证来源
驱动程序仅从找到档案的第一个来源获取档案。 驱动程序会按以下顺序从以下来源检查您的档案:
Credentialstruct 或 connection string 。环境变量。
Web 身份令牌文件。
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI环境变量中指定的Amazon Web Services ECS 端点。AWS EC2 终结点。有关更多信息,请参阅 AWS 文档中的任务的 IAM 角色。
例如,如果您在Amazon Web Services 连接 中指定string 档案,则驱动程序将使用这些档案并忽略您在环境变量中指定的任何档案。
从下面的 Credential Struct 、 Environment Variables和Web Identity Token File标签页中选择代码示例,演示如何以相应的方式设置 Amazon Web Services IAM 档案。
要指定 MONGODB-AWS身份验证机制,请将 Credential 结构的 mechanism字段设立为 AuthMechanism::MongoDbAws。
如果使用临时凭证,请创建一个包含Amazon Web Services会话令牌值的文档,然后设立Credential 结构的 mechanism_properties字段设置为此文档。 如果您使用的不是临时凭证,请省略以下示例中的第9行:
1 let uri = "<connection string>"; 2 let mut client_options = ClientOptions::parse(uri).await?; 3 4 let aws_cred = Credential::builder() 5 .username("<access key ID>".to_string()) 6 .password("<secret access key>".to_string()) 7 .source("<db>".to_string()) 8 .mechanism(AuthMechanism::MongoDbAws) 9 .mechanism_properties(doc!("AWS_SESSION_TOKEN": "<session token>")) 10 .build(); 11 12 client_options.credential = Some(aws_cred); 13 let client = Client::with_options(client_options)?;
提示
您可以从安全令牌服务 (STS) 担任角色请求中获取临时Amazon Web Services IAM凭证。 有关此进程的了解详情,请参阅 AssumeRole Amazon Web Services文档。
要将Amazon Web Services凭证存储在环境变量中,请在shell中运行以下命令:
export AWS_ACCESS_KEY_ID=<access key ID> export AWS_SECRET_ACCESS_KEY=<secret access key> export AWS_SESSION_TOKEN=<session token>
如果您使用的不是Amazon Web Services会话令牌,请省略设置 AWS_SESSION_TOKEN 环境变量的行。
将 Credential 结构中的 mechanism 选项设置为 AuthMechanism::MongoDbAws。驱动程序从环境变量中读取 AWS IAM凭证。以下代码展示了如何定义指定了 AWS 身份验证的 Credential 结构体并连接到 MongoDB:
let uri = "<connection string>"; let mut client_options = ClientOptions::parse(uri).await?; let aws_cred = Credential::builder().mechanism(AuthMechanism::MongoDbAws).build(); client_options.credential = Some(aws_cred); let client = Client::with_options(client_options)?;
您可以使用从 Web 身份提供商获取的 OpenID Connect (OIDC) 令牌对Amazon Elastic Kubernetes Service (EKS) 或其他服务进行身份验证。 要使用 OIDC 令牌,请创建一个包含令牌的文件,然后定义一个环境变量,其值为令牌文件的绝对路径,如以下shell命令所示:
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to OIDC token file>
将 Credential 结构中的 mechanism 选项设置为 AuthMechanism::MongoDbAws。驱动程序从令牌文件中读取您的 AWS IAM凭证。以下代码展示了如何定义指定了 AWS 身份验证的 Credential 结构体并连接到 MongoDB:
let uri = "<connection string>"; let mut client_options = ClientOptions::parse(uri).await?; let aws_cred = Credential::builder().mechanism(AuthMechanism::MongoDbAws).build(); client_options.credential = Some(aws_cred); let client = Client::with_options(client_options)?;
更多信息
要学习;了解有关向MongoDB进行身份验证的更多信息,请参阅MongoDB Server手册中的身份验证。
要学习;了解有关管理MongoDB 部署用户的更多信息,请参阅MongoDB Server手册中的用户。
API 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: