如何以编程方式在AWS组织成员账户中创建角色

时间:2019-10-03 21:57:25

标签: amazon-web-services amazon-iam aws-organizations

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

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

为了使开发人员能够构建平台并能够调试正在运行的系统,我想使用中心辐射型方法使用联合IdP进行访问控制,类似于此处所述:{{ 3}}。

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

为了以编程方式创建新的承租人,我需要创建承租人的帐户并将其放置在正确的OU中,因此需要在master帐户中完成。为此,我可以在master帐户中创建一个角色,然后让开发人员从identity帐户中扮演该角色。

如何在开发人员可以从identity帐户承担的新帐户中创建角色?成员帐户具有自动创建的名为OrganizationAccountAccessRole的角色(请参见https://segment.com/blog/secure-access-to-100-aws-accounts/),但是该角色被设置为只能从主帐户访问,并且可以访问该帐户中的一切 。如何在identity帐户中使开发人员能够以编程方式创建新帐户及其中的角色,而无需授予这种无所不能的权限(他们应该没有更多的权限来执行此任务)。我认为我不能在master帐户的identity帐户中扮演角色,然后再在第三个帐户中扮演角色?

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

2 个答案:

答案 0 :(得分:0)

Cloudformation StackSets解决了这个问题。

基本上,这些步骤是:

  1. Set up roles in the child accounts有权部署与父帐户(您要从其部署)的信任关系的资源

  2. 在父帐户中创建StackSet并将Cloudformation模板部署到其中,以将其存储到选定的帐户或组织单位(OU)或整个组织

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

答案 1 :(得分:0)

我会提出一个优雅的解决方案是使用AWS Service Catalog产品,该产品允许您创建和管理已批准在AWS环境中使用的服务目录。实际上,this AWS blog post中描述的设置可以自定义以实现所需的设置。它提供了一个创建Account Builder产品的示例,该产品在最终用户启动时使用AWS Lambda脚本执行以下操作:

  1. 设置一个AWS会员帐户
  2. 承担该帐户的组织角色
  3. 使用CloudFormation模板自定义帐户(在您的情况下,创建其他IAM角色)

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

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

希望这会有所帮助。