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

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

在 Amazon 中管理访问权限概述 SQS

每个 Amazon 资源都归人所有 Amazon Web Services 账户,创建或访问资源的权限受权限策略的约束。账户管理员可以将权限策略附加到IAM身份(用户、群组和角色),某些服务(例如 AmazonSQS)也支持将权限策略附加到资源。

注意

账户管理员(或管理员用户)是具有管理权限的用户。有关更多信息,请参阅《IAM用户指南》中的IAM最佳实践

在授予权限时,由您指定哪些用户获得权限,获得对哪些资源的权限,以及您允许对这些资源执行哪些具体操作。

Amazon Simple Queue Service 资源和操作

在 Amazon 中SQS,唯一的资源是队列。在策略中,使用 Amazon 资源名称 (ARN) 来标识该政策适用的资源。以下资源具有与之ARN关联的唯一资源:

资源类型 ARN格式
队列 arn:aws:sqs:region:account_id:queue_name

以下是队列ARN格式的示例:

  • ARN对于在美国东部(俄亥俄州)my_queue地区命名的队列,属于 Amazon 账户 123456789012:

    arn:aws:sqs:us-east-2:123456789012:my_queue
  • ARN对于my_queue在 Amazon SQS 支持的每个不同区域中命名的队列:

    arn:aws:sqs:*:123456789012:my_queue
  • 使用*?作为队列名称通配符的。ARN在以下示例中,ARN匹配所有前缀为:的my_prefix_队列

    arn:aws:sqs:*:123456789012:my_prefix_*

您可以通过调用GetQueueAttributes操作来获取现有队列的ARN值。该QueueArn属性的值是队ARN列的。有关的更多信息ARNs,请参阅《IAM用户指南IAMARNs中的。

Amazon SQS 提供了一组与队列资源配合使用的操作。有关更多信息,请参阅 Amazon SQS API 权限:操作和资源参考

了解资源所有权

Amazon Web Services 账户 拥有在账户中创建的资源,无论谁创建了这些资源。具体而言,资源所有者是 Amazon Web Services 账户 对资源创建请求进行身份验证的委托人实体(即根账户、用户或IAM角色)。以下示例说明了它的工作原理:

  • 如果您使用您的 Amazon Web Services 账户 根账户证书创建亚马逊SQS队列,则您 Amazon Web Services 账户 就是该资源的所有者(在亚马逊中SQS,资源是亚马逊队SQS列)。

  • 如果您在中创建用户 Amazon Web Services 账户 并向该用户授予创建队列的权限,则该用户可以创建队列。但是,该用户所属的 Amazon Web Services 账户 是此队列资源的所有者。

  • 如果您在中创建 Amazon Web Services 账户 具有创建 Amazon SQS 队列权限的IAM角色,则任何能够担任该角色的人都可以创建队列。您的 Amazon Web Services 账户 (角色所属的)拥有队列资源。

管理对 资源的访问

权限策略描述了授予给账户的权限。下一节介绍创建权限策略时的可用选项。

注意

本节讨论如何IAM在 Amazon 环境中使用SQS。它不提供有关IAM服务的详细信息。有关完整IAM文档,请参阅什么是IAM? 在《IAM用户指南》中。有关IAM策略语法和描述的信息,请参阅IAM用户指南中的Amazon IAM策略参考

附加到IAM身份的策略称为基于身份的策略(IAM策略),附加到资源的策略称为基于资源的策略。

基于身份的策略

向您的用户授予访问您的 Amazon SQS 队列权限的方法有两种:使用亚马逊SQS策略系统和使用IAM策略系统。您可以使用任一系统或这两种系统来将策略附加到用户或角色。在大多数情况下,使用任一系统都能获得相同的结果。例如,您可以执行以下操作:

  • 将@@ 权限策略附加到您账户中的用户或群组-要向用户授予创建 Amazon SQS 队列的权限,请将权限策略附加到该用户所属的用户或群组。

  • 将@@ 权限策略附加到其他用户中 Amazon Web Services 账户-要向用户授予创建亚马逊SQS队列的权限,请将亚马逊SQS权限策略附加到其他用户中 Amazon Web Services 账户。

    跨账户权限不能应用于以下操作:

  • 向角色附加权限策略(授予跨账户权限)-要授予跨账户权限,请将基于身份的权限策略附加到角色。IAM例如, Amazon Web Services 账户 A 管理员可以创建一个角色来向 Amazon Web Services 账户 B(或 Amazon 服务)授予跨账户权限,如下所示:

    • 账户 A 管理员创建一个IAM角色并向该角色附加权限策略(该策略授予账户 A 中资源的权限)。

    • 账户 A 管理员向将账户 B 标识为能够代入该角色的主体的角色附加信任策略。

    • 账户 B 管理员向账户 B 中的任何用户委派代入该角色的权限。这将允许账户 B 中的用户创建或访问账户 A 中的队列。

      注意

      如果要向 Amazon 服务授予担任该角色的权限,则信任策略中的委托人也可以是 Amazon 服务委托人。

