本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管理 Amazon SQS 中的权限概述
每个 Amazon 资源都归某个 Amazon Web Services 账户 账户所有,创建或访问资源的权限由权限策略进行管理。账户管理员可以向 IAM 身份(即用户、组和角色)附加权限策略,某些服务(如 Amazon SQS)也支持向资源附加权限策略。
账户管理员 (或管理员用户) 是具有管理权限的用户。有关更多信息,请参阅 IAM 用户指南中的 IAM 最佳实践。
在授予权限时,由您指定哪些用户获得权限,获得对哪些资源的权限,以及您允许对这些资源执行哪些具体操作。
Amazon Simple Queue Ser
在 Amazon SQS 中,唯一的资源是排队. 在策略中,可使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。以下资源具有与之关联的唯一 ARN:
| 资源类型 | ARN 格式 |
|---|---|
| Queue | arn:aws:sqs: |
以下是队列的 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。有关 ARN 的更多信息,请参阅IAM ARN在里面IAM 用户指南.
Amazon SQS 提供了一组处理队列资源的操作。有关更多信息,请参阅 Amazon SQS API 权限:操作和资源参考。
了解资源所有权
Amazon Web Services 账户对在该账户下创建的资源具有所有权,而无论创建资源的人员是谁。具体而言,资源所有者是对资源创建请求进行身份验证的委托人实体(即根账户、IAM 用户或 IAM 角色)的Amazon Web Services 账户。以下示例说明了它的工作原理:
-
如果您使用的 root 账户凭证Amazon Web Services 账户要创建 Amazon SQS 队列,您的Amazon Web Services 账户是资源的所有者(在 Amazon SQS 中,资源是 Amazon SQS 队列)。
-
如果您在中创建了 IAM 用户Amazon Web Services 账户并授予用户创建队列的权限,则该用户便能创建队列。但是,你的Amazon Web Services 账户(该用户所属的)拥有队列资源。
-
如果您在中创建了 IAM 角色Amazon Web Services 账户具有创建 Amazon SQS 队列的权限,能够担任该角色的任何人都可以创建队列。你的Amazon Web Services 账户(该角色所属的)拥有队列资源。
管理对资源的访问
一个权限策略描述了授予账户的权限。 下一节介绍创建权限策略时的可用选项。
附加到 IAM 身份的策略称作基于身份 的策略(IAM policy),附加到资源的策略称作基于资源 的策略。
基于身份的策略(IAM policy 和 Amazon SQS 策略)
向您的用户授予访问 Amazon SQS 队列的权限有两种方法:使用 Amazon SQS 策略系统和使用 IAM 策略系统。您可以使用任一系统或这两种系统来将策略附加到用户或角色。在大多数情况下,使用任一系统都能获得相同的结果。例如,您可以执行以下操作:
-
将权限策略附加到账户中的用户或群组— 要为用户授予创建 Amazon SQS 队列的权限,请将权限策略附加到用户或用户所属的组。
-
将权限策略附加到另一个中的用户Amazon Web Services 账户— 要授予用户创建 Amazon SQS 队列的权限,请将 Amazon SQS 权限策略附加到另一个队列中的用户Amazon Web Services 账户.
跨账户权限不能应用于以下操作:
-
向角色附加权限策略(授予跨账户权限)— 要授予跨账户的权限,请向 IAM 角色附加基于身份的权限策略。例如,Amazon Web Services 账户管理员可以创建角色以授予其跨账户权限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 日,即授予使用 SendMessage 和 ReceiveMessage 的权限)。您可以授予权限的特定操作是 Amazon SQS 操作总列表的子集。当您编写 Amazon SQS 策略并指定时*“允许所有 Amazon SQS 操作”,这意味着用户可以执行该子集中的所有操作。
下图说明了其中一个基本的 Amazon SQS 策略的概念,该策略涵盖了操作子集。该策略用于 queue_xyz,并且向 Amazon 账户 1 和 Amazon 账户 2 授予对指定队列使用任何允许的操作的权限。
该策略中的资源被指定为 123456789012/queue_xyz,其中 123456789012 是拥有该队列的账户的 Amazon 账户 ID。
随着 IAM 的介绍和 IAM 的概念Users和Amazon Resource Name(ARN),SQS 策略发生了一些变化。以下示意图和表格描述了这些变化。
有关向不同账户中的用户授予权限的信息,请参阅教程:跨部门委派访问权限Amazon使用 IAM 角色的账户在里面IAM 用户指南.
* 中包含的操作子集已扩展。有关允许的操作的列表,请参阅Amazon SQS API 权限:操作和资源参考。
您可以使用 Amazon Resource Name (ARN) 来指定资源,这是 IAM 策略中指定资源的标准方式。有关 Amazon SQS 队列 ARN 格式的信息,请参阅Amazon Simple Queue Ser.
例如,根据上图中的 Amazon SQS 策略,任何拥有以下安全证书的人Amazon账户 1 或Amazon账户 2 可以访问queue_xyz. 此外,您自己的 Amazon 账户(ID 为 123456789012)中的用户 Bob 和 Susan 也可以访问该队列。
在引入 IAM 之前,Amazon SQS 会自动授予队列创建者对该队列的完全控制权(即访问该队列上所有可能的 Amazon 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 Vice,该服务定义了一组行动. 为授予执行这些操作的权限,Amazon SQS 定义了一组您可以在策略中指定的操作。
执行一个 操作可能需要多个操作的权限。在授予特定操作的权限时,您也可以标识允许或拒绝对其执行操作的资源。
以下是最基本的策略元素:
-
Resource(资源)- 在策略中,您可以使用 Amazon Resource Name (ARN) 标识策略应用到的资源。
-
操作— 您可以使用操作关键字标识要允许或拒绝的资源操作。例如,
sqs:CreateQueue权限允许用户执行 Amazon Simple Queue ServiceCreateQueue操作。 -
Effect(效果)— 您可以指定当用户请求特定操作(可以是允许或拒绝)时的效果。如果您没有显式授予对资源的访问权限,则隐式拒绝访问。您也可明确拒绝对资源的访问,这样可确保用户无法访问该资源,即使有其他策略授予了访问权限的情况下也是如此。
-
主体 – 在基于身份的策略(IAM policy)中,附加了策略的用户是隐式主体。对于基于资源的策略,您可以指定要接收权限的用户、账户、服务或其他实体(仅适用于基于资源的策略)。
要了解有关 Amazon SQS 策略语法和描述的更多信息,请参阅AmazonIAM 策略参考在里面IAM 用户指南.
有关所有 Amazon Simple Queue Service 操作及其适用资源的表,请参阅Amazon SQS API 权限:操作和资源参考.
在策略中指定条件
当您授予权限时,可使用 Amazon SQS 访问策略语言来指定规定策略何时生效的条件。例如,您可能希望策略仅在特定日期后应用。有关使用策略语言指定条件的更多信息,请参阅 IAM 用户指南中的条件。
要表示条件,您可以使用预定义的条件键。没有特定于 Amazon SQS 的条件键。不过,有Amazon范围内的条件键,您可以用于 Amazon SQS。目前,Amazon SQS 仅支持 IAM 中可用的条件密钥的有限子集。请参阅 Amazon SQS API 权限:操作和资源参考。