如何更新我的 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 函數的許可。
政策中的 ArnNotEquals 和 StringNotEquals 條件使用 OR 評估邏輯。如果任何一個陳述式為 True,則將會允許請求。
如需有關條件評估邏輯的詳細資訊,請參閲建立具有多個索引鍵或值的條件。