Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Kotlin Sync 驱动程序
/ /

AWS IAM 身份验证

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

提示

为Amazon Web Services IAM 身份验证配置Atlas

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

要指示Kotlin Sync驾驶员使用 MONGODB-AWS身份验证机制,您可以在连接字符串中将 MONGODB-AWS 指定为参数,也可以调用 MongoCredential.createAwsCredential() 工厂方法。

在以下部分中,您可以学习;了解指定 MONGODB-AWS身份验证机制和提供Amazon Web Services IAM凭证的不同方法。

这些部分包含使用以下占位符的代码示例:

  • awsKeyId: Amazon Web Services访问权限密钥ID的值

  • awsSecretKey: Amazon Web Services秘密访问权限密钥的值

  • atlasUri: MongoDB Atlas部署的网络解决

  • hostname: MongoDB Atlas部署的主机名

  • port: MongoDB Atlas部署的端口

  • awsSessionToken: Amazon Web Services会话令牌的值

注意

终止对适用于Java v1 的Amazon Web Services SDK 的支持

AWS SDK for Java v1 将于 12 月31 2025终止支持。 AWS 建议迁移到 AWS SDK for Java v2 。有关更多信息,请参阅 AWS站点上的支持结束公告。

Amazon Web Services提供适用于Java v1 和 v2 的软件开发工具包 (SDK)。 Amazon Web Services SDK 提供以下功能:

要使用Amazon Web Services SDK 进行MONGODB-AWS身份验证,请执行以下步骤:

  1. 指定身份验证机制。

  2. 将 SDK 作为依赖项添加到项目中。

  3. 使用凭证提供商程序链中的方法之一提供凭证。

您可以使用连接字符串或 MongoCredential对象指定 MONGODB-AWS身份验证机制。 选择下面的 Connection StringMongoCredential标签页,获取相应的说明和示例代码:

要在连接字符串中指定 MONGODB-AWS身份验证机制,请将 authMechanism 参数设立为 MONGODB-AWS,如以下示例所示:

val mongoClient =
MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")

要使用 MongoCredential对象指定 MONGODB-AWS身份验证机制,请调用 MongoCredential.createAwsCredential() 工厂方法并将 MongoCredential实例添加到 MongoClient,如以下示例所示:

val credential = MongoCredential.createAwsCredential(null, null)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

如需将 AWS SDK 作为依赖添加到项目中,请参阅以下 AWS 文档了解所需的版本:

  • 对于 AWS SDK for Java v2,请参阅设置指南。

  • 对于 AWS SDK for Java v1,请参阅入门指南。

注意

对于Amazon Web Services SDK for Java v2, Java驾驶员使用 software.amazon.awssdk:auth:2.30.31 依赖项进行测试。

对于Amazon Web Services SDK for Java v1, Java驾驶员使用 com.amazonaws:aws-java-sdk-core:1.12.782 依赖项进行测试。

要提供档案,请参阅以下 AWS 文档,了解您需要的版本:

注意

如果在您的项目中同时包含适用于 Java 的 AWS SDK v1 和 v2,则必须使用 v2 方法提供凭证。

您可以通过指示驱动程序使用 MONGODB-AWS 身份验证机制并设置适当的环境变量来提供 AWS IAM 档案。

要使用环境变量提供凭证,请执行以下步骤:

  1. 指定身份验证机制。

  2. 添加相应的环境变量。

您可以使用 MongoCredential对象或在连接字符串中指定 MONGODB-AWS身份验证机制。

要使用 MongoCredential对象指定身份验证机制,请调用 MongoCredential.createAwsCredential() 工厂方法并将 MongoCredential实例添加到 MongoClient,如以下示例所示:

val credential = MongoCredential.createAwsCredential(null, null)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

要在连接字符串中指定 MONGODB-AWS身份验证机制,请将其添加为参数,如以下示例所示:

val mongoClient =
MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")

本部分介绍如何通过为以下类型的身份验证设置环境变量来提供凭证:

  • 编程访问密钥

  • ECS 容器档案

  • EC2 容器档案

以下示例显示如何使用 bash 或类似的 shell 在环境变量中设置编程访问密钥

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

如果不需要该角色的Amazon Web Services会话令牌,请省略设置 AWS_SESSION_TOKEN 变量的行。

要使用 ECS容器凭证进行身份验证,请使用 或类似的Shell在环境变量中设立ECS 端点相对bash URI,如以下示例所示:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>

要使用EC2容器凭证进行身份验证,请勿设立Amazon Web Services环境变量。驾驶员从默认IPv4 EC2实例元数据端点获取凭证。

您可以使用MongoClient MongoCredential实例向 提供您的 AWS IAM凭证。要构造用于MongoCredential 身份验证的MONGODB-AWS 实例,请调用 createAwsCredential() 工厂方法。

提示

您只能向 MongoCredential.createAwsCredential() 方法提供编程访问权限密钥。如果您必须提供 ECS 或 EC2容器凭证,请按照在环境中指定档案中的说明进行操作。

要使用 MongoCredential对象进行 MONGODB-AWS身份验证,请执行以下步骤:

  1. 指定身份验证机制。

  2. 提供凭证。

要使用 MongoCredential对象指定身份验证机制,请调用 MongoCredential.createAwsCredential() 工厂方法并将 MongoCredential实例添加到 MongoClient,如以下示例所示:

val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

如果必须指定 AWS 会话令牌,请将其传递给 withMechanismProperty() 方法,如以下示例所示:

val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
.withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>")
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

要刷新凭证,可以声明一个返回新凭证的 Supplier Lambda表达式,如以下示例所示:

val awsFreshCredentialSupplier: Supplier<AwsCredential> = Supplier {
// Add your code here to fetch new credentials
// Return the new credentials
AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>")
}
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
.withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(ServerAddress("<hostname>", <port>)))
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

如果必须在连接字符串中提供 AWS IAM凭证,可以通过调用MongoClientSettings applyConnectionString() 方法将其添加到 对象中:

val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
val connectionString = ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>")
val settings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

要学习;了解有关向MongoDB进行身份验证的更多信息,请参阅MongoDB Server手册中的身份验证。

要学习;了解有关使用Kotlin Sync驾驶员创建 MongoClient对象的详情,请参阅 Create a MongoClient指南。

后退

x.509

在此页面上