本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义 Amazon SQS 访问策略语言示例
以下是典型的 Amazon SQS 访问策略示例。
示例 1:向一个账户授予权限
以下示例Amazon 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 账户在特定时间段内访问您的账户拥有的队列。必须编写此策略并使用以下命令将其上传到 Amazon SQSSetQueueAttributes行动是因为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 实例的请求提供权限
以下示例Amazon SQS 策略允许访问来自 Amazon EC2 实例的请求。此示例根据“示例 2:向一个或多个账户授权”示例编写:它将访问时间限制在 2009 年 6 月 30 日中午 12 点 (UTC) 之前,将访问 IP 的范围限制在 203.0.113.0/24。必须编写此策略并使用以下命令将其上传到 Amazon SQSSetQueueAttributes行动是因为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 账户. 必须编写此策略并使用以下命令将其上传到 Amazon SQSSetQueueAttributes行动是因为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 终端节点,则拒绝访问
以下示例 Amazon SQS 策略将限制为queue1: 111122223333 可以执行SendMessage和ReceiveMessage操作(仅限 VPC 终端节点 ID 操作)vpce-1a2b3c4d(使用指定aws:sourceVpce条件)。有关更多信息,请参阅 Amazon Virtual Private Cloud S 的Amazon SQS 的Amaz。
-
aws:sourceVpce条件不需要 VPC 终端节点资源的 ARN,而只需要 VPC 终端节点 ID。 -
您可以修改以下示例,通过拒绝所有 Amazon SQS 操作,将所有操作限制到特定 VPC 终端节点 (
sqs:*)在第二个语句中。但是,此类策略声明将规定所有操作(包括修改队列权限所需的管理操作)必须通过在策略中定义的特定 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" } } } ] }