使用 IAM 身份进行身份验证 - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 IAM 身份进行身份验证

Amazon DocumentDB 用户和应用程序可以使用 IAM 用户和角色在亚马逊 DocumentDB 集群中进行身份验证。Amazon DocumentDB IAM 身份验证是一种无密码的身份验证方法,其中用户密码不存储在亚马逊 DocumentDB 集群中。此外,客户端应用程序不会将密码密钥发送到 Amazon DocumentDB 集群。相反, Amazon STS 使用临时安全令牌对客户端连接进行身份验证。现在,非管理员用户和应用程序在连接到不同的 Amazon DocumentDB 集群和其他服务时可以使用相同的 IAM 身份 ARN。 Amazon

您也可以选择使用基于密码的身份验证和 IAM 身份验证来对 Amazon DocumentDB 集群的用户和应用程序进行身份验证。IAM 身份验证仅在 Amazon DocumentDB 基于实例的集群版本 5.0 中可用。Amazon DocumentDB 主用户不支持使用 IAM 身份 ARN 进行 IAM 身份验证。

注意

只能使用现有的基于密码的身份验证对主用户进行身份验证。

开始使用 IAM 用户和角色进行身份验证

具有 IAM 身份的 Amazon DocumentDB 用户和角色是在数据库中创建$external和管理的。

创建用户

以主用户身份连接,然后创建 IAM 用户和角色:

use $external; db.createUser( { user: "arn:aws:iam::123456789123:user/iamuser", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

或者,使用 IAM 角色添加亚马逊文档数据库用户:

use $external; db.createUser( { user: "arn:aws:iam::123456789123:roles/iamrole", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

修改用户

修改现有 IAM 用户:

use $external; db.updateUser( { "arn:aws:iam::123456789123:user/iamuser", { roles: [ { role: "read", db: "readDB" } ] } } );

要向用户授予或撤消角色,请执行以下操作:

use $external; db.grantRolesToUser("arn:aws:iam::123456789123:user/iamuser", [{db: "admin", role: "readWriteAnyDatabase"}])
use $external; db.revokeRolesFromUser("arn:aws:iam::123456789123:user/iamuser", [{db: "admin", role: "readWriteAnyDatabase"}])

删除用户

要删除现有 IAM 用户,请执行以下操作:

use $external db.dropUser( { user: "arn:aws:iam::123456789123:user/iamuser" } );

配置连接 URI 以使用 Amazon IAM 进行身份验证

要使用进行身份验证MONGODB-AWS,请使用 authSource as $externalauthMechanism as MONGODB-AWS。用户名和密码字段分别替换为 IAM 用户的访问密钥和密钥。如果您扮演的是 IAM 角色,请为假设的会话指定安全令牌。如果您使用的是支持MONGODB-AWS身份验证机制的 MongoDB 驱动程序,则这些驱动程序还可以从计算实例(例如 Amazon EC2、Lambda 函数等)检索 IAM 角色证书。以下示例使用 mongo shell 进行身份验证,方法MONGODB-AWS是手动传递(IAM 用户的)访问密钥和密钥,以演示针对 Amazon DocumentDB 的身份验证。

$ mongo 'mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'

使用 IAM 配置 Amazon 计算类型以向亚马逊文档数据库进行身份验证 Amazon

使用亚马逊 EC2

Amazon EC2 使用以下环境变量:

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

使用 Amazon Lambda

Amazon Lambda 使用以下环境变量:

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

有关环境变量的更多信息,请参阅Amazon Lambda 开发人员指南中的使用 Lambda 环境变量

使用亚马逊 EKS

亚马逊 Elastic Kubernetes Service(亚马逊 EKS)使用以下环境变量:

AWS_WEB_IDENTITY_TOKEN_FILE - path of web identity token file AWS_ROLE_ARN - Name of IAM role to connect with

有关亚马逊 EKS 的更多信息,请参阅《亚马逊 EKS 用户指南》中的 “什么是亚马逊 EKS”。

监控 IAM 身份验证请求

使用亚马逊 DocumentDB 审计

前往 Amazon 中的审核日志文件夹 CloudWatch,使用不同的搜索模式获取 IAM 身份验证的日志。例如,用{ $.param.mechanism = "MONGODB-AWS" }作 “搜索所有日志流” 的搜索模式。

有关审计中支持的事件的更多信息,请参阅审核 Amazon DocumentDB 活动

使用亚马逊 CloudWatch 指标

StsGetCallerIdentityCalls:该指标显示了 Amazon DocumentDB 实例对区域化 Amazon Security Token Service ()Amazon STS终端节点的GetCallerIdentity调用次数。请参阅MONGODB-AWS身份验证规范,了解为什么数据库实例需要进行 STS GetCallerIdentity 调用。

使用 IAM 身份验证

如果您不想在自己的数据库中管理用户名和密码,则可以使用 IAM 身份验证。IAM 身份验证仅在 Amazon DocumentDB 基于实例的集群版本 5.0 中可用。

IAM 身份验证依赖于 STS 服务。我们建议您评估在使用 IAM 身份验证连接并出现 STS 限制异常时是否可以降低连接速率。

有关 IAM 配额的信息,请参阅 IAM 和 Amazon STS 配额

支持的 IAM 驱动程序

支持 Amazon DocumentDB 5.0 和MONGODB-AWS身份验证机制的驱动程序应与亚马逊 DocumentDB 中的 IAM 身份验证实现配合使用。NodeJS 驱动程序存在已知限制,Amazon DocumentDB 目前不支持这些驱动程序进行 IAM 身份验证。限制解决后,将更新 NodeJS 驱动程序支持。