跳至内容

如何解决由“拒绝”队列策略导致的 Amazon SQS 队列访问问题?

1 分钟阅读
0

由于“拒绝”队列策略,我无法访问我的 Amazon Simple Queue Service (Amazon SQS) 队列。

简短描述

以下示例拒绝策略会拒绝所有 AWS Identity and Access Management (IAM) 实体访问所有 Amazon SQS 队列操作:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "deny-sqs-actions",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "SQS:*",
      "Resource": "queueNameArn"
    }
  ]
}

解决方法

对 SQS 队列访问问题进行故障排除

如果您无法访问使用拒绝队列策略的队列,请完成以下步骤:

  1. 使用您的 AWS 账户根用户来访问队列。根用户凭证允许对账户中的所有资源进行完全访问。您可以使用根用户账户删除与该队列关联的拒绝策略。
  2. 如果拒绝策略限制了特定实体,请尝试使用该策略排除的实体进行访问。
    **注意:**验证被排除的实体是否具有访问队列所需的权限。
  3. 使用 AWS Organizations 管理账户中的 SQSUnlockQueuePolicy AWS 托管式策略。

防止 SQS 队列访问权限丢失

以下最佳实践有助于防止队列访问权限丢失:

包含 AllowDeny 语句的策略示例:

{   "Version": "2012-10-17",
   "Id": "Queue1_Policy_UUID",
   "Statement": [{
      "Sid":"Queue1_Allow_Access",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:user/User1"},
      "Action": "sqs:*",
      "Resource": "queueNameArn"
   }, {
      "Sid":"Queue1_Deny_Access",
      "Effect": "Deny",
      "NotPrincipal": {"AWS": "arn:aws:iam::111122223333:user/User1"},
      "Action": "sqs:*",
      "Resource": "queueNameArn"
   }]
}

上述示例策略允许 IAM 用户 User1 对指定的 SQS 队列执行所有 Amazon SQS 操作。同时,该策略拒绝除 User1 之外的所有主体访问该队列。

注意:****拒绝策略中的 NotPrincipal 元素会排除指定的主体。Allow 语句会向被排除的主体授予访问权限。

如果您无法访问 SQS 队列,请联系 AWS Support

如果您无法使用根用户凭证,或者不知道拒绝策略会排除的实体,请联系 AWS Support。创建支持案例并包含以下信息:

  • 确认您已使用根用户凭证来尝试访问队列。包含您无法使用根用户凭证的原因,或者根用户凭证未能解决问题的原因。
  • 确认您无法使用 SQSUnlockQueuePolicy AWS 托管式策略,并包含原因。
  • 确认您是队列所有者
  • 提供您需要访问队列的详细原因。

相关信息

在 Amazon SQS 中管理访问权限的概述

AWS 官方已更新 7 个月前