如何使用 AWS Control Tower 但忽略 AWS SSO 功能以支持自定义 ADFS 方法?

How do I use AWS Control Tower but ignore the AWS SSO feature in favor of a custom ADFS approach?

目标: 使用 AWS Control Tower 的所有功能 除了 AWS SSO,因为与我合作的组织不想在此时更改身份管理和单点登录的任何方面。

目前,该组织在其数据中心使用 ADFS 通过 MFA 进行单点登录,并具有一些自动化和流程,用于使用该身份解决方案设置新的 AWS 帐户。

我不关心这种与 ADFS 的集成是否会在创建新帐户时自动触发 运行,因为组织还没有达到那种级别的身份自动化,目标是不改变那。

如果您想要更自定义的方法,AWS Control Tower FAQs 建议使用 Landing Zones 解决方案 而不是 Control Tower:

While Control Tower automates creation of a new landing zone with pre-configured blueprints (e.g., AWS SSO for directory and access), the AWS Landing Zone solution provides a configurable setup of a landing zone with rich customization options through custom add-ons (e.g., Active Directory, Okta Directory) and ongoing modifications through a code deployment and configuration pipeline.

着陆区方法的 CloudFormation 模板和指南位于此处:

但我想要这一切:Control Tower 使用自定义身份方法的便利性。此外,该组织使用 Terraform,所以我不想介绍一堆 CloudFormation 模板,AWS Terraform Landing Zone Accelerator (TLZ) 尽管已经发布一年多了,但尚未发布。

AWS Control Tower 的帐户工厂要求您输入 AWS SSO 电子邮件地址,因此似乎无法绕过 AWS SSO 的某些使用,至少在初始设置或“帐户注册”期间:

另一方面:由于该组织使用 ADFS 进入 AWS,我无法通过切换到 Control Tower 创建的 AWSControlTowerExecution 角色来访问 AWS Control Tower 创建的帐户,因为我通过联盟登录到 Control Tower(主)帐户。

AWSControlTowerExecution 角色信任关系中的委托人是主帐号。当您通过联合身份验证时,AWS 不会将您的委托人视为您已联合进入的帐户的一部分,因此AWSControlTowerExecution 角色不信任我,可以这么说。)

您可以使用 AWS SSO 作为 Control Tower 默认值,包括 AWS SSO,使用 SSO 用户进入新帐户并配置 ADFS,然后通过 AWS 服务控制策略 (SCP) 使 SSO 用户无用.

因此,在帐户工厂中,按照要求为 SSO 字段输入电子邮件地址和名称。

如您所述,ControlTower 会自动在每个新帐户中创建一个角色,主帐户中的管理员无需额外配置即可切换到该角色。

但是,由于您通过联盟进入主帐户,因此您可以通过接受通过电子邮件收到的 SSO 邀请来进入新帐户。

这将要求您创建密码,然后通过 link 进入 log-in,您可以在 Control Tower > 用户和访问 > 用户门户 URL 中找到。

通过该 AWS SSO log-in 进入新创建的帐户后,您可以使用您组织的流程设置 ADFS。

一旦您确认 ADFS 集成有效并且您可以通过 ADFS 进入新帐户,您可以通过添加以下 SCP 拒绝对您在帐户设置期间使用的占位符 AWS SSO 用户的所有操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyAWSSSOUser",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringLike": {
                    "aws:PrincipalArn": [
                        "*AWSReservedSSO*"
                    ]
                }​​​​​​
            }​​​​​​
        }​​​​​​
    ]
}​​​​​​

SSO 用户仍然可以log-in访问该帐户,但不能执行任何操作或查看任何内容。

但是,为了简化此操作,您可能希望等到所有帐户都已创建后再添加此 SCP。这样,您可以先在 AWS Organizations 中为新账户创建 OU,然后将新账户移至该 OU,最后将此 SCP 应用于整个 OU。

这 SCP-attachment 没有锁定您的风险,因为作为 backup/break-glass 访问权限,您仍然可以在主帐户中创建一个 IAM 用户并将角色切换到控制 Tower-created 账号.