自定义 Amazon SQS Access Policy Language 示例 - Amazon Simple Queue Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

自定义 Amazon SQS Access Policy Language 示例

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

示例 #1 授予一个帐户权限

以下示例 Amazon SQS 策略为 AWS 账户 111122223333 授予权限,允许从 AWS 账户 444455556666 所拥有的 queue2 发送和接收请求。

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

示例 2 授予一个或多个帐户权限

以下示例 Amazon SQS 策略允许一个或多个 AWS 账户在特定时间段内访问您的账户所拥有的队列。需要编写该策略并使用 SetQueueAttributes 操作将其上传至 Amazon SQS,因为 AddPermission 操作不允许在授予对队列的访问权限时指定时间限制。

{ "Version": "2012-10-17", "Id": "UseCase2", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333", "444455556666" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws-cn: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 SQS 使用 SetQueueAttributes 因为 AddPermission 操作不允许在授权访问队列时指定IP地址限制。

{ "Version": "2012-10-17", "Id": "UseCase3", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws-cn: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 策略拒绝特定 AWS 账户对队列的访问。此示例根据“示例 #1 授予一个帐户权限”示例编写:它拒绝指定 AWS 账户的访问。需要编写该策略并使用 SetQueueAttributes 操作将其上传至 Amazon SQS,因为 AddPermission 操作不允许拒绝访问某一队列 (它仅允许对队列授予访问权限)。

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

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

以下示例 Amazon SQS 策略限制对 queue1 的访问:111122223333 只能从 VPC 终端节点 ID vpce-1a2b3c4d 执行 SendMessageReceiveMessage 操作(使用 aws:sourceVpce 条件指定)。有关更多信息,请参阅 Amazon SQS 的 Amazon Virtual Private Cloud 终端节点。)

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

  • 您可以通过在第二个语句中拒绝所有 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-cn::sqs:us-east-2:111122223333:queue1" }, { "Sid": "2", "Effect": "Deny", "Principal": "*", "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws-cn::sqs:us-east-2:111122223333:queue1", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ] }