web-dev-qa-db-ja.com

Terraform-assume_role_policy-標準のIAMポリシーと似ていますが、わずかに異なります

このページ https://www.terraform.io/docs/providers/aws/r/iam_role.html 言及:

注:このassume_role_policyは非常に似ていますが、標準のIAMポリシーとは少し異なり、aws_iam_policyリソースを使用できません。ただし、aws_iam_policy_documentデータソースを使用できます。これがどのように機能するかについては、以下の例を参照してください。

assume_role_policystandard IAM policyと異なる理由はありますか?

なぜですか?

8
Snowcrash

assume role policyは、どのプリンシパル(ユーザー、他のロール、AWSサービスなど)が「想定」できるロールに関連付けられた特別なポリシーです。役割。ロールを引き受けるということは、そのロールに関連付けられたアクセスポリシーによって付与された特権で動作する一時的な資格情報を生成することを意味します。

役割の引き受けポリシーは、次の点で通常のポリシーとは異なります。

  • これは、ロールに関連付けられた個別のオブジェクトではなく、ロール自体のプロパティです。ロールごとに1つのロールポリシーを引き受けるだけです。
  • 役割の引き受けポリシーで意味を持つ唯一のActionsts:AssumeRoleです。これは、役割の一時的な資格情報を取得するために使用されるAPI操作であるためです。

Terraformドキュメントに記載されている違いを生み出すのはこれらの違いの最初のものです。ロールにはIAMポリシーが1つだけあり、ロールの一部として直接宣言されているため、そのポリシードキュメントはaws_iam_roleリソースの属性として提供する必要があります。 aws_iam_policy_documentデータソースは、入力をIAM JSONポリシードキュメント形式に単純に変換するだけなので、assume_role_policy属性の値を生成するために使用できます。

AWSサービスがユーザーに代わって別のAPIサービスを呼び出すと、指定したロールの一時的な認証情報を内部的に取得し、それを使用して他のサービスAPIを呼び出すことができます。このため、ロールを作成して、AWS Lambda、EC2(インスタンスプロファイルを介して)、KinesisFirehoseなどのサービスに割り当てる必要があります。


別の質問への回答 の一部として、これについてより詳細な説明を書きました。これは、実際のIAMロールの例を示し、ロールポリシーと通常のポリシーを想定しています。

15
Martin Atkins