但是 AWS SSO 是否可以用于管理多个完全独立的客户账户,这些客户账户要么不在 AWS 组织内,要么不在单独的 AWS 组织内?
可以将这些账户作为应用程序部分下的外部 AWS 账户添加到 AWS SSO。对于每个目标帐户,您需要
- 在 IAM 中注册 SAML 身份提供者
- 为 AWS SSO 创建一个 IAM 角色以代入
脚步:
在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 Single Sign-On (AWS SSO) 集成指南