访问 Amazon SQS 队列需要什么权限?

上次更新时间:2021 年 8 月 24 日

我想访问 Amazon Simple Queue Service (Amazon SQS) 队列。访问队列需要哪些 SQS 访问策略和 AWS Identity and Access Management (IAM) 策略权限?

解决方法

要访问 Amazon SQS 队列,您必须向 SQS 访问策略和/或 IAM 策略添加权限。具体权限要求取决于 SQS 队列和 IAM 角色是否来自同一账户。

同一账户

SQS 访问策略或 IAM 策略中必须有允许访问的语句。

注意:如果 SQS 访问策略或 IAM 策略明确允许访问,但另一项策略明确拒绝访问,则队列访问将被拒绝。

IAM 用户策略 SQS 访问策略 结果
允许 允许 允许
允许 既不允许也不拒绝 允许
允许 拒绝 拒绝
既不允许也不拒绝 允许 允许
既不允许也不拒绝 既不允许也不拒绝 隐式拒绝
既不允许也不拒绝 拒绝 拒绝
拒绝 允许 拒绝
拒绝 既不允许也不拒绝 拒绝
拒绝 拒绝 拒绝

不同账户

SQS 访问策略和 IAM 策略中都必须有允许访问的语句。

IAM 用户策略 SQS 访问策略 结果
允许 允许 允许
允许 既不允许也不拒绝 隐式拒绝
允许 拒绝 拒绝
既不允许也不拒绝 允许 隐式拒绝
既不允许也不拒绝 既不允许也不拒绝 隐式拒绝
既不允许也不拒绝 拒绝 拒绝
拒绝 允许 拒绝
拒绝 既不允许也不拒绝 拒绝
拒绝 拒绝 拒绝

策略语句示例

以下策略示例显示了为允许对 SQS 队列进行跨账户访问,而必须对 IAM 策略和 SQS 队列访问策略设置的权限。

第一个策略授予 username1 向资源 arn:aws:sqs:us-east-1:123456789012:queue_1 发送消息的权限。

第二个策略允许 username1 向队列发送消息。

username1 的 IAM 策略语句示例

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
   }]
}

queue_1 的 SQS 资源策略语句示例

{
   "Version": "2012-10-17",
   "Id": "Queue1_Policy",
   "Statement": [{
      "Sid":"Queue1_AllActions",
      "Effect": "Allow",
      "Principal": {
         "AWS": [
            "arn:aws:iam::111122223333:user/username1"
         ]
      },
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
   }]
}

这篇文章对您有帮助吗?


您是否需要账单或技术支持?