拒否キューポリシーを使用するときに、Amazon SQS キューアクセスの問題をトラブルシューティングして防止するにはどうすればよいですか?

最終更新日: 2022 年 5 月 19 日

拒否キューポリシーが原因で、Amazon Simple Queue Service (Amazon SQS) キューにアクセスできなくなっています。Amazon SQS キューへのアクセスを取り戻すにはどうすればよいですか。また、アクセスの喪失を防ぐにはどうすればよいですか?

簡単な説明

拒否キューポリシーが原因で Amazon SQS キューにアクセスできなくなった場合は、AWS アカウントのルートユーザー認証情報を使用してキューにアクセスすることができます。または、該当する場合は、ポリシーから除外されたエンティティを使用してキューにアクセスしてみてください。

この記事では、拒否キューポリシーを使用するときに Amazon SQS キューへのアクセス損失を防ぐために従うべきベストプラクティスも紹介します。

次の拒否ポリシー例では、すべての Amazon SQS キューアクションへのすべての AWS Identity and Access Management (IAM) エンティティのアクセスを拒否します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "deny-sqs-actions",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "SQS:*",
      "Resource": "queueName"
    }
  ]
}

解決方法

Amazon SQS キューアクセスの問題をトラブルシューティングする

Amazon SQS アクセスポリシーで拒否ポリシーを使用しているときに Amazon SQS キューにアクセスできない場合は、次の手順を試してください。

  1. ルートユーザーの認証情報を使用してキューにアクセスします。アカウント所有者のルートユーザーの認証情報は、アカウント内のすべてのリソースへのフルアクセスを許可します。これには、Amazon SQS キューに関連付けられている [すべて拒否] リソースポリシーの削除が含まれます。
  2. 拒否ポリシーが特定のエンティティに制限されている場合は、ポリシーから除外されているエンティティへのアクセスを試みます。
    注意: 除外されたエンティティに、キューへのアクセスに必要な許可があることを確認します。

ルートユーザーの認証情報を使用できない場合、またはどのエンティティが拒否ポリシーから除外されたかわからない場合は、AWS Support にお問い合わせください。サポートケースを作成し、次の情報を含めます。

  1. ルートユーザーの認証情報を使用して Amazon SQS キューにアクセスしようとしたことを確認します。ルートユーザーの認証情報を使用できない理由、またはルートユーザーの認証情報を使用しても問題が解決しない理由を記載してください。
  2. 自分がキューの所有者であることを確認します。
  3. なぜキューアクセスが必要かについて詳細な理由を記載してください。

Amazon SQS キューへのアクセスの喪失を避ける

Amazon SQS キューへのアクセスの喪失を防ぐには、キューアクセスポリシーで拒否ポリシーを使用するときに次のベストプラクティスに従ってください。

  1. ルートユーザーアカウントを明示的拒否しないでください。キューへのアクセスを完全に喪失する可能性があります。
  2. 拒否ポリシーと一緒に許可ポリシーを使用して、キューにアクセスできるエンティティがあることを確認します。
    注意:拒否ポリシーは、許可ポリシー拒否ポリシーの条件と一致しない場合を除き、許可ポリシーを上書きできます。詳細については、「認可」を参照してください。

許可ステートメントと拒否ステートメントを含むポリシーの例:

{
   "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": "queueName"
   }, {
      "Sid":"Queue1_Deny_Access",
      "Effect": "Deny",
      “NotPrincipal": {"AWS": "arn:aws:iam::111122223333:user/User1"},
      "Action": "sqs:*",
      "Resource": "queueName"
   }]
}

このポリシーの例では、次のことが達成されます。

  • 特定の IAM ユーザー (User1) に、指定された Amazon SQS キューのすべての Amazon SQS アクションへのアクセスを許可します。
  • 指定された IAM ユーザー (User1) を除くすべてのプリンシパルへのキューアクセスを拒否します。

拒否ポリシーの「NotPrincipal」は、指定されたプリンシパルを除外します。ただし、Allow ステートメントは、除外されたプリンシパルにアクセス許可を付与するためにも必要です。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?