キューポリシーの Deny が原因で、Amazon Simple Queue Service (Amazon SQS) キューにアクセスできなくなりました。
簡単な説明
次の Deny ポリシー例では、すべての AWS Identity and Access Management (IAM) エンティティは一切の Amazon SQS キューアクションにアクセスできません。
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "deny-sqs-actions",
"Effect": "Deny",
"Principal": "*",
"Action": "SQS:*",
"Resource": "queueNameArn"
}
]
}
解決策
SQS キューにアクセスできない問題のトラブルシューティング
Deny キューポリシーを使用するキューにアクセスできなくなった場合は、次の手順を実行します。
- AWS アカウントの root ユーザーでキューにアクセスします。root ユーザーの認証情報では、アカウントのすべてのリソースへのフルアクセスが可能です。root ユーザーアカウントを使用すると、キューに関連付けられた Deny ポリシーを削除できます。
- Deny ポリシーが特定のエンティティを制限している場合は、そのポリシーで免除されているエンティティへのアクセスを試行します。
注: 免除されたエンティティには、キューへのアクセスに必要な権限があることを確認します。
- AWS Organizations 管理アカウントから、AWS マネージドポリシー SQSUnlockQueuePolicy を使用します。
SQS キューにアクセスできなくなる問題を防ぐ
次のベストプラクティスにより、キューへのアクセス喪失を防いでください。
Allow ステートメントと Deny ステートメントを含むポリシーの例:
{ "Version": "2012-10-17",
"Id": "Queue1_Policy_UUID",
"Statement": [{
"Sid":"Queue1_Allow_Access",
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::111122223333:user/User1"},
"Action": "sqs:*",
"Resource": "queueNameArn"
}, {
"Sid":"Queue1_Deny_Access",
"Effect": "Deny",
"NotPrincipal": {"AWS": "arn:aws:iam::111122223333:user/User1"},
"Action": "sqs:*",
"Resource": "queueNameArn"
}]
}
上記のポリシー例では、IAM ユーザー User1 は、指定された SQS キューのすべての Amazon SQS アクションにアクセスできます。このポリシーでは、User1 以外のすべてのプリンシパルはキューへのアクセスが拒否されます。
注: Deny ポリシー内の NotPrincipal 要素により、指定したプリンシパルは免除されます。Allow ステートメントにより、免除されたプリンシパルはアクセスを付与されます。
SQS キューにアクセスできない場合は、AWS サポートにお問い合わせください
root ユーザー認証情報を使用できなかったり、Deny ポリシーの例外となるエンティティがわからなかったりする場合は、AWS サポートにお問い合わせください。サポートケースを作成し、次の情報を含めてください。
- root ユーザーの認証情報を使用してキューにアクセスしたことを示してください。root ユーザーの認証情報を使用できない理由、または root ユーザーの認証情報では問題を解決できなかった理由を記述してください。
- AWS マネージドポリシー SQSUnlockQueuePolicy を使用できなかったことおよび、その原因を記述してください。
- キュー所有者であることを示してください。
- そのキューにアクセスする必要がある理由を詳細に記述してください。
関連情報
Amazon SQS でのアクセス管理の概要