不在组织中的外部客户 AWS 账户的 AWS SSO - 最佳实践

AWS SSO for external client AWS accounts not in an organization - Best Practices

我有多个不同的客户,它们彼此完全独立。如果与我合作的客户已经拥有 AWS 账户,我可以在他们现有的 AWS 账户中开发软件,但如果他们没有账户,那么我将创建一个新的 AWS 账户。

今天,我将客户的 AWS username/passwords 存储在 LastPass 中的单独文件夹 and/or LastPass 身份中。但是,我想知道是否有 better/easier 方法可以做到这一点,以及推荐的方法是什么。

我知道 AWS SSO 可用于管理一个组织下的多个 AWS 账户(例如,对于一家大公司),但 AWS SSO 是否可用于管理多个完全独立的客户账户,这些账户要么不在 AWS 中组织或单独的 AWS 组织?

管理多个完全独立公司的 AWS 账户的场景的最佳实践是什么?是否有关于此的 AWS 推荐白皮书?

这个 SO 问题是相关的,但也有 6 年历史了: AWS: how to manage authentication for multiple accounts

谢谢!

我想说的是,对于属于您组织的帐户,您应该使用 AWS SSO。

对于其他人 'owned' 的帐户。让他们创建一个角色,您可以从您的一个帐户中担任该角色。也许您可以在您的组织下创建一个单独的帐户,以包含其他帐户信任的角色。

but can AWS SSO be used to manage multiple completely independent client accounts that are either not in an AWS organization or in separate AWS organizations?

可以在“应用程序”部分下将这些帐户作为外部 AWS 帐户添加到 AWS SSO。对于每个目标帐户,您需要

  • 在 IAM 中注册 SAML 身份提供商
  • 为 AWS SSO 创建一个 IAM 角色来代入

步骤:

AWS SSO,

  • 添加一个新的应用程序并指定“外部 AWS 账户”作为类型
  • 为应用程序提供一个名称
  • 下载 SAML 元数据文件

目标 AWS 账户中,在 IAM 中注册一个 SAML 身份提供商:

  • 在 IAM 中,导航到“身份提供商”部分并选择添加提供商
  • Select SAML 身份提供商类型
  • 为提供商提供一个有意义的名称(例如“AWS-SSO”)
  • 上传您从 AWS SSO 获得的 SAML 元数据

接下来,在目标 AWS 账户中添加一个 IAM 角色,供 AWS SSO 代入。最简单的方法是从您刚刚在 IAM 中创建的身份提供商的详细信息页面中选择 分配角色 → 创建新角色。从那里,AWS 将呈现熟悉的角色创建向导,您可以在其中设置权限和标签。

如果您希望让 AWS SSO 承担现有的 IAM 角色,请编辑角色的信任策略以将 SAML IdP 作为受信任的实体包括在内:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::ACCOUNTID:saml-provider/SAMLPROVIDERNAME"
      },
      "Action": "sts:AssumeRoleWithSAML",
      "Condition": {
        "StringEquals": {
          "SAML:aud": "https://signin.aws.amazon.com/saml"
        }
      }
    }
  ]
}

其中 ACCOUNTID 是目标 AWS 账户的 ID,SAMLPROVIDERNAME 是您创建的 IdP 的名称。

最后,回到 AWS SSO

  • 打开您创建的外部 AWS 账户申请

  • 选择属性映射选项卡

  • 为目标 AWS 账户中的角色添加新的属性映射

    • 字段: https://aws.amazon.com/SAML/Attributes/Role
    • arn:aws:iam::ACCOUNTID:saml-provider/SAMLPROVIDERNAME,arn:aws:iam::ACCOUNTID:role/ROLENAME
    • 格式: unspecified

其中 ACCOUNTIDSAMLPROVIDERNAMEROLENAME 引用目标 AWS 账户中的项目。

配置了外部 AWS 账户应用程序后,您可以像往常一样在 AWS SSO 中将用户分配给应用程序。

AWS 文档指出每个外部 AWS 账户应用程序只能针对一个角色

External AWS Account service only supports one IAM Role attribute mapping per application instance. So, you would have to create multiple External AWS Account application instances to use multiple roles.

参考:AWS Single Sign-On (AWS SSO) Integration Guide for External AWS Account