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

问题描述 投票:0回答:4

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

今天,我将客户的 AWS 用户名/密码存储在 LastPass 中的单独文件夹和/或 LastPass 身份中。但是,我想知道是否有更好/更简单的方法来做到这一点以及推荐的方法是什么。

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

对于完全独立的公司管理多个 AWS 账户的场景,最佳实践是什么?有 AWS 推荐的这方面的白皮书吗?

这个SO问题是相关的,但它也有6年历史了: AWS:如何管理多个帐户的身份验证

谢谢!

amazon-web-services single-sign-on aws-sso
4个回答
2
投票

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

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


2
投票

但是 AWS SSO 是否可以用于管理多个完全独立的客户账户(这些账户不在 AWS 组织中或位于单独的 AWS 组织中)?

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

  • 在 IAM 中注册 SAML 身份提供商
  • 创建 IAM 角色供 AWS SSO 承担

步骤:

AWS SSO

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

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

  • 在 IAM 中,导航至身份提供商部分并选择 添加提供商
  • 选择 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

其中

ACCOUNTID
SAMLPROVIDERNAME
ROLENAME
引用目标 AWS 账户中的工件。

配置外部 AWS 账户应用程序后,您可以照常将用户分配到 AWS SSO 中的应用程序。

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

外部 AWS 账户服务仅支持每个应用程序实例一个 IAM 角色属性映射。因此,您必须创建多个外部 AWS 账户应用程序实例才能使用多个角色。

参考:外部 AWS 账户的 AWS 单点登录 (AWS SSO) 集成指南


0
投票

要通过 cli 访问非组织帐户,您必须创建具有相关权限的权限集并将其分配给 SSO 帐户。

在非组织帐户中创建相关角色,在 SSO 帐户中创建允许 STS 访问这些角色的权限集。


0
投票

有一篇分步文章介绍如何为客户端配置 sso https://www.securemfa.com/downloads/web-api-aws-connect

© www.soinside.com 2019 - 2024. All rights reserved.