将基于身份的策略用于 Amazon SQS - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

将基于身份的策略用于 Amazon SQS

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

重要

我们建议您首先阅读以下介绍性主题,这些主题讲解了管理 Amazon Simple Queue Service 资源访问的基本概念和选项。有关更多信息,请参阅管理 Amazon SQS 中的访问概述

除外,所有 Amazon SQS 操作均支持资源级权限。ListQueues有关更多信息,请参阅Amazon SQS API 权限:操作和资源参考

使用Amazon SQS 和 IAM 政策

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

例如,下图显示了 IAM 策略和与之等效的 Amazon SQS 策略。IAM 政策授予对您Amazon账户queue_xyz中调用的队列执行 Amazon SQSReceiveMessageSendMessage操作的权限,该策略附加到名为 Bob 和 Susan 的用户(Bob 和 Susan 拥有政策中规定的权限)。此 Amazon SQS 政策还授予 Bob 和 Susan 对同一队列SendMessage执行ReceiveMessage和操作的权限。

注意

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

IAM 和 Amazon SQS 策略之间有一项主要差别:通过 Amazon SQS 策略系统,您可以向其他Amazon账户授予权限,而 IAM 却不可以。

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

  • 在第一个示例中,Bob 具有适用于其账户的 IAM 策略和 Amazon SQS 策略。IAM 政策授予他的账户对同一队列ReceiveMessage执行操作的权限queue_xyz,而 Amazon SQS 策略则授予他的账户对同一队列SendMessage执行操作的权限。下图阐明了这一概念。

    如果 Bob 向发送ReceiveMessage请求queue_xyz,则 IAM 策略允许该操作。如果 Bob 向发送SendMessage请求queue_xyz,则 Amazon SQS 策略允许该操作。

  • 在第二个示例中,Bob 滥用他对 queue_xyz 的访问权限,因此有必要删除他对该队列的所有访问权限。最简单的方法是添加一个策略,拒绝他访问该队列的所有操作。此策略会覆盖另外两个策略,因为显式 deny 始终覆盖 allow。有关策略评估逻辑的更多信息,请参阅将自定义策略与 Amazon SQS 访问策略语言一起使用。下图阐明了这一概念。

    您还可以向 Amazon SQS 策略添加额外的声明,拒绝 Bob 对队列进行任何类型的访问。它与添加拒绝 Bob 访问队列的 IAM 策略具有相同的效果。有关涉及 Amazon SQS 操作和资源的策略示例,请参阅Amazon SQS 策略的基本示例。有关编写 Amazon SQS 策略的更多信息,请参阅将自定义策略与 Amazon SQS 访问策略语言一起使用

使用 Amazon SQS 控制台所需的权限

想要使用 Amazon SQS 控制台的用户必须拥有最低权限才能使用用户的 Amazon SQS 队列Amazon Web Services 账户。例如,用户必须具有调用 ListQueues 操作的权限才能列出队列,或者必须具有调用 CreateQueue 操作的权限才能创建队列。除了 Amazon SQS 权限以为 Amazon SQS 队列订阅 Amazon SNS 主题时,控制台还需要执行 Amazon SNS 操作的权限。

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

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