Terraform-假设角色策略-与标准IAM策略相似但略有不同

Sno*_*ash 7 amazon-iam terraform

此页面https://www.terraform.io/docs/providers/aws/r/iam_role.html提到:

注意:此假定_role_policy与标准IAM策略非常相似,但略有不同,并且不能使用aws_iam_policy资源。但是,它可以使用aws_iam_policy_document数据源,有关如何工作的信息,请参见下面的示例。

为何与assume_role_policy有所不同standard IAM policy

为什么?

Mar*_*ins 11

一个假设的作用的政策是与角色控制哪些主体(用户,其他角色,AWS服务等)相关联的可以“承担”的角色的特殊政策。假定角色意味着生成临时凭证,以使用与该角色关联的访问策略所授予的特权进行操作。

假定角色策略在以下方面与常规策略不同:

  • 它是角色本身的属性,而不是与角色关联的单独对象。每个角色只有一个假设角色策略。
  • Action在承担角色策略中唯一具有任何含义的是sts:AssumeRole,因为这是用于获取角色临时证书的API操作。

这些差异中的第一个产生了Terraform文档中提到的差异:由于角色仅具有一个IAM策略,并且直接声明为角色的一部分,因此必须提供其策略文档作为aws_iam_role资源的属性。所述aws_iam_policy_document数据源是一个简单的变换其输入到一个IAM JSON策略文档的格式,所以它可以被用于生成的值assume_role_policy属性。

当AWS服务代表您调用另一个API服务时,它会在内部获取您指定角色的临时凭证,然后将其用于调用其他服务API。因此,有必要创建角色并将其分配给诸如AWS Lambda,EC2(通过实例配置文件),Kinesis Firehose等服务。


我对此进行了更为详尽的描述,作为对另一个问题的回答的一部分,其中给出了一些实际的IAM角色,假定角色策略和常规策略的示例。