在 Amazon 上使用政策 SQS - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon 上使用政策 SQS

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

重要

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

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

使用亚马逊SQS和IAM政策

您可以通过两种方式向您的用户授予对您的亚马逊SQS资源的访问权限:使用亚马逊SQS策略系统(基于资源的策略)和使用IAM策略系统(基于身份的策略)。您可以使用一种或两种方法,但ListQueues操作除外,这是一种只能在IAM策略中设置的区域权限。

例如,下图显示了一项IAM策略和与之相当的 Amazon SQS 政策。该IAM政策向亚马逊授予权限SQSReceiveMessage和对您的 Amazon 账户queue_xyz中调用的队列进行SendMessage操作,并且该政策附加到名为 Bob 和 Susan 的用户(Bob 和 Susan 拥有政策中规定的权限)。亚马逊的这项SQS政策还赋予了 Bob 和 Susan 对同一个队列SendMessage执行ReceiveMessage和操作的权利。

注意

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

比较IAM政策与与之相当的 Amazon SQS 政策的示意图。该IAM政策向亚马逊授予权限SQSReceiveMessage和对您的 Amazon 账户queue_xyz中调用的队列进行SendMessage操作,并且该政策附加到名为 Bob 和 Susan 的用户(Bob 和 Susan 拥有政策中规定的权限)。亚马逊的这项SQS政策还赋予了 Bob 和 Susan 对同一个队列SendMessage执行ReceiveMessage和操作的权利。

IAM与亚马逊政策之间有一个主要区别:亚马逊SQSSQS政策系统允许您向其他账户授予权限,但IAM不允许您向其他 Amazon 账户授予权限。

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

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

    将策略的组成部分与 Amazon IAM SQS 政策的组成部分进行比较的示意图。在第一个示例中,Bob 有适用于其账户的IAMSQS政策和 Amazon 政策。该IAM政策向他的账户授予对同一队列ReceiveMessage执行操作的权限queue_xyz,而亚马逊SQS政策则允许他的账户在同一队列上SendMessage执行操作。

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

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

    该图显示了使用 Amazon IAM 政策覆盖的SQS政策。Bob 滥用他对 queue_xyz 的访问权限,因此有必要删除他对该队列的所有访问权限。最简单的方法是添加一个策略,拒绝他访问该队列的所有操作。此策略会覆盖另外两个策略,因为显式 deny 始终覆盖 allow。

    您还可以在 Amazon SQS 政策中添加其他声明,拒绝 Bob 对队列进行任何类型的访问。添加一条 IAM 策略拒绝 Bob 访问该队列也具有同样的效果。有关涵盖 Amazon SQS 操作和资源的政策示例,请参阅亚马逊SQS政策的基本示例。有关编写 Amazon SQS 政策的更多信息,请参阅使用带有 Amazon SQS 访问策略语言的自定义策略

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

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

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

对于仅调用 Amazon CLI 或 Amazon SQS 操作的用户,您无需为其设置最低控制台权限。