本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管理 Amazon SQS 中的访问概述
每个 AWS 资源都归某个 AWS 账户所有,创建和访问资源的权限由权限策略进行管理。账户管理员可以向不同的 IAM 身份(用户、组和角色)附加权限策略。某些服务(如 Amazon SQS)也支持向资源附加权限策略。
账户管理员 (或管理员用户) 是具有管理权限的用户。有关更多信息,请参阅 IAM 用户指南 中的 IAM 最佳实践。
在授予权限时,由您指定哪些用户获得权限,获得对哪些资源的权限,以及您允许对这些资源执行哪些具体操作。
Amazon Simple Queue Service 资源和操作
在 Amazon SQS 中,唯一的资源是队列。在策略中,可使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。以下资源具有与之关联的唯一 ARN:
资源类型 | ARN 格式 |
---|---|
Queue | arn:aws-cn:sqs: |
以下是队列的 ARN 格式的示例:
-
在美国东部(俄亥俄州)区域中,属于 AWS 账户 123456789012 的名为
my_queue
的队列的 ARN:arn:aws-cn:sqs:us-east-2:123456789012:my_queue
-
Amazon SQS 支持的每个不同区域中名为
my_queue
的队列的 ARN:arn:aws-cn:sqs:*:123456789012:my_queue
-
使用
?
或*
作为队列名称通配符的 ARN。在以下示例中,ARN 匹配前缀为my_prefix_
的所有队列:arn:aws-cn:sqs:*:123456789012:my_prefix_*
调用 GetQueueAttributes
操作可以获取现有队列的 ARN 值。QueueArn
属性的值即为队列的 ARN。有关RN的更多信息,请参阅 IAM RNs(ARNs) 在 IAM 用户指南.
Amazon SQS 提供用于处理队列资源的一组操作。有关更多信息,请参阅 Amazon SQS API权限: 操作和资源参考。)
了解资源所有权
AWS 账户对在该账户下创建的资源具有所有权,而无论创建资源的人员是谁。具体而言,资源所有者是对资源创建请求进行身份验证的委托人实体(即根账户、IAM 用户或 IAM 角色)的 AWS 账户。以下示例说明了它的工作原理:
-
如果使用 AWS 账户的根账户凭证来创建 Amazon SQS 队列,则 AWS 账户就是该资源的所有者(在 Amazon SQS 中,资源就是 Amazon SQS 队列)。
-
如果在 AWS 账户中创建 IAM 用户,并对其授予创建队列的权限,则该用户即可创建队列。但是,该用户所属的 AWS 账户是此队列资源的所有者。
-
如果在 AWS 账户中创建的 IAM 角色具有创建 Amazon SQS 队列的权限,则能够担任该角色的任何人都可以创建队列。该角色所属的 AWS 账户是此队列资源的所有者。
管理对资源的访问
甲 权限策略 描述了授予帐户的权限。以下部分说明了创建权限策略的可用选项。
本节介绍如何在 Amazon SQS 范围内使用 IAM。它不提供有关 IAM 服务的详细信息。完整版 IAM 文档,请参阅 什么是 IAM? 在 IAM 用户指南. 有关的信息 IAM 策略语法和描述,请参阅 AWS(AWS) IAM 政策参考 在 IAM 用户指南.
附加到 IAM 身份的策略称作基于身份 的策略(IAM 策略),附加到资源的策略称作基于资源 的资源。
基于身份的策略 (IAM 策略和 Amazon SQS 策略)
可通过两种方式向用户授予访问 Amazon SQS 队列的权限:使用 Amazon SQS 策略系统和使用 IAM 策略系统。您可以使用任一系统或这两种系统来将策略附加到用户或角色。在大多数情况下,使用任一系统都能获得相同的结果。例如,您可以执行以下操作:
-
将权限策略附加到账户中的用户或组 – 要授予创建 Amazon SQS 的用户权限,您可以将权限策略附加到用户或用户所属的组。
-
将权限策略附加到其他 AWS 账户中的用户 – 要向用户授予创建 Amazon SQS 队列的权限,请将 Amazon SQS 权限策略附加到其他 AWS 账户中的用户。
跨账户权限不适用于以下操作:
-
将权限策略附加到角色(授予跨账户权限) – 要授予跨账户权限,请将基于身份的权限策略附加到 IAM 角色。例如,AWS 账户 A 管理员可以创建一个角色,以向 AWS 账户 B(或 AWS 服务)授予跨账户权限,如下所述:
-
账户 A 管理员创建一个 IAM 角色,向该角色附加授权其访问账户 A 中资源的权限策略——。
-
账户 A 管理员向将账户 B 标识为能够担任该角色的委托人的角色附加信任策略。
-
账户 B 管理员向账户 B 中的任何用户委派担任该角色的权限。这将允许账户 B 中的用户创建或访问账户 A 中的队列。
注意 如果要向某项 AWS 服务授予担任该角色的权限,则信任策略中的委托人也可以是 AWS 服务委托人。
-
有关使用 IAM 委派权限的更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/access.html 中的IAM 用户指南访问权限管理。
尽管 Amazon SQS 使用 IAM 策略,但它拥有自己的策略基础架构。您可以对队列使用 Amazon SQS 策略,以指定哪些 AWS 账户拥有访问该队列的权限。您可以指定访问类型和条件
(例如,条件是如果请求早于 2010 年 12 月 31 日,即授予使用 SendMessage
和 ReceiveMessage
的权限)。您可以为其授予权限的特定操作是整个 Amazon SQS 操作列表的子集。如果编写 Amazon SQS 策略并指定 *
以“允许任何 Amazon SQS 操作”,就意味着用户可以在此子集中执行所有操作。
下图说明了这些基本 Amazon SQS 策略中涵盖操作子集的一个策略的概念。该策略用于 queue_xyz
,并且向 AWS 账户 1 和 AWS 账户 2 授予对指定队列使用任何允许的操作的权限。
该策略中的资源被指定为 123456789012/queue_xyz
,其中 123456789012
是拥有该队列的账户的 AWS 账户 ID。

