IAM ポリシー作成時に「すべてのリソース を選択する必要があります」という警告が出た場合の対処方法
困っていた内容
IAM ポリシーの作成時に「ポリシーのアクションはリソースレベルのアクセス許可をサポートしておらず、 すべてのリソース を選択する必要があります」というエラーメッセージが表示されています。解決方法を教えてください。
前提となる知識
IAM アクションには、リソースレベルのアクセス許可がサポートされているものと、されていないものがあります。
リソースレベルのアクセス許可がサポートされている場合
Resource 句に当該の IAM アクションが影響するリソースの範囲を指定することができます。
また、Resource 句にアスタリスク(*)を指定することで、すべてのリソースの範囲を指定することもできます。
一部のリソースを指定する場合の IAM ポリシー例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyStartStop", "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:<リージョン名>:<AWSアカウントID>:instance/<インスタンスID>" } ] }
すべてのリソース範囲を指定する場合の IAM ポリシー例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyStartStop", "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "*" } ] }
リソースレベルのアクセス許可がサポートされていない場合
Resource 句に当該の IAM アクションが影響するリソースの範囲を指定することはできません。
すべてのリソースを対象とするのみとなり、Resource 句にアスタリスク(*)を指定する必要があります。
IAM ポリシー例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyDescribe", "Effect": "Allow", "Action": [ "ec2:DescribeInstances" ], "Resource": "*" } ] }
どう対応すればいいの?
今回は以下の IAM ポリシーにて当該のエラーメッセージが出る状態からの解決方法をご案内します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicy", "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:DescribeInstances" ], "Resource": "arn:aws:ec2:<リージョン名>:<AWSアカウントID>:instance/<インスタンスID>" } ] }
エラーメッセージのスクリーンショット
IAM アクションの中で、リソースレベルのアクセス許可がサポートされていないアクションを抜き出します。 Amazon EC2 のアクション、リソース、および条件キー - AWS Identity and Access Management
「ec2:StartInstances」と「ec2:StopInstances」はリソースタイプに instance の指定が可能です。
「ec2:DescribeInstances」はリソースタイプの指定をすることができません。
リソースレベルのアクセス許可がサポートされていないアクションを別のステートメント(Statement)へ移し、Resource句にアスタリスク(*)を指定します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyStartStop", "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:<リージョン名>:<AWSアカウントID>:instance/<インスタンスID>" }, { "Sid": "IAMPolicyDescribe", "Effect": "Allow", "Action": [ "ec2:DescribeInstances" ], "Resource": "*" } ] }
エラーメッセージがなくなったことを確認しました。
参考情報
IAM と連携する AWS のサービス - AWS Identity and Access Management
Amazon EC2 のアクション、リソース、および条件キー - AWS Identity and Access Management