Amazon Simple Queue Service (Amazon SQS) キューにアクセスしたいと考えています。キューにアクセスするために、どのような SQS アクセスポリシーと AWS Identity and Access Management (IAM) ポリシーのアクセス許可が必要ですか?
解決方法
Amazon SQS キューにアクセスするには、SQS アクセスポリシー、IAM ポリシー、またはその両方にアクセス許可を追加する必要があります。特定のアクセス許可要件は、SQS キューと IAM ロールが同じアカウントからのものであるかどうかによって異なります。
同じアカウント
アクセスを許可するステートメントは、SQS アクセスポリシーまたは IAM ポリシーのいずれかで必要です。
注: SQS アクセスポリシーまたは IAM ポリシーのいずれかが明示的にアクセスを許可し、他のポリシーで明示的にアクセスを拒否した場合、キューへのアクセスは拒否されます。
| | |
---|
IAM ユーザーポリシー | SQS アクセスポリシー | 結果 |
許可 | 許可 | 許可 |
許可 | 許可も拒否もしない | 許可 |
許可 | 拒否 | 拒否 |
許可も拒否もしない | 許可 | 許可 |
許可も拒否もしない | 許可も拒否もしない | 暗黙的な拒否 |
許可も拒否もしない | 拒否 | 拒否 |
拒否 | 許可 | 拒否 |
拒否 | 許可も拒否もしない | 拒否 |
拒否 | 拒否 | 拒否 |
別のアカウント
SQS アクセスポリシーと IAM ポリシーの両方で、アクセスを許可するステートメントが必要です。
| | |
---|
IAM ユーザーポリシー | SQS アクセスポリシー | 結果 |
許可 | 許可 | 許可 |
許可 | 許可も拒否もしない | 暗黙的な拒否 |
許可 | 拒否 | 拒否 |
許可も拒否もしない | 許可 | 暗黙的な拒否 |
許可も拒否もしない | 許可も拒否もしない | 暗黙的な拒否 |
許可も拒否もしない | 拒否 | 拒否 |
拒否 | 許可 | 拒否 |
拒否 | 許可も拒否もしない | 拒否 |
拒否 | 拒否 | 拒否 |
ポリシーステートメントの例
次のポリシー例は、SQS キューのクロスアカウントアクセスを許可するために IAM ポリシーと SQS キューアクセスポリシーで設定する必要があるアクセス許可を示しています。
最初のポリシーは、リソース arn:aws:sqs:us-east-1:123456789012:queue_1 にメッセージを送信するアクセス許可を username1 に付与します。
2 つ目のポリシーでは、username1 がキューにメッセージを送信することを許可します。
これらのポリシーの詳細については、「IAM ポリシータイプ: いつどのように使用するか」を参照してください。
username1 の IAM ポリシーステートメントの例
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
}]
}
queue_1 の SQS リソースポリシーステートメントの例
{
"Version": "2012-10-17",
"Id": "Queue1_Policy",
"Statement": [{
"Sid":"Queue1_AllActions",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/username1"
]
},
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
}]
}