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

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

Amazon 基于身份的政策示例 SQS

默认情况下,用户和角色无权创建或修改 Amazon SQS 资源。他们也无法使用 Amazon Web Services Management Console、 Amazon Command Line Interface (Amazon CLI) 或来执行任务 Amazon API。要授予用户对其所需资源执行操作的权限,IAM管理员可以创建IAM策略。然后,管理员可以将IAM策略添加到角色中,用户可以代入这些角色。

要了解如何使用这些示例策略文档创建IAM基于身份的JSON策略,请参阅IAM用户指南中的创建IAM策略

有关亚马逊定义的操作和资源类型(包括每种资源类型的格式)的详细信息SQS,请参阅《服务授权参考》中的 Amazon Simple Queue 服务的操作、资源和条件密钥。ARNs

注意

当您为 Amazon A EC2 uto Scaling 配置生命周期挂钩时,您无需编写策略即可向亚马逊SQS队列发送消息。有关更多信息,请参阅亚马逊EC2用户指南中的 Amazon A EC2 uto Scaling 生命周期挂钩

策略最佳实践

基于身份的策略决定了是否有人可以在您的账户中创建、访问或删除亚马逊SQS资源。这些操作可能会使 Amazon Web Services 账户产生成本。创建或编辑基于身份的策略时,请遵循以下指南和建议:

  • 开始使用 Amazon 托管策略并转向最低权限权限 — 要开始向用户和工作负载授予权限,请使用为许多常见用例授予权限的Amazon 托管策略。它们在你的版本中可用 Amazon Web Services 账户。我们建议您通过定义针对您的用例的 Amazon 客户托管策略来进一步减少权限。有关更多信息,请参阅《IAM用户指南》中的Amazon 托Amazon 管策略或工作职能托管策略。

  • 应用最低权限权限-使用IAM策略设置权限时,仅授予执行任务所需的权限。为此,您可以定义在特定条件下可以对特定资源执行的操作,也称为最低权限许可。有关使用应用权限IAM的更多信息,请参阅《IAM用户指南》IAM中的策略和权限

  • 使用IAM策略中的条件进一步限制访问权限-您可以在策略中添加条件以限制对操作和资源的访问权限。例如,您可以编写一个策略条件来指定所有请求都必须使用发送SSL。如果服务操作是通过特定的方式使用的,则也可以使用条件来授予对服务操作的访问权限 Amazon Web Services 服务,例如 Amazon CloudFormation。有关更多信息,请参阅《IAM用户指南》中的IAMJSON策略元素:条件

  • 使用 A IAM ccess Analyzer 验证您的IAM策略以确保权限的安全性和功能性 — A IAM ccess Analyzer 会验证新的和现有的策略,以便策略符合IAM策略语言 (JSON) 和IAM最佳实践。IAMAccess Analyzer 提供了 100 多项策略检查和可行的建议,可帮助您制定安全和实用的策略。有关更多信息,请参阅《IAM用户指南》中的 IAMAccess Analyzer 策略验证

  • 需要多重身份验证 (MFA)-如果您的场景需要IAM用户或 root 用户 Amazon Web Services 账户,请打开MFA以提高安全性。要要求MFA何时调用API操作,请在策略中添加MFA条件。有关更多信息,请参阅《IAM用户指南》中的配置MFA受保护的API访问权限

有关中最佳做法的更多信息IAM,请参阅《IAM用户指南》IAM中的安全最佳实践

使用亚马逊SQS控制台

要访问 Amazon Simple Queue Service 控制台,您必须具有一组最低的权限。这些权限必须允许您列出和查看有关您的 Amazon SQS 资源的详细信息 Amazon Web Services 账户。如果创建比必需的最低权限更为严格的基于身份的策略,对于附加了该策略的实体(用户或角色),控制台将无法按预期正常运行。

您无需为仅拨打 Amazon CLI 或的用户设置最低控制台权限 Amazon API。相反,只允许访问与他们尝试执行的API操作相匹配的操作。

为确保用户和角色仍然可以使用亚马逊SQS控制台,还需要将亚马逊SQSAmazonSQSReadOnlyAccess Amazon 托管策略附加到这些实体。有关更多信息,请参阅《用户指南》中的向IAM用户添加权限

允许用户查看他们自己的权限

此示例说明如何创建允许IAM用户查看附加到其用户身份的内联和托管策略的策略。此策略包括在控制台上或使用或以编程方式完成此操作的 Amazon CLI 权限。 Amazon API

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

允许用户创建队列

在以下示例中,我们为 Bob 创建了一个策略,允许他访问所有 Amazon SQS 操作,但只能访问名称以文字字符串为前缀的队列。alice_queue_

Amazon SQS 不会自动授予队列创建者使用队列的权限。因此,除了IAM策略中的操作外,我们还必须明确授予 Bob 使用所有 Amazon SQS CreateQueue 操作的权限。

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

允许开发者向共享队列写消息

在以下示例中,我们为开发者创建了一个群组,并附加了一个策略,允许该群组使用 Amazon SQS SendMessage 操作,但只能使用属于指定 Amazon Web Services 账户 且已命名的队列MyCompanyQueue

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

您可以使用 *(而不是 SendMessage)向主体授予对共享队列执行以下操作的权限:ChangeMessageVisibilityDeleteMessageGetQueueAttributesGetQueueUrlReceiveMessageSendMessage

注意

尽管*包括其他权限类型提供的访问权限,但Amazon会单独SQS考虑权限。例如,可以向用户同时授予 *SendMessage 权限,即使 * 包含 SendMessage 提供的访问权限,也是如此。

此概念在您删除权限时也适用。如果主体只有 * 权限,则请求删除 SendMessage 权限不会 为主体留下除此以外的一切 权限。相反,该请求不起作用,因为主体不具有显式 SendMessage 权限。要只为主体留下 ReceiveMessage 权限,请先添加 ReceiveMessage 权限,然后删除 * 权限。

允许管理员获取队列的大致大小

在以下示例中,我们为经理创建了一个群组,并附加了一个策略,允许该群组对属于指定 Amazon 账户的所有队列使用 Amazon SQS GetQueueAttributes 操作。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:GetQueueAttributes", "Resource": "*" }] }

允许合作伙伴向特定队列发送消息

您可以使用 Amazon SQS 政策或政策来完成此任务。IAM如果您的合作伙伴有 Amazon Web Services 账户,则使用Amazon SQS 政策可能会更容易。但是,合作伙伴公司中任何拥有 Amazon 安全凭证的用户都可以向队列发送消息。如果您想限制特定用户或应用程序的访问权限,则必须像对待自己公司的用户一样对待合作伙伴,并使用IAM政策代替 Amazon SQS 政策。

本示例将执行以下操作:

  1. 创建一个名 WidgetCo 为代表合作伙伴公司的小组。

  2. 为合作伙伴公司中需要访问权限的特定用户或应用程序创建用户。

  3. 将 用户添加到 组。

  4. 挂载一条策略,仅允许该组对名为 SendMessage 的队列执行 WidgetPartnerQueue 操作。

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