有关使用委派权限IAM的更多信息,请参阅《IAM用户指南》中的访问管理

虽然 Amazon SQS 使用IAM策略,但它有自己的策略基础架构。您可以使用带有队列的 Amazon SQS 策略来指定哪些 Amazon 账户有权访问队列。您可以指定访问类型和条件(例如,条件是如果请求早于 2010 年 12 月 31 日,即授予使用 SendMessageReceiveMessage 的权限)。您可以授予权限的具体操作是 Amazon SQS 操作总列表的子集。当您编写亚马逊SQS政策并指定 “*允许所有亚马逊SQS操作” 时,这意味着用户可以执行此子集中的所有操作。

下图说明了其中一项基本的Amazon SQS 政策的概念,该政策涵盖了操作的子集。该策略适用于queue_xyz,并授予 Amazon 账户 1 和 Amazon 账户 2 在指定队列中使用任何允许的操作的权限。

注意

策略中的资源指定为123456789012/queue_xyz,其中123456789012是拥有队列的账户的账户 ID。 Amazon

一项涵盖操作子集的 Amazon SQS 政策

随着用户IAMAmazon 资源名称 (ARNs) 的引入和概念,SQS政策发生了一些变化。以下示意图和表格描述了这些变化。

IAM并将亚马逊资源名称添加到亚马逊SQS政策中。

Number one in the diagram. 有关向不同账户中的用户授予权限的信息,请参阅IAM用户指南中的教程:使用IAM角色委派跨 Amazon 账户访问权限。

Number two in the diagram. * 中包含的操作子集已扩展。有关允许的操作的列表,请参阅Amazon SQS API 权限:操作和资源参考

Number three in the diagram. 您可以使用 Amazon 资源名称 (ARN) 来指定资源,这是在IAM策略中指定资源的标准方法。有关 Amazon SQS 队列ARN格式的信息,请参阅Amazon Simple Queue Service 资源和操作

例如,根据上图中的 Amazon SQS 政策,任何拥有 Amazon 账户 1 或 Amazon 账户 2 安全证书的人都可以访问queue_xyz。此外,您自己的 Amazon 账户(ID 为 123456789012)中的用户 Bob 和 Susan 也可以访问该队列。

在引入之前IAM,Amazon SQS 会自动让队列的创建者完全控制队列(即访问该队列上所有可能的亚马逊SQS操作)。现在,除非创建者使用 Amazon 安全凭证,否则上述情况将不再出现。任何有权创建队列的用户还必须有权使用其他 Amazon SQS 操作才能对创建的队列执行任何操作。

以下示例策略允许用户使用所有 Amazon SQS 操作,但仅限于名称以文字字符串为前缀的队列。bob_queue_

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:*", "Resource": "arn:aws:sqs:*:123456789012:bob_queue_*" }] }

有关更多信息在 Amazon 上使用政策 SQS,请参阅用户指南中的和身份(用户、组和角色)。IAM

指定策略元素:操作、效果、资源和主体

对于每种 Amazon Simple Queue Service 资源,该服务都定义一组操作。为了授予这些操作的权限,Amazon SQS 定义了一组您可以在策略中指定的操作。

注意

执行一个 操作可能需要多个操作的权限。在授予特定操作的权限时,您也可以标识允许或拒绝对其执行操作的资源。

以下是最基本的策略元素:

  • 资源-在策略中,您可以使用 Amazon 资源名称 (ARN) 来标识该政策适用的资源。

  • 操作 - 您可以使用操作关键字标识要允许或拒绝的资源操作。例如,sqs:CreateQueue 权限允许用户执行 Amazon Simple Queue Service CreateQueue 操作。

  • 效果:您可以指定当用户请求特定操作(可以是允许或拒绝)时的效果。如果您没有显式授予对资源的访问权限,则隐式拒绝访问。您也可明确拒绝对资源的访问,这样可确保用户无法访问该资源,即使有其他策略授予了访问权限的情况下也是如此。

  • 委托人 — 在基于身份的策略(IAM策略)中,策略所关联的用户是隐式委托人。对于基于资源的策略,您可以指定要接收权限的用户、帐户、服务或其他实体(仅适用于基于资源的策略)。

要了解有关 Amazon SQS 政策语法和描述的更多信息,请参阅IAM用户指南中的Amazon IAM政策参考

有关所有 Amazon Simple Queue Service 操作及其适用资源的表格,请参阅 Amazon SQS API 权限:操作和资源参考