Atlas Data Federation 支持多种身份验证方法,以便您可以连接到您的联合数据库实例。您可以使用 AWS IAM 凭证从 AWS 环境实现无密码访问,或使用 X.509 证书进行相互 TLS 身份验证。选择您的身份验证方法以查看配置步骤。
Amazon Web Services IAM 身份验证(联合数据库实例)
Overview
您可以使用 AWS IAM 用户或角色对数据库用户进行身份验证,以便其能够访问 Atlas 集群,无需管理密码。使用 AWS IAM 可以减少身份验证机制的数量和需要管理的密钥数量。Atlas 不会通过网络接收您的身份验证密钥,并且驱动程序也不会保存此密钥。
为您的使用案例选择适当的身份验证方法:
IAM 角色:AWS 服务(EC2、 Lambda、ECS)或联合用户担任的角色。对于在 AWS 计算资源上运行的工作负载,我们建议您使用 IAM 角色进行应用程序和工作负载访问权限。
IAM 用户:需要直接访问权限数据库的个人 AWS 用户。此选项可能适合使用特定用户凭证运行的应用程序。对于开发者和管理员等人类用户,我们建议您将 Workforce Identity Federation 与 OIDC 结合使用,以获得与身份提供程序直接 SSO 的体验。
重要
在客户端使用 AWS IAM数据库身份验证进行连接之前,您必须创建为 IAM身份验证配置的数据库用户。要学习了解如何创建使用 IAM Users 或 IAM Roles 进行身份验证的数据库用户,请参阅管理数据库用户。
注意
Atlas 使用 AWS STS 来验证 IAM 用户和角色的身份。AWS 实施了一项 默认请求配额,即每个账户每个区域每秒 600 个请求。此配额适用于 AWS 账户的 IAM 用户或角色。
使用Amazon Web Services IAM 角色设置身份验证
您可以设立Amazon Web Services IAM 角色,对Amazon Web Services Atlas集群的 计算类型进行身份验证。
注意
启用 LDAP 授权后,您无法为 Amazon Web Services IAM 主体设立身份验证。
如果您需要对Amazon Web Services IAM 主体进行身份验证,请考虑将要访问权限Amazon Web Services IAM身份验证访问的集群移动到另一个禁用LDAP授权的项目中。
对于 AWS Lambda 和 HTTP(ECS 和 EC2),驱动程序自动从环境变量读取。对于 AWS EKS,您必须手动分配 IAM 角色。
本页介绍了 AWS Lambda、AWS ECS 和 AWS EKS 如何使用 AWS IAM 角色进行连接。
注意
必须在 AWS 控制台中将 IAM 角色分配给 Lambda、EC2 、ECS 或 EKS。
如果为 Lambda 函数 分配执行角色 , AWS Lambda 会通过以下环境变量向函数传递信息。
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN
注意
在函数中使用执行角色时,无需手动创建这些环境变量。
要学习;了解有关这些环境变量的更多信息,请参阅使用Amazon Web Services Lambda环境变量。
AWS ECS 从以下 URI 获取凭证:
http://169.254.170.2${AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 是一个环境变量。要学习;了解更多信息,请参阅Amazon Web Services文档中的任务的 IAM 角色。
AWS EC2 实例在附加 IAM 角色时,会自动从 实例 元数据 Service V2 获取凭证。凭证从以下 URL 检索:
http://169.254.169.254/latest/meta-data/iam/security-credentials/
重要
您必须将 IAM角色附加到您的 EC2实例,身份验证才能正常运行。IAM角色必须具有访问权限Atlas集群的必要权限。
要学习;了解如何将 IAM角色附加到 EC2实例,请参阅 启动具有 IAM角色的实例 AWS 文档中的。
要学习;了解如何配置Amazon Web Services IAM角色以使用Amazon Web Services ECS Fargate 进行身份验证,请参阅Amazon Web Services文档中的Amazon ECS任务执行 IAM角色。
对于 AWS EKS,您必须首先为 pod 分配 IAM 角色,才能在该 pod 中设置以下环境变量:
AWS_WEB_IDENTITY_TOKEN_FILE- 包含网络身份令牌文件的 路径。AWS_ROLE_ARN— 包含用于连接集群的IAM角色。
要学习;了解有关Amazon Web Services EKS 的更多信息,请参阅什么是Amazon EKS?在Amazon Web Services文档中。
向Amazon Web Services IAM 角色授予数据库访问权限
要向 AWS IAM 角色授予数据库访问权限,请完成 AWS IAM 的“配置数据库用户” 部分中描述的步骤。有关使用 Atlas CLI、Atlas 管理 API 或 Atlas 用户界面授予数据库访问权限的更多信息,请参阅 配置数据库用户。
使用Atlas Amazon Web ServicesIAM 连接到 集群
要使用 连接到具有 AWS IAM 凭证的mongosh Atlas,请提供 指定 MONGODB-AWS 身份验证机制的连接字符串 。此连接字符串格式适用于所有 AWS IAM 身份验证机制。
重要
必须使用使用Amazon Web Services IAM 角色设置身份验证中描述的方法之一配置身份验证,然后才能使用此连接字符串格式。
使用 AWS IAM 身份验证与 mongosh 连接 Atlas 需要 shell 版本 v0.9.0 或更高版本。
请考虑以下内容:
使用 AWS IAM 凭证,将访问密钥 ID 作为用户名,将密钥作为密码。
authSource查询参数是$external,URL编码为%24external。authMechanism查询参数是MONGODB-AWS。例子
mongosh "mongodb+srv://<atlas-host-name>/test?authSource=%24external&authMechanism=MONGODB-AWS" --username <access-key-id> --password <secret-key>
X509 身份验证(联合数据库实例)
X.509 证书允许数据库用户访问权限其项目中的集群。请注意,数据库用户与Atlas用户不同。数据库用户可以访问权限MongoDB数据库,而Atlas用户可以访问权限Atlas应用程序本身。
X.509 证书可以是以下类型之一:
自管理证书。对于自管理证书,您必须提供证书颁发机构 (CA) 并为数据库用户生成自己的证书。有关在项目中设置自我管理证书的更多详细信息,请参阅配置项目以使用公钥基础设施。
Atlas 托管证书。通过 Atlas 托管的证书, Atlas还可以管理您的 CA 并为您的数据库用户生成证书。您无需使用 Atlas 托管证书处理任何其他 CA 配置。
先决条件
要自行管理 X.509 证书,您必须有公钥基础设施 (PKI) 来与Atlas集成。
配置项目以使用公钥基础设施
如果您选择使用自我管理的 X.509 证书,则必须将项目配置为使用您提供的 PKI。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
提供 PEM 编码的证书颁发机构。
对于使用 Atlas CLI 指定的项目,如要保存某一项客户管理的 X.509 配置,请运行以下命令:
atlas security customerCerts create [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas security customerCerts create(创建 atlas 安全客户证书)。
您可以通过 Atlas UI 提供证书颁发机构 (CA),方法如下:
单击 Upload,从文件系统中选择
.pem文件,然后单击 Save。将
.pem文件的内容复制到提供的文本区域,然后单击 Save。
您可以在同一.pem文件或文本区域中连接多个 CA。 用户可以使用任何提供的 CA 生成的证书进行身份验证。
上传 CA 时,系统会自动创建项目级警报,以便在 CA 过期前 30 天发送通知,每 24 小时重复一次。 您可以从 Atlas 的Alert Settings页面查看和编辑此警报。 有关配置警报的更多信息,请参阅配置警报设置。
要在上传后编辑 CA,请单击Self-Managed X.509 Authentication Settings图标。
使用自管理 X.509 身份验证添加数据库用户
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。
输入用户信息。
字段 | 说明 | |
|---|---|---|
Common Name | 受 TLS/SSL 证书保护的用户公用名 (CN)。有关更多信息,请参阅 RFC 2253。 示例,如果您的常用名是“Jane Doe”,您的组织是“MongoDB”,您的国家/地区是“US”,则在Common Name字段中插入以下内容: | |
User Privileges | 可以通过以下方式之一分配角色:
有关Atlas内置权限的更多信息,请参阅内置角色。 |