説明
SQS キューポリシーで Principal: "*" と sqs:* のような広い操作権限を組み合わせると、意図しない主体がキューを利用できる可能性があります。実際のアクセスは、条件、明示的な拒否、適用される他の権限制御によって変わります。SQS の一部の管理操作は、クロスアカウントの権限委任に対応していません。
メッセージのプロデューサーとコンシューマーを区別し、それぞれに必要な権限だけを付与してください。公開利用が不要なキューはアクセス範囲を制限する必要があります。
想定される影響
- メッセージ送信権限が悪用されると、偽造メッセージや大量の要求で後続処理が妨げられるおそれがあります。
- メッセージの受信・削除権限も適用される場合、情報漏えいや未処理メッセージの消失につながる可能性があります。
対処方法
Principalには必要なアカウント、ロール、サービスだけを指定し、操作をプロデューサーとコンシューマーの用途に合わせて制限してください。Resourceを対象キューの ARN に限定し、サービス連携には対応する送信元条件を追加してください。- 既存のキューポリシーと他の許可を確認して不要な権限を削除し、正常な送受信と未承認のアクセスの拒否を試験してください。
例
アカウント ID とロール ARN を実際の承認済みの値に置き換えてください。ロールとアプリケーションの構成は省略しています。
変更前
yaml
- name: SQS 큐 생성
community.aws.sqs_queue:
name: my-queue1
region: ap-southeast-1
policy:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: "sqs:*"
Resource: "*"
Principal: "*"
条件を付けずに、ワイルドカードプリンシパルに広い SQS 権限を許可します。業務に必要な主体と操作に絞ってください。
変更後
yaml
- name: SQS 큐 생성
community.aws.sqs_queue:
name: my-queue1
region: ap-southeast-1
policy:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: sqs:SendMessage
Resource: arn:aws:sqs:ap-southeast-1:123456789012:my-queue1
Principal:
AWS: arn:aws:iam::123456789012:role/app-producer-role
このステートメントは、指定したキューへのメッセージ送信だけを対象ロールに許可します。ロールの権限全体や他のポリシーを制限するものではないため、併せて確認してください。