如何更新我的 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 函数的权限。

策略中的 ArnNotEqualsStringNotEquals 条件使用 OR 评估逻辑。如果任一陈述正确,则请求将被允许。

有关条件评估逻辑的详细信息,请参阅创建包含多个键或值的条件


相关信息

教程: 从 Amazon Virtual Private Cloud 向 Amazon SQS 队列发送消息

AWS 官方
AWS 官方已更新 2 年前