文档菜单
文档首页
/ / /
C#/.NET
/ /

AWS身份和访问管理

本页内容

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

关于MONGODB-AWS 身份验证机制使用 Amazon Web Services 身份和访问管理 (AWS IAM) 凭证来验证用户对 MongoDB 的身份。您只能在验证 MongoDB Atlas 时使用此机制。

提示

配置 Atlas 以使用 AWS IAM 验证

有关配置 MongoDB Atlas 以使用 AWS IAM 验证的信息,请参阅使用 AWS IAM 设置身份验证,这是 Atlas 文档中的内容。

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

  • <hostname>:您的 MongoDB Atlas 部署的网络地址

  • <awsKeyId>:您的 AWS 访问密钥 ID

  • <awsSecretKey>:您的 AWS 密钥访问密钥

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

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

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

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

    dotnet add package MongoDB.Driver.Authentication.AWS
  2. 将以下代码行添加到您的应用程序的启动代码中,以注册AWS身份验证提供程序

    MongoClientSettings.Extensions.AddAWSAuthentication();

注册AWS身份验证提供程序后,您可以显式指定您的AWS IAM凭据,或者指示驱动程序从外部源自动检索它们。以下部分描述了这两种方法。

您可以在MongoClientSettings对象中提供您的AWS IAM凭据,无论是通过MongoCredential对象还是作为连接字符串的一部分。选择连接字符串MongoCredential选项卡,查看指定凭据的相应语法

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);

如果您使用AWS会话令牌,请按照以下示例在您的MongoCredential对象上调用WithMechanismProperty()方法

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

您不必在MongoClientSettings中指定您的AWS IAM凭据,而是可以指示.NET/C#驱动程序使用AWS SDK自动从外部源检索您的凭据。

要指示驱动程序检索凭据,您必须首先指定MONGODB-AWS作为身份验证机制,并指定身份验证来源不是MongoDB。您可以通过使用MongoCredential对象或作为连接字符串的一部分来指定身份验证机制和来源。选择连接字符串MongoCredential选项卡,查看指定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凭证文件中的配置文件进行认证,您可以使用文本编辑器、AWS SDK for .NET或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容器凭证进行认证,请使用bash或类似的shell设置ECS端点的URI到环境变量中。选择完整ECS URI相对ECS URI选项卡以查看指定相应环境变量的语法。

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

要使用 EC2 容器凭证进行认证,请确保之前没有设置任何环境变量。驱动程序将从默认 IPv4 EC2 实例元数据端点获取凭证。

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

返回

X.509