使用Terraform管理IAM假定角色创建

时间:2020-01-30 17:04:33

标签: amazon-web-services terraform terraform-provider-aws

问题陈述:

我想使用Terraform为多个AWS帐户创建和管理IAM承担角色。

要实现的目标

  • 使用Terraform模块在所有AWS账户中创建IAM承担角色

背景

IAM角色将存在于每个帐户中,并且每个帐户将具有不同数量的承担角色,因为它将由具有不同规模的不同团队使用。将通过Jump AWS帐户授予对该帐户的访问权限,用户将在该帐户中进行身份验证,然后使用承担角色URL切换帐户。

例如,

Account A  has two IAM roles: admin_role and developer_role
Account B has three IAM roles: admin_role, poweruser_role and developer_role
Account C is a jump account, and it also has admin_role, poweruser_role and developer_role  IAM role

User A log into Account C(with poweruser_role attached to them user) then assumes to Account B(this account has a trust relationship with Account C) using the same poweruser_role.

对于此多帐户基础架构设置,正确的Terraform IAM解决方案是什么?

This solution说明了如何为所有账户拥有唯一的IAM角色,但未显示如何处理每个账户的AWS角色不同时的情况。

谢谢。

1 个答案:

答案 0 :(得分:0)

通常,创建一个AWS组织是一个好习惯。 该组织包含: -infosec帐户(您在其中创建用户), -主帐单帐户(用于总帐单) -然后,您为每个环境创建一个帐户(例如,登台, 生产(dev),并在它们之间建立信任关系。 这样,您可以实现最大的灵活性。实际上,您可以为不同的帐户创建不同的组,并为单个用户分配一个或多个组。

示例:

  • CTO是总帐单组,分期管理员和生产管理员的一部分
  • 内部开发人员是舞台和生产管理员的一部分
  • 外部顾问是分期管理员的一部分

一些参考: https://www.liatrio.com/blog/secure-aws-account-structure-with-terraform-and-terragrunt 对应的github项目: https://github.com/liatrio/aws-accounts-terraform