随着 IAM 以及用户 和Amazon 资源名称 (ARN) 概念的推出,SQS 策略发生了一些变化。以下示意图和表格描述了这些变化。

有关向不同帐户中的用户提供权限的信息,请参阅 教程: 跨部门委派访问权限 AWS 账户使用 IAM 角色 在 IAM 用户指南.
行动的子集包括在
*
已扩展。有关允许的操作的列表,请参阅Amazon SQS API权限: 操作和资源参考。
您可以使用Amazon资源名称(ARN)来指定资源,即在 IAM 政策。有关 Amazon SQS 队列的 ARN 格式的信息,请参阅“Amazon Simple Queue Service 资源和操作”。
例如,根据 Amazon SQS 在上图中,任何拥有 AWS 帐户1或 AWS 帐户2可以访问 queue_xyz
。此外,用户Bob和Susan是您自己的 AWS 帐户(带ID 123456789012
)可以访问队列。
在推出 IAM 之前,Amazon SQS 会自动向某个队列的创建者授予对该队列的完全控制权限(即访问该队列中所有可能的 Amazon SQS 操作)。现在,除非创建者使用 AWS 安全凭证,否则上述情况将不再出现。任何有权创建队列的用户如希望对所创建的队列执行任何操作,还必须拥有使用其他 Amazon SQS 操作的权限。
下面是一个示例策略,该策略允许用户使用所有 Amazon SQS 操作,但只能对其名称的前缀为文字字符串 bob_queue_
的队列使用。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:*", "Resource": "arn:aws-cn:sqs:*:123456789012:bob_queue_*" }] }
有关详细信息,请参阅 将基于身份的策略用于 Amazon SQS、和 标识(用户、组和角色) 在 IAM 用户指南.
指定策略元素: 行动、效果、资源和原则
对于每种 Amazon Simple Queue Service 资源,该服务都定义一组操作。为授予这些操作的权限,Amazon SQS 定义一组可以在策略中指定的操作。
执行一个 操作可能需要多个操作的权限。在授予特定操作的权限时,您也可以标识允许或拒绝对其执行操作的资源。
以下是最基本的策略元素:
-
Resource – 在策略中,您可以使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。
-
Action – 您可以使用操作关键字标识要允许或拒绝的资源操作。例如,
sqs:CreateQueue
权限允许用户执行 Amazon Simple Queue ServiceCreateQueue
操作。 -
Effect – 您可以指定当用户请求特定操作(可以是允许或拒绝)时的效果—。如果您没有显式授予对资源的访问权限,则隐式拒绝访问。您也可明确拒绝对资源的访问,这样可确保用户无法访问该资源,即使有其他策略授予了访问权限的情况下也是如此。
-
Principal – 在基于身份的策略(IAM 策略)中,附加了策略的用户是隐式委托人。对于基于资源的策略,您可以指定要接收权限的用户、账户、服务或其他实体(仅适用于基于资源的策略)。
要了解 Amazon SQS 策略语法和说明的更多信息,请参阅 IAM 中的 AWS IAM 用户指南 策略参考。
有关所有 Amazon Simple Queue Service 操作及其适用资源的表格,请参阅Amazon SQS API权限: 操作和资源参考。
在策略中指定条件
当您授予权限时,可使用 Amazon SQS Access Policy Language来指定规定策略何时生效的条件。例如,您可能希望策略仅在特定日期后应用。有关以策略语言指定条件的详细信息,请参阅 条件 在 IAM 用户指南.
要表示条件,您可以使用预定义的条件键。没有特定于 Amazon SQS 的条件键。但是, AWS-可使用的宽范围条件键 Amazon SQS. 目前, Amazon SQS 仅支持中可用的条件密钥的有限子集 IAM. 请参阅Amazon SQS API权限: 操作和资源参考。