自定义 Amazon SQS 访问策略语言示例 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自定义 Amazon SQS 访问策略语言示例

以下是典型的 Amazon SQS 访问策略示例。

示例 1:为一个账户授予权限

以下是亚马逊SQS政策给出的示例 Amazon Web Services 账户 111122223333 向所有者发送和接收的许可 queue2 Amazon Web Services 账户 444455556666。

{ "Version": "2012-10-17", "Id": "UseCase1", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2" }] }

示例 2:对一个或多个账户授予权限

以下示例 Amazon SQS 政策给出了一个或多个示例 Amazon Web Services 账户 访问您的账户在特定时间段内拥有的队列。有必要编写此政策并SQS使用SetQueueAttributes操作将其上传到亚马逊,因为该AddPermission操作不允许在授予队列访问权限时指定时间限制。

{ "Version": "2012-10-17", "Id": "UseCase2", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333", "444455556666" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2", "Condition": { "DateLessThan": { "AWS:CurrentTime": "2009-06-30T12:00Z" } } }] }

示例 3:向来自 Amazon EC2 实例的请求授予权限

以下示例亚马逊SQS策略允许访问来自亚马逊EC2实例的请求。此示例以 “示例 2:对一个或多个账户授予权限” 示例为基础:它将访问限制在 2009 年 6 月 30 日中午 12 点之前 (UTC),它限制了对 IP 范围的访问。203.0.113.0/24有必要编写此政策并SQS使用SetQueueAttributes操作将其上传到 Amazon,因为该AddPermission操作不允许在授予队列访问权限时指定 IP 地址限制。

{ "Version": "2012-10-17", "Id": "UseCase3", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2", "Condition": { "DateLessThan": { "AWS:CurrentTime": "2009-06-30T12:00Z" }, "IpAddress": { "AWS:SourceIp": "203.0.113.0/24" } } }] }

示例 4:拒绝特定账户的访问

以下示例 Amazon SQS 政策拒绝特定的 Amazon Web Services 账户 访问您的队列。此示例以 “示例 1:为一个账户授予权限” 示例为基础:它拒绝访问指定的 Amazon Web Services 账户。 有必要编写此策略并SQS使用SetQueueAttributes操作将其上传到 Amazon,因为该AddPermission操作不允许拒绝访问队列(它只允许向队列授予访问权限)。

{ "Version": "2012-10-17", "Id": "UseCase4", "Statement" : [{ "Sid": "1", "Effect": "Deny", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2" }] }

示例 5:如果访问不是来自VPC终端节点,则拒绝访问

以下示例亚马逊SQS政策限制访问权限queue1:111122223333 只能通过VPC终端节点 IDvpce-1a2b3c4d(使用条件指定)执行SendMessageReceiveMessage操作。aws:sourceVpce有关更多信息,请参阅 适用于亚马逊的亚马逊 Virtual Private Cloud 终端节点 SQS

注意
  • aws:sourceVpce条件不需要VPC终端节点资源,只需要终VPC端节点 ID。ARN

  • 您可以修改以下示例,通过拒绝第二条语句中的所有 Amazon SQS 操作 (sqs:*),将所有操作限制在特定的VPC终端节点上。但是,这样的策略声明将规定所有操作(包括修改队列权限所需的管理操作)都必须通过策略中定义的特定VPC端点进行,这可能会阻止用户将来修改队列权限。

{ "Version": "2012-10-17", "Id": "UseCase5", "Statement": [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:111122223333:queue1" }, { "Sid": "2", "Effect": "Deny", "Principal": "*", "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:111122223333:queue1", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ] }