1

我想将多租户 SaaS 的 AWS 资源分离到 AWS 组织下的单独账户中。

  • 我有多个 OU,按功能划分,例如日志、审计、计算。我将拥有与每个 OU 相关联的 SCP。
  • 每个租户在每个 OU 下都有一个帐户,这意味着当我添加新租户时,每个帐户都会将各自的 SCP 继承到该 OU。

为了使开发人员能够构建平台并能够调试正在运行的系统,我想使用中心辐射型方法来使用联合 IdP 进行访问控制,类似于此处所述:https://segment .com/blog/secure-access-to-100-aws-accounts/

具体来说,我将拥有一个identity绑定到 Okta 的帐户。用户将通过此帐户进行身份验证,然后用于sts:assume-role升级到其他帐户中的角色。请注意,我想要一个单独的identity帐户,并且不让用户对组织中的master帐户进行身份验证(因此在组织内,我们拥有masteridentity帐户,以及每个具有各自帐户的 OU)。

为了以编程方式创建新租户,我需要创建租户的帐户并将它们放置在正确的 OU 中,因此这需要在master帐户中完成。我可以通过在master帐户中创建一个角色并让开发人员从该identity帐户中担任该角色来做到这一点。

如何在新账户中创建开发人员可以从该identity账户代入的角色?成员帐户有一个名为OrganizationAccountAccessRole自动创建的角色(请参阅此处了解详细信息),但该角色设置为只能从主帐户访问,并且可以访问该帐户中的所有内容。如何使identity帐户中的开发人员能够以编程方式创建新帐户及其中的角色,而无需授予此类全能权限(他们应该没有更多的权限来执行此任务而不是必要的)。我认为我不能master从帐户中担任该帐户identity的角色,然后再在第三个帐户中担任角色吗?

编辑:我真的只对解决实现我描述的解决方案所需的步骤/配置的答案感兴趣。

4

2 回答 2

1

Cloudformation StackSets解决了这个问题。

基本上,步骤是:

  1. 在子账户中设置角色,这些角色有权部署与父账户(您从中进行部署)的角色具有信任关系的资源

  2. 在父账户中创建 StackSet 并将 Cloudformation 模板部署到其中选择的账户或组织单位 (OU) 或整个组织

StackSets 支持 AWS 组织,因此您可以选择 OU 而不是选择单个账户。

于 2019-10-04T01:35:35.000 回答
1

我提出一个优雅的解决方案是使用AWS Service Catalog产品,它允许您创建和管理获准在您的 AWS 环境中使用的服务目录。事实上,可以自定义此 AWS 博客文章中描述的设置以实现您想要的。它提供了一个创建 Account Builder 产品的示例,当您的最终用户启动该产品时,该产品使用 AWS Lambda 脚本来:

  1. 预置 AWS 成员账户
  2. 担任帐户的组织角色
  3. 使用 CloudFormation 模板自定义账户(在您的情况下,创建额外的 IAM 角色)

您可以进一步自定义它,甚至在完成后删除组织角色帐户。

提供了 Lambda 函数的源代码以及 CloudFormation 模板,您可以对其进行调整以产生您正在寻找的确切行为。

希望这可以帮助。

于 2019-10-04T02:32:04.470 回答