Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

AWS IAM

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访问密钥ID

  • secret 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异步运行时。

驱动程序仅从找到档案的第一个来源获取档案。 驱动程序会按以下顺序从以下来源检查您的档案:

  1. Credential struct 或 connection string 。

  2. 环境变量。

  3. Web 身份令牌文件。

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

  5. AWS EC2 终结点。有关更多信息,请参阅 AWS 文档中的任务的 IAM 角色

例如,如果您在Amazon Web Services 连接 中指定string 档案,则驱动程序将使用这些档案并忽略您在环境变量中指定的任何档案。

从下面的 Credential StructEnvironment VariablesWeb Identity Token File标签页中选择代码示例,演示如何以相应的方式设置 Amazon Web Services IAM 档案。

要指定 MONGODB-AWS身份验证机制,请将 Credential 结构的 mechanism字段设立为 AuthMechanism::MongoDbAws

如果使用临时凭证,请创建一个包含Amazon Web Services会话令牌值的文档,然后设立Credential 结构的 mechanism_properties字段设置为此文档。 如果您使用的不是临时凭证,请省略以下示例中的第9行:

1let uri = "<connection string>";
2let mut client_options = ClientOptions::parse(uri).await?;
3
4let 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
12client_options.credential = Some(aws_cred);
13let 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 文档:

后退

x.509

在此页面上