本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
)向主体授予对共享队列执行以下操作的权限:ChangeMessageVisibility
、DeleteMessage
、GetQueueAttributes
、GetQueueUrl
、ReceiveMessage
和 SendMessage
。
注意
尽管*
包括其他权限类型提供的访问权限,但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 政策。
本示例将执行以下操作:
-
创建一个名 WidgetCo 为代表合作伙伴公司的小组。
-
为合作伙伴公司中需要访问权限的特定用户或应用程序创建用户。
-
将 用户添加到 组。
-
挂载一条策略,仅允许该组对名为
SendMessage
的队列执行WidgetPartnerQueue
操作。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:123456789012:WidgetPartnerQueue" }] }