Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
IAM マネージドポリシーを CloudFormation の IAM ロールにアタッチする方法を教えてください。
既存または新規の AWS Identity and Access Management (IAM) マネージドポリシーを AWS CloudFormation の新規または既存の IAM ロールに追加したいと考えています。
簡単な説明
既存または新規の IAM マネージドポリシーを新規の IAM ロールリソースに追加するには、リソースタイプ AWS::IAM::Role の ManagedPolicyArns プロパティを使用します。新規の IAM マネージドポリシーを既存の IAM ロールリソースに追加するには、リソースタイプ AWS::IAM::ManagedPolicy の Roles プロパティを使用します。
IAM マネージドポリシーは、AWS マネージドポリシーまたはカスタマー管理ポリシーのどちらでも構いません。
重要: 最大 20 個のマネージドポリシーを IAM ロールまたはユーザーにアタッチできます。各マネージドポリシーのサイズは 6,144 文字を超えることはできません。IAM では、この制限に照らしてポリシーのサイズを計算する際、空白はカウントされません。詳細については、「IAM と AWS STS クォータ」を参照してください。
シナリオに応じて、次のいずれかのセクションの手順を実行してください。
- 既存の IAM マネージドポリシーを新しい IAM ロールに追加する
- 新しい IAM マネージドポリシーを新しい IAM ロールに追加する
- 新しい IAM マネージドポリシーを既存の IAM ロールに追加する
解決策
既存の IAM マネージドポリシーを新しい IAM ロールに追加する
次の手順を実行します。
-
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' -
テンプレートの Resources セクションで、AWS::IAM::Role タイプのリソースに対して、ステップ 1 で作成したパラメータを Ref に設定します。この例では、パラメータは 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 -
既存の IAM マネージドポリシーを新しい IAM ロールに適用するには、変更した CloudFormation テンプレートに基づいてスタックを作成または更新します。
新しい IAM マネージドポリシーを新しい IAM ロールに追加する
次の手順を実行します。
-
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: "*" -
!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 -
新しい IAM マネージドポリシーを新しい IAM ロールに適用するには、変更した CloudFormation テンプレートに基づいてスタックを作成または更新します。
新しい IAM マネージドポリシーを既存の IAM ロールに追加する
次の手順を実行します。
-
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 -
テンプレートの 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 -
新しい IAM マネージドポリシーを既存の IAM ロールに適用するには、変更した CloudFormation テンプレートに基づいてスタックを作成または更新します。
- 言語
- 日本語
