SQS アクセスポリシーを更新して最小特権アクセスを適用する方法を教えてください。

所要時間1分
0

悪意のある攻撃を隔離するために、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 キューにメッセージを送信する

AWS公式
AWS公式更新しました 2年前