本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SQS 的 IAM 策略的基本示例
以下示例介绍了 Amazon SQS 权限策略。
为 Amazon EC2 Auto Scaling 配置生命周期挂钩时,您无需编写策略向 Amazon SQS 队列发送消息。有关更多信息,请参阅 。Amazon EC2 Auto Scaling 生命周期挂钩中的适用于 Linux 实例的 Amazon EC2 用户指南.
示例 1:允许用户创建队列
在以下示例中,我们为 Bob 创建了一条策略,允许他访问所有 Amazon SQS 操作,但是仅限于名称前缀为文本字符串的队列。alice_queue_
.
Amazon SQS 不会自动向队列创建者授予使用该队列的权限。因此,除了以下操作之外,我们还必须向 Bob 显式授予使用 Amazon SQS 操作的权限。CreateQueue
IAM 策略中的操作。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:*", "Resource": "arn:aws:sqs:*:123456789012:alice_queue_*" }] }
示例 2:允许开发人员向共享队列写入消息
在以下示例中,我们为开发人员创建了一个组,并挂载了一条策略,允许该组使用 Amazon SQS。SendMessage
操作,但仅限于属于指定的队列Amazon Web Services 账户而且被命名MyCompanyQueue
.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:123456789012:MyCompanyQueue" }] }
您可以使用 *
(而不是 SendMessage
) 向委托人授予对共享队列执行以下操作的权限:ChangeMessageVisibility
、DeleteMessage
、GetQueueAttributes
、GetQueueUrl
、ReceiveMessage
和 SendMessage
。
虽然*
包含其他权限类型提供的访问权限,Amazon SQS 会单独考虑这些权限。例如,可以向用户同时授予 *
和 SendMessage
权限,即使 *
包含 SendMessage
提供的访问权限,也是如此。
此概念在您删除权限时也适用。如果委托人只有 *
权限,则请求删除 SendMessage
权限不会 为委托人留下除此以外的一切 权限。相反,该请求不起作用,因为委托人不具有显式 SendMessage
权限。要只为委托人留下 ReceiveMessage
权限,请先添加 ReceiveMessage
权限,然后删除 *
权限。
示例 3:允许管理人员获取队列的一般大小
在以下示例中,我们为管理人员创建了一个组,并挂载了一条策略,允许该组使用 Amazon SQS。GetQueueAttributes
对属于指定的所有队列进行操作Amazonaccount.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:GetQueueAttributes", "Resource": "*" }] }
示例 4:允许合作伙伴向指定队列发送消息
您可以使用 Amazon SQS 策略或 IAM 策略完成此任务。如果你的伴侣有Amazon Web Services 账户,这样会比使用 Amazon SQS 策略简单。但是,合作伙伴公司中拥有 Amazon 安全凭证的任何用户都可以向该队列发送消息。如果需要仅向特定用户或应用程序授予访问权限,则必须像对待公司内部的用户那样对待合作伙伴,使用 IAM 策略而不是 Amazon SQS 策略。
本示例将执行以下操作:
-
创建一个名为 WidgetCo 代表合作伙伴公司。
-
为合作伙伴公司中需要访问权限的特定用户或应用程序创建用户。
-
将 用户添加到 组。
-
挂载一条策略,仅允许该组对名为
SendMessage
的队列执行WidgetPartnerQueue
操作。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:123456789012:WidgetPartnerQueue" }] }