この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
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