如何更新我的 SQS 存取政策以套用最低權限存取?

上次更新日期:2022 年 8 月 12 日

為了隔絕惡意攻擊,我想針對我的 Amazon Simple Queue Service (Amazon SQS) 佇列限制對我的 VPC 端點的存取。如何拒絕來自其他 VPC 端點的存取,並限制 AWS Lambda 函數事件來源許可?

解決方案

若要保障 SQS 佇列的安全,應將最低權限原則套用至 SQS 存取政策。您可以藉由僅允許來自指定 VPC 端點以及具有事件來源映射的指定 Lambda 函數的請求,來隔絕佇列中的任何惡意攻擊。您可以實施以下 SQS 存取政策來保障佇列安全並隔絕攻擊:

{
  "Version": "2008-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 函數的許可。

政策中的 ArnNotEqualsStringNotEquals 條件使用 OR 評估邏輯。如果任何一個陳述式為 True,則將會允許請求。

如需有關條件評估邏輯的詳細資訊,請參閲建立具有多個索引鍵或值的條件


此文章是否有幫助?


您是否需要帳單或技術支援?