AWS身份和访问管理
概述
关于MONGODB-AWS
身份验证机制使用 Amazon Web Services 身份和访问管理 (AWS IAM) 凭证来验证用户对 MongoDB 的身份。您只能在验证 MongoDB Atlas 时使用此机制。
代码占位符
本页上的代码示例使用以下占位符
<hostname>
:您的 MongoDB Atlas 部署的网络地址<awsKeyId>
:您的 AWS 访问密钥 ID<awsSecretKey>
:您的 AWS 密钥访问密钥<awsSessionToken>
:您的 AWS 会话令牌
要使用本页上的代码示例,请将这些占位符替换为您自己的值。
在您的应用程序中使用AWS IAM身份验证
要使用AWS IAM身份验证,请执行以下步骤
将MongoDB.Driver.Authentication.AWS NuGet包添加到您的项目中。您可以通过使用您的IDE或通过在终端运行以下命令来添加此包
dotnet add package MongoDB.Driver.Authentication.AWS 将以下代码行添加到您的应用程序的启动代码中,以注册AWS身份验证提供程序
MongoClientSettings.Extensions.AddAWSAuthentication();
注册AWS身份验证提供程序后,您可以显式指定您的AWS IAM凭据,或者指示驱动程序从外部源自动检索它们。以下部分描述了这两种方法。
手动指定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>");
自动检索AWS IAM凭据
您不必在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#驱动程序按照以下顺序检查凭据。
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凭证文件中的配置文件进行认证,您可以使用文本编辑器、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容器凭证
要使用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 容器凭证
要使用 EC2 容器凭证进行认证,请确保之前没有设置任何环境变量。驱动程序将从默认 IPv4 EC2 实例元数据端点获取凭证。
API 文档
要了解更多关于本页上讨论的任何方法或类型的信息,请参阅以下 API 文档