CloudTrail 更新和 Amazon SQS 死信队列 (DLQ) 重新驱动的权限要求 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

CloudTrail 更新和 Amazon SQS 死信队列 (DLQ) 重新驱动的权限要求

2023 年 6 月 8 日,Amazon SQS 推出了适用于 Amazon SDK 和 Amazon Command Line Interface (CLI) 的死信队列 (DLQ) 重新驱动。此功能是对已支持 Amazon 控制台 DLQ 重新驱动的补充。如果您之前曾使用 Amazon 控制台重新驱动死信队列消息,则可能会受到以下更改的影响:

CloudTrail 事件重命名

2023 年 10 月 15 日,Amazon SQS 控制台上死信队列重新驱动的 CloudTrail 事件名称将发生变化。如果您已为这些 CloudTrail 事件设置了警报,则必须立即对其进行更新。以下是 DLQ 重新驱动的新 CloudTrail 事件名称:

上一个事件名称 新事件名称

CreateMoveTask

StartMessageMoveTask

CancelMoveTask

CancelMessageMoveTask

更新权限

在 SDK 和 CLI 版本中,Amazon SQS 还更新了 DLQ 重新驱动的队列权限,以遵守安全最佳实践。使用以下队列权限类型重新驱动 DLQ 中的消息。

  1. 基于操作的权限(更新 DLQ API 操作)

  2. 托管 Amazon SQS 策略权限

  3. 使用 sqs:* 通配符的权限策略

重要

要使用适用于 SDK 或 CLI 的 DLQ 重新驱动,您需要具有与上述选项之一相匹配的 DLQ 重新驱动权限策略。

如果您的 DLQ 重新驱动队列权限与上述选项之一不匹配,则您必须在 2023 年 8 月 31 日之前更新您的权限。从现在起至 2023 年 8 月 31 日,您的账户只能在您之前使用过 DLQ 重新驱动的区域使用您在 Amazon 控制台上配置的权限重新驱动消息。例如,假设您在 us-east-1 和 eu-west-1 中都有“账户 A”。在 2023 年 6 月 8 日之前,“账户 A”用于在 us-east-1 的 Amazon 控制台上重新驱动消息,但在 eu-west-1 中却没有。在 2023 年 6 月 8 日至 2023 年 8 月 31 日之间,如果“账户 A”的策略权限与上述任一选项不匹配,则只能在 us-east-1 中使用该策略在 Amazon 控制台上重新驱动消息,而不能在 eu-west-1 中重新驱动消息。

重要

如果在 2023 年 8 月 31 日之后您的 DLQ 重新驱动权限与其中一个选项不匹配,则您的账户将无法再使用 Amazon 控制台重新驱动 DLQ 消息。

但是,如果您在 2023 年 8 月期间在 Amazon 控制台上使用了 DLQ 重新驱动特征,则您可以根据这些选项之一在 2023 年 10 月 15 日之前采用新权限。

有关更多信息,请参阅标识受影响的策略

以下是每个 DLQ 重新驱动选项的队列权限示例。使用服务器端加密 (SSE) 队列时,需要相应的 Amazon KMS 密钥权限。

基于操作

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:StartMessageMoveTask", "sqs:ListMessageMoveTasks", "sqs:CancelMessageMoveTask" ], "Resource": "arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>" } ] }

托管策略

以下托管策略包含所需的更新权限:

  • AmazonSQSFullAccess - 包括以下死信队列重新驱动任务:开始、取消和列出。

  • AmazonSQSReadOnlyAccess - 提供只读访问权限,并包括列出死信队列重新驱动任务。


                显示权限策略 AmazonSQSFullAccess(用于启动、取消和列出死信队列重新驱动任务的任务)以及 AmazonsReadOnlyAccess(用于只读访问权限)的 Amazon SQS。

使用 sqs* 通配符的权限策略

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

标识受影响的策略

如果您使用的是客户托管策略 (CMP),则可以使用 Amazon CloudTrail 和 IAM 来标识受队列权限更新影响的策略。

注意

如果您使用的是 AmazonSQSFullAccessAmazonSQSReadOnlyAccess,则无需采取进一步操作。

  1. 登录 Amazon CloudTrail 控制台。

  2. 事件历史记录页面的查找属性下,使用下拉菜单选择事件名称。然后搜索 CreateMoveTask

  3. 选择事件,打开详细信息页面。在事件记录部分,从 userIdentity ARN 中检索 UserNameRoleName

  4. 登录到 IAM 控制台。

    • 对于用户,选择“用户”。通过上一步中标识的 UserName 选择用户。

    • 对于角色,选择“角色”。通过上一步中标识的 RoleName 搜索用户。

  5. 详细信息页面的权限部分,查看 Action 中前缀为 sqs: 的所有策略,或查看 Resource 中定义了 Amazon SQS 队列的策略。