为了隔离恶意攻击,我想限制我的 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 队列发送消息