Using identity-based policies with Amazon SQS - Amazon Simple Queue Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Using identity-based policies with Amazon SQS

本主题提供基于身份的策略示例,在这些示例中,账户管理员可以向 IAM 身份(用户、组和角色)附加权限策略。

重要

我们建议您首先阅读以下介绍性主题,这些主题说明了管理对 Amazon Simple Queue Service 资源的访问的基本概念和选项。有关更多信息,请参阅 Overview of managing access in Amazon SQS。)

除了 ListQueues 之外,所有 Amazon SQS 操作都支持资源级权限。有关更多信息,请参阅 Amazon SQS API permissions: Actions and resource reference

Using Amazon SQS and IAM policies

可通过两种方式向用户授予访问 Amazon SQS 资源的权限:使用 Amazon SQS 策略系统和使用 IAM 策略系统。您可以使用其中任意一套或两套系统。在绝大部分情况下,无论采用上述哪种方式,都可以得到同样的结果。

例如,下图显示了等效的 IAM 策略和 Amazon SQS 策略。IAM 策略授权对 AWS 账户中名为 queue_xyz 的队列执行 Amazon SQS ReceiveMessageSendMessage 操作,并且该策略已附加到用户 Bob 和 Susan(Bob 和 Susan 拥有该策略中所述的权限)。此 Amazon SQS 策略还向 Bob 和 Susan 授予对同一队列进行 ReceiveMessageSendMessage 操作的权限。

注意

此示例显示了不带条件的简单策略。您可以在上述任一策略中指定特定条件,并获得同样的结果。

IAM 和 Amazon SQS 策略之间有一个主要区别:Amazon SQS 策略系统允许您向其他 AWS 账户授予权限,而 IAM 则不允许。

您可以自行决定如何综合使用上述两种系统来管理您的权限。以下示例展示这两种策略系统是如何共同运行的。

  • In the first example, Bob has both an IAM policy and an Amazon SQS policy that apply to his account. The IAM policy grants his account permission for the ReceiveMessage action on queue_xyz, whereas the Amazon SQS policy gives his account permission for the SendMessage action on the same queue. The following diagram illustrates the concept.

    If Bob sends a ReceiveMessage request to queue_xyz, the IAM policy allows the action. If Bob sends a SendMessage request to queue_xyz, the Amazon SQS policy allows the action.

  • In the second example, Bob abuses his access to queue_xyz, so it becomes necessary to remove his entire access to the queue. The easiest thing to do is to add a policy that denies him access to all actions for the queue. This policy overrides the other two because an explicit deny always overrides an allow. For more information about policy evaluation logic, see Using custom policies with the Amazon SQS Access Policy Language. The following diagram illustrates the concept.

    You can also add an additional statement to the Amazon SQS policy that denies Bob any type of access to the queue. It has the same effect as adding an IAM policy that denies Bob access to the queue. For examples of policies that cover Amazon SQS actions and resources, see Basic examples of Amazon SQS policies. For more information about writing Amazon SQS policies, see Using custom policies with the Amazon SQS Access Policy Language.

Permissions required to use the Amazon SQS console

希望使用 Amazon SQS 控制台的用户必须具有在用户的 AWS 账户中使用 Amazon SQS 队列的最小权限集。例如,用户必须具有调用 ListQueues 操作的权限才能列出队列,或者必须具有调用 CreateQueue 操作的权限才能创建队列。要将 Amazon SQS 队列订阅到 Amazon SNS 主题,则除了 Amazon SQS 权限之外,控制台还需要针对 Amazon SNS 操作的权限。

如果创建比必需的最低权限更为严格的 IAM 策略,对于附加了该 IAM 策略的用户,控制台可能无法按预期方式运行。

对于只需要调用 AWS CLI 或 Amazon SQS 操作的用户,您无需为其提供最低控制台权限。

AWS managed (predefined) policies for Amazon SQS

AWS 通过提供独立的 AWS 托管 IAM 策略处理了很多常用案例。这些 AWS 托管策略通过授予常用案例所需的权限来简化对权限的使用。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略

以下 AWS 托管策略(可将它们附加到账户中的用户)是特定于 Amazon SQS 的:

  • AmazonSQSReadOnlyAccess – Grants read-only access to Amazon SQS queues using the AWS 管理控制台.

  • AmazonSQSFullAccess – Grants full access to Amazon SQS queues using the AWS 管理控制台.

您可以在 IAM 控制台上搜索和查看可用策略。此外,您还可以创建自己的自定义 IAM 策略,以授予 Amazon SQS 操作和队列的相关权限。您可以将这些自定义策略附加到需要权限的 IAM 用户或组。