Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

使用 AWS IAM 设置无密码身份验证

在此页面上

  • 使用 AWS IAM 进行连接
  • 使用 AWS IAM 角色设置无密码身份验证
  • AWS Lambda
  • AWS ECS
  • AWS ECS Fargate
  • AWS EKS
  • 使用 SAML 设置无密码身份验证

您可以通过以下方式为 AWS IAM 用户设置无密码身份验证:

  • 配置AWS IAM角色以使用户名或密码字段可选。在此场景中,每个用户均会提供用于身份验证的密钥。用户不会通过网络将密钥发送给 Atlas,驱动程序也不会保留密钥。要了解更多信息,请参阅使用 AWS IAM 角色设置无密码身份验证。

  • 使用通过 AssumeRoleWithSAML API 操作 获取的临时凭证 。在这种情况下,您必须与 SSO 提供商集成,并具有在其信任策略中指定 SAML IdP 提供商的 IAM 角色。要了解更多信息,请参阅 使用 SAML 设置无密码身份验证。

要使用 通过您的 AWS IAM 档案连接到mongosh Atlas,请提供 指定 MONGODB-AWS 身份验证机制的连接字符串 。此连接字符串格式适用于所有 AWS IAM 无密码身份验证机制。

重要

必须先使用下述方法之一配置无密码身份验证,然后才能使用此连接字符串格式。

注意

启用 LDAP 授权后,无法对 AWS IAM 用户使用无密码身份验证。

如果您必须对 AWS IAM 用户使用无密码身份验证, 请考虑 将要使用无密码身份验证访问的集群 移动到另一个未启用 LDAP 授权的项目。

您可以将数据库用户设置为使用AWS IAM用户 ARN 进行身份验证。您可以使用mongosh和驱动程序连接到数据库,并使用AWS IAM用户 ARN 进行身份验证。使用AWS IAM角色可减少身份验证机制的数量和需要管理的密钥数量。您可以将AWS IAM配置为不需要用户名或密码即可进行身份验证,从而使其成为无密码机制。您用于身份验证的密钥不会通过网络发送给 Atlas,也不会由驱动程序保存,因此AWS IAM甚至适用于最敏感的情况。

对于 AWS Lambda 和 HTTP(ECS 和 EC2 ),驱动程序会自动从 环境变量 中读取 。对于 AWS EKS,您必须手动分配 IAM 角色。本页介绍如何使用 AWS IAM 角色进行连接 AWS Lambda、 AWS ECS AWS EKS 。

注意

必须在 AWS 控制台中将 IAM 角色分配给 Lambda、EC2、ECS 或 EKS。

如果您 分配执行角色 ,则 AWS Lambda 会通过以下环境变量将信息传递给函数 到 lambda 函数。

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

注意

使用 执行角色 时,无需手动创建这些环境变量 在函数中。

要了解有关这些环境变量的更多信息,请参阅 使用 AWS Lambda 环境变量。

AWS ECS 从以下 URI 获取档案:

http://169.254.170.2 + AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 是一个环境变量。要了解更多信息,请参阅 适用于任务的 IAM 角色。

AWS EC2 通过以下 URL 从实例元数据服务 V2 获取档案:

http://169.254.169.254/latest/meta-data/iam/security-credentials/

要了解更多信息,请参阅 使用 IAM 角色启动实例。

要了解如何配置 AWS IAM 角色以使用 AWS ECS Fargate 进行无密码身份验证,请参阅 AWS 文档。

对于 AWS EKS,您必须首先为 pod 分配 IAM 角色,才能在该 pod 中设置以下环境变量:

  • AWS_WEB_IDENTITY_TOKEN_FILE - 包含网络身份令牌文件的 路径。

  • AWS_ROLE_ARN - 包含要用于连接到集群的IAM角色。

有关为 Pod 分配 IAM 角色的信息,请参阅 AWS 文档。

IAM角色分配给 Pod 后,您必须手动设置IAM角色才能连接到集群。

如需手动承担角色,请执行以下操作:

  1. 使用 AWS SDK 调用 AssumeRoleWithWebIdentity。

    提示

    • 忽略 ProviderID 参数。

    • 在 pod 的 AWS_WEB_IDENTITY_TOKEN_FILE 环境变量中描述的文件中查找 WebIdentityToken 参数的值。

  2. 将您在上一步中收到的档案传递给 MongoDB 驱动程序。有关详细信息,请参阅驱动程序文档

提示

另请参阅:

如果将 AWS IAM 用户与依赖于 SAML 身份验证的 IdP 相集成,则可以使用企业的 SSO 提供程序来:

  • 访问 Atlas。

  • 为 MongoDB 数据库用户建立无密码身份验证,以便连接到 Atlas。然后, mongosh和 MongoDB 驱动程序可以使用此数据库用户连接到 Atlas。

对于此 MongoDB 数据库用户,您可以使用通过 AssumeRoleWithSAML API 操作获取的临时安全档案。

在这种情况下,您必须已经拥有:

  • 已配置 SAML SSO 提供商。

  • 现有 IdP 角色,在其信任策略中指定您的 SAML IdP 提供程序。

以下步骤显示了如何为 MongoDB 数据库用户设置无密码身份验证。 要了解详情,请使用工作流程中每个阶段的链接。

要在企业使用具有 SAML 的 SSO 提供商并与 AWS IAM 集成时为您的 MongoDB 数据库用户设置无密码身份验证,请执行以下操作:

  1. 创建角色,将权限委托给 IAM 用户。

  2. 向委派角色请求临时安全凭证 。当您调用 AssumeRoleWithSAML API 操作 时, AWS Security Token Service 会创建临时安全凭证。

  3. 使用临时 API 密钥、访问密钥和令牌在 Atlas 集群中进行身份验证。

← 配置自定义数据库角色