為隔離惡意攻擊,我想為 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 評估邏輯。如果任一陳述式為 true,則將允許請求。
如需有關條件評估邏輯的詳細資訊,請參閱建立具有多個索引鍵或值的條件。
相關資訊
教學課程: 從 Amazon Virtual Private Cloud 傳送訊息至 Amazon SQS 佇列