我有多个不同的客户,彼此完全独立。如果与我合作的客户已经拥有 AWS 账户,我可以在他们现有的 AWS 账户中开发软件,但如果他们没有账户,那么我将创建一个新的 AWS 账户。
今天,我将客户的 AWS 用户名/密码存储在 LastPass 中的单独文件夹和/或 LastPass 身份中。但是,我想知道是否有更好/更简单的方法来做到这一点以及推荐的方法是什么。
我知道 AWS SSO 可用于管理一个组织(例如,一家大公司)下的多个 AWS 账户,但 AWS SSO 是否可用于管理多个完全独立的客户账户(这些账户不在 AWS 组织中或位于单独的账户中) AWS 组织?
对于完全独立的公司管理多个 AWS 账户的场景,最佳实践是什么?有 AWS 推荐的这方面的白皮书吗?
这个SO问题是相关的,但它也有6年历史了: AWS:如何管理多个帐户的身份验证
谢谢!
我想说,对于属于您组织的账户,您应该使用 AWS SSO。
对于其他人“拥有”的帐户。让他们创建一个角色,您可以从您的一个帐户中担任该角色。也许您可以在您的组织下创建一个单独的帐户,以包含其他帐户信任的角色。
但是 AWS SSO 是否可以用于管理多个完全独立的客户账户(这些账户不在 AWS 组织中或位于单独的 AWS 组织中)?
可以将这些账户作为“应用程序”部分下的外部 AWS 账户添加到 AWS SSO。对于每个目标帐户,您需要
在 AWS SSO、
在目标 AWS 账户中,在 IAM 中注册 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 账户应用程序实例才能使用多个角色。
要通过 cli 访问非组织帐户,您必须创建具有相关权限的权限集并将其分配给 SSO 帐户。
在非组织帐户中创建相关角色,在 SSO 帐户中创建允许 STS 访问这些角色的权限集。
有一篇分步文章介绍如何为客户端配置 sso https://www.securemfa.com/downloads/web-api-aws-connect