AWS CloudFormation で IAM マネージドポリシーを IAM ロールにアタッチする方法を教えてください。
AWS CloudFormation で新規または既存の AWS Identity and Access Management (IAM) マネージドポリシーを新規または既存の IAM ロールに追加する方法を教えてください。
簡単な説明
既存または新規の IAM マネージドポリシーを新規の IAM ロールリソースに追加するには、ManagedPolicyArns プロパティ (リソースタイプが AWS::IAM::Role) を使用します。新規の IAM 管理ポリシーを既存の IAM ロールリソースに追加するには、ロールプロパティ (リソースタイプが AWS::IAM::ManagedPolicy) を使用します。
IAM 管理ポリシーは、AWS 管理ポリシーまたはカスタマー管理ポリシーのどちらでもかまいません。
重要: 最大 10 個の管理ポリシーを IAM ロールまたはユーザーに添付できます。各マネージドポリシーのサイズは 6,144 文字を超えることはできません。詳細については、「IAM および STS のクォータ」をご参照ください。
シナリオに基づいて、次のいずれかのセクションの手順を実行してください。
- 既存の IAM マネージドポリシーを新規の IAM ロールに追加する
- 新しい IAM マネージドポリシーを新規の IAM ロールに追加する
- 新規の IAM マネージドポリシーを既存の IAM ロールに追加する
解決方法
既存の IAM マネージドポリシーを新規の IAM ロールに追加する
1. AWS CloudFormation テンプレートで、IAM 管理ポリシーの Amazon リソースネーム (ARN) を渡すために使用できる 1 つまたは複数のパラメータを作成します。以下の JSON と YAML の例をご参照ください。
JSON:
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "awsExampleManagedPolicyParameterOne": { "Type": "String", "Description": "ARN of the first IAM Managed Policy to add to the role" }, "awsExampleManagedPolicyParameterTwo": { "Type": "String", "Description": "ARN of the second IAM Managed Policy to add to the role" } } }
YAML:
Parameters: awsExampleManagedPolicyParameterOne: Type: String Description: 'ARN of the first IAM Managed Policy to add to the role' awsExampleManagedPolicyParameterTwo: Type: String Description: 'ARN of the second IAM Managed Policy to add to the role'
2. テンプレートの [Resources] セクションで、AWS። IAM። Role タイプのリソースに対して、Ref をステップ 1 で作成したパラメータに設定します。この例では、パラメータは awsExampleManagedPolicyParameterOne と awsExampleManagedPolicyParameterTwo です。以下の JSON と YAML の例をご参照ください。
JSON:
{ "Resources": { "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "ManagedPolicyArns": [ { "Ref": "awsExampleManagedPolicyParameterOne" }, { "Ref": "awsExampleManagedPolicyParameterTwo" } ] } } } }
YAML:
Resources: RootRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - 'sts:AssumeRole' Path: / ManagedPolicyArns: - !Ref awsExampleManagedPolicyParameterOne - !Ref awsExampleManagedPolicyParameterTwo
3. 既存の IAM マネージドポリシーを新規の IAM ロールに適用するには、スタックを作成するか、変更した AWS CloudFormation テンプレートに基づいて既存のスタックを更新します。
新しい IAM マネージドポリシーを新規の IAM ロールに追加する
1. AWS CloudFormation テンプレートで、AWS::IAM::ManagedPolicy リソースを使用して新しいポリシーを作成します。以下の JSON と YAML の例をご参照ください。
JSON:
{ "SampleManagedPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Properties": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllUsersToListAccounts", "Effect": "Allow", "Action": [ "iam:ListAccountAliases", "iam:ListUsers", "iam:GetAccountSummary" ], "Resource": "*" } ] } } } }
YAML:
SampleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: PolicyDocument: Version: '2012-10-17' Statement: - Sid: AllowAllUsersToListAccounts Effect: Allow Action: - iam:ListAccountAliases - iam:ListUsers - iam:GetAccountSummary Resource: "*"
2. !Ref 論理 ID 構文を使用して、IAM 管理ポリシーリソースを AWS::IAM::Role リソースに添付します。
たとえば、Ref をステップ 1 で作成したリソース論理 ID (SampleManagedPolicy) に設定します。以下の JSON と YAML の例をご参照ください。
JSON:
{ "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "ManagedPolicyArns": [ { "Ref": "SampleManagedPolicy" } ] } } }
YAML:
RootRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - 'sts:AssumeRole' Path: / ManagedPolicyArns: - !Ref SampleManagedPolicy
3. 新規の IAM マネージドポリシーを新規の IAM ロールに適用するには、スタックを作成するか、変更した AWS CloudFormation テンプレートに基づいて既存のスタックを更新します。
新規の IAM マネージドポリシーを既存の IAM ロールに追加する
1. AWS CloudFormation テンプレートで、既存のロール名を渡すために使用できるパラメータを作成します。以下の JSON と YAML の例をご参照ください。
JSON:
{ "Parameters": { "awsExampleRolesParameter": { "Type": "CommaDelimitedList", "Description": "Names of existing Roles you want to add to the newly created Managed Policy" } } }
YAML:
Parameters: awsExampleRolesParameter: Type: CommaDelimitedList Description: Names of existing Roles you want to add to the newly created Managed Policy
2. テンプレートの Resources セクションで、リソースタイプが AWS::IAM::ManagedPolicy の場合、Ref をステップ 1 で作成したパラメータ (awsExampleRolesParameter) に設定します。以下の JSON と YAML の例をご参照ください。
JSON:
{ "Resources": { "SampleManagedPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Properties": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllUsersToListAccounts", "Effect": "Allow", "Action": [ "iam:ListAccountAliases", "iam:ListUsers", "iam:GetAccountSummary" ], "Resource": "*" } ] }, "Roles": { "Ref": "awsExampleRolesParameter" } } } } }
YAML:
Resources: SampleManagedPolicy: Type: 'AWS::IAM::ManagedPolicy' Properties: PolicyDocument: Version: '2012-10-17' Statement: - Sid: AllowAllUsersToListAccounts Effect: Allow Action: - 'iam:ListAccountAliases' - 'iam:ListUsers' - 'iam:GetAccountSummary' Resource: '*' Roles: !Ref awsExampleRolesParameter
3. 新規の IAM マネージドポリシーを既存の IAM ロールに適用するには、 スタックを作成するか、変更した AWS CloudFormation テンプレートに基づいて既存のスタックを更新します。
関連するコンテンツ
- 質問済み 5年前lg...
- 質問済み 10ヶ月前lg...
- AWS公式更新しました 3年前