AWS Identity and Access Management
在此页面上
Overview
MONGODB-AWS
身份验证机制使用Amazon Web Services Identity and Access Management (AWS IAM) 档案对MongoDB进行用户凭证验证。只有在向MongoDB Atlas进行身份验证时才能使用此机制。
代码占位符
本页上的代码示例使用以下占位符:
<hostname>
: MongoDB Atlas部署的网络解决<awsKeyId>
:您的Amazon Web Services访问密钥ID<awsSecretKey>
:您的Amazon Web Services秘密访问权限密钥<awsSessionToken>
:您的 AWS 会话令牌
要使用本页上的代码示例,请将这些占位符替换为您自己的值。
在应用程序中使用 AWS IAM 身份验证
要使用 AWS IAM身份验证,请执行以下步骤:
添加MongoDB. 驱动程序.Authentication.AWS NuGet包添加到您的项目中。您可以使用 IDE 或在终端中运行以下命令来添加此包:
dotnet add package MongoDB.Driver.Authentication.AWS 将以下代码行添加到应用程序的引导代码中,以注册Amazon WebAmazon Web Services Services身份验证提供者:
MongoClientSettings.Extensions.AddAWSAuthentication();
注册 AWS凭证身份验证提供者后,您可以显式指定您的 AWS IAM 档案,也可以指示驾驶员从外部源自动检索这些档案。以下部分介绍了这两种方法。
手动指定 AWS IAM 档案
您可以使用 MongoCredential
对象或作为连接字符串的一部分在 MongoClientSettings
对象中提供您的 AWS 凭证档案。选择 Connection String 或 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);
如果您使用的是Amazon Web Services会话令牌,请对 MongoCredential
对象调用 WithMechanismProperty()
方法,如下所示:
mongoClientSettings.Credential = new MongoCredential( "MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")) .WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
自动检索 AWS IAM 档案
您可以指示 .NET/C# 驱动程序使用 AWS 开发工具包从外部源自动检索您的档案,而无需在 MongoClientSettings
中指定您的 AWS IAM 档案。
要指示驾驶员检索您的凭证,您必须首先指定 MONGODB-AWS
作为身份验证机制,并指定身份验证源为MongoDB外部。您可以使用 MongoCredential
对象或作为连接字符串的一部分来指定身份验证机制和来源。选择 Connection String 或 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#驱动程序按此处列出的顺序检查以下凭证的档案。
Web 身份提供程序
您可以使用与 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 档案文件中的配置文件进行身份验证,可以使用文本编辑器、适用于 .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 容器档案
要使用 ECS container 档案进行身份验证,请使用 bash
或类似的 shell 在环境变量中设置 ECS 终端节点的 URI。 选择 Full ECS URI 或 Relative ECS URI 标签页,查看指定相应环境变量的语法:
export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>
EC2 容器档案
要使用 EC 2容器档案进行凭证,请确保未设立上述任何环境变量。驾驶员从默认凭证 4 EC 2实例元数据端点获取档案。
API 文档
要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: