悪意のある攻撃を隔離するために、Amazon Simple Queue Service (Amazon SQS) キューの VPC エンドポイントへのアクセスを制限したいと考えています。他の VPC エンドポイントからのアクセスを拒否し、AWS Lambda 関数イベントソースの権限を制限したい。
解決方法
SQS キューを保護するには、SQS アクセスポリシーに最小特権の原則を適用してください。指定した VPC エンドポイントとイベントソースマッピング付きの指定された Lambda 関数からのリクエストのみを許可することで、キュー内の悪意のある攻撃を隔離できます。次の SQS アクセスポリシーを実装することで、キューを保護し、攻撃を隔離できます。
{
"Version": "2012-10-17",
"Id": "default_policy_ID",
"Statement": [
{
"Sid": "owner_statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:XXXXXXX:root"
},
"Action": "SQS:*",
"Resource": "arn:aws:sqs:us-east-1:XXXXXXXX:test.fifo"
},
{
"Sid": "RestrictSendReceiveToVpce",
"Effect": "Deny",
"Principal": "*",
"Action": [
"sqs:SendMessage",
"sqs:ReceiveMessage",
"sqs:DeleteMessage",
"sqs:DeleteQueue",
"sqs:PurgeQueue"
],
"Resource": "arn:aws:sqs:us-east-1: XXXXXX:test.fifo",
"Condition": {
"ArnNotEquals": {
"aws:PrincipalArn": "Lambda execution role arn"
},
"StringNotEquals": {
"aws:SourceVpce": "vpce-XXXXX"
}
}
}
]
}
この SQS アクセスポリシーは次のことを行います。
- VPC エンドポイントがリクエスト時に提供された aws: SourceVpce でない場合、ポリシーは SQS キューに送信されるクライアントメッセージを拒否します。
- Lambda 関数の実行ロールが PrincipalARN でない場合、ポリシーは Lambda 関数の権限を拒否します。
ポリシー内の ArnNotEquals 条件と StringNotEquals 条件は OR 評価ロジックを使用しています。いずれかのステートメントが当てはまる場合、リクエストは許可されます。
条件の評価ロジックの詳細については、複数のキーまたは値を含む条件の作成を参照してください。
関連情報
チュートリアル: Amazon Virtual Private Cloud から Amazon SQS キューにメッセージを送信する