Docs 菜单
Docs 主页
/ / /
C#/.NET
/ /

AWS Identity and Access Management

在此页面上

  • Overview
  • 代码占位符
  • 在应用程序中使用 AWS IAM 身份验证
  • 手动指定 AWS IAM 档案
  • 自动检索 AWS IAM 档案
  • Web 身份提供程序
  • 共享的 AWS 凭证文件
  • 环境变量
  • ECS 容器档案
  • EC2 容器档案
  • API 文档

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

提示

为 AWS IAM 身份验证配置Atlas

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

本页上的代码示例使用以下占位符:

  • <hostname>: MongoDB Atlas部署的网络解决

  • <awsKeyId>:您的Amazon Web Services访问密钥ID

  • <awsSecretKey>:您的Amazon Web Services秘密访问权限密钥

  • <awsSessionToken>:您的 AWS 会话令牌

要使用本页上的代码示例,请将这些占位符替换为您自己的值。

要使用 AWS IAM身份验证,请执行以下步骤:

  1. 添加MongoDB. 驱动程序.Authentication.AWS NuGet包添加到您的项目中。您可以使用 IDE 或在终端中运行以下命令来添加此包:

    dotnet add package MongoDB.Driver.Authentication.AWS
  2. 将以下代码行添加到应用程序的引导代码中,以注册Amazon WebAmazon Web Services Services身份验证提供者:

    MongoClientSettings.Extensions.AddAWSAuthentication();

注册 AWS凭证身份验证提供者后,您可以显式指定您的 AWS IAM 档案,也可以指示驾驶员从外部源自动检索这些档案。以下部分介绍了这两种方法。

您可以使用 MongoCredential对象或作为连接字符串的一部分在 MongoClientSettings对象中提供您的 AWS 凭证档案。选择 Connection StringMongoCredential标签页,查看指定档案的相应凭证:

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" +
"authSource=$external" +
"&authMechanism=MONGODB-AWS";
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

如果您使用的是 AWS 会话令牌,则请在连接字符串中包含 authMechanismProperties 参数,如下所示:

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" +
"authSource=$external" +
"&authMechanism=MONGODB-AWS" +
"&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings
.FromConnectionString("mongodb+srv://<hostname>");
mongoClientSettings.Credential = new MongoCredential(
"MONGODB-AWS",
new MongoExternalIdentity("<awsKeyId>"),
new PasswordEvidence("<awsSecretKey>"));
var client = new MongoClient(mongoClientSettings);

如果您使用的是Amazon Web Services会话令牌,请对 MongoCredential 对象调用 WithMechanismProperty() 方法,如下所示:

mongoClientSettings.Credential = new MongoCredential(
"MONGODB-AWS",
new MongoExternalIdentity("<awsKeyId>"),
new PasswordEvidence("<awsSecretKey>"))
.WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");

您可以指示 .NET/C# 驱动程序使用 AWS 开发工具包从外部源自动检索您的档案,而无需在 MongoClientSettings 中指定您的 AWS IAM 档案。

要指示驾驶员检索您的凭证,您必须首先指定 MONGODB-AWS 作为身份验证机制,并指定身份验证源为MongoDB外部。您可以使用 MongoCredential对象或作为连接字符串的一部分来指定身份验证机制和来源。选择 Connection StringMongoCredential标签页,查看用于指定 MONGODB-AWS身份验证机制和外部身份验证源的相应语法:

var connectionString = "mongodb+srv://<hostname>?" +
"authMechanism=MONGODB-AWS" +
"&authSource=$external";
var mongoClientSettings = MongoClientSettings
.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings
.FromConnectionString("mongodb+srv://<hostname>");
mongoClientSettings.Credential = new MongoCredential(
"MONGODB-AWS",
new MongoExternalAwsIdentity(),
new ExternalEvidence());
var client = new MongoClient(mongoClientSettings);

指定凭证身份验证机制和来源后,必须在与档案类型相应的位置设立档案。 .NET/ C#驱动程序按此处列出的顺序检查以下凭证的档案。

您可以使用与 OpenID Connect (OIDC) 兼容的 Web 身份提供者 对 Amazon Elastic Kubernetes Service (EKS) 或其他服务进行身份验证。要使用 Web 身份提供者,请创建一个包含 OIDC 令牌的文件,然后使用 bash 或类似的 shell 在环境变量中设置该文件的绝对路径,如以下示例所示:

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

要使用共享 AWS 档案文件中的配置文件进行身份验证,可以使用文本编辑器、适用于 .NET 的 AWS SDK 或 AWS CLI 创建适当的档案文件。

若要直接从环境变量中检索档案,请使用 bash 或类似的 Shell 设置以下环境变量:

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

注意

如果您不需要该角色的 AWS 会话令牌,请省略包含AWS_SESSION_TOKEN的行。

要使用 ECS container 档案进行身份验证,请使用 bash 或类似的 shell 在环境变量中设置 ECS 终端节点的 URI。 选择 Full ECS URIRelative ECS URI 标签页,查看指定相应环境变量的语法:

export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>

要使用 EC 2容器档案进行凭证,请确保未设立上述任何环境变量。驾驶员从默认凭证 4 EC 2实例元数据端点获取档案。

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

后退

x.509