最简单的IAM策略被拒绝。为什么?

时间:2016-12-13 19:05:46

标签: amazon-web-services amazon-sqs amazon-iam

无法使IAM策略适用于我的SQS队列,我尝试了IAM策略模拟器。无论我制定政策多么简单,它总是说它被拒绝了。

以下政策旨在允许对任何SQS资源执行任何操作。这是我附加到特定用户的策略,这就是未指定Principal的原因。

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

当我尝试在策略模拟器中为listQueues操作运行时,我被拒绝:隐式拒绝(没有匹配的语句)。这句话怎么可能不匹配?

这是在政策编辑中被拒绝的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:2)

这不是最简单的IAM政策。这是:

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

在运行模拟之前,您是否单击了策略编辑器底部的“应用”?

答案 1 :(得分:2)

默认情况下,IAM策略模拟器将您正在模拟访问的资源的ARN设置为*。出于某种原因,这与"Resource": "arn:aws:sqs:*:*:*"

的Resource子句不匹配

一旦我扩展了模拟器的资源部分(见下面的截图),并在ARN中粘贴了有效的SQS资源,该策略就匹配了。请参见下面屏幕截图的底部。

我发现修复问题的另一件事是@ Mark-B建议。将Resource子句更改为"Resource": "*"。确实匹配策略模拟器的默认资源*,而"Resource": "arn:aws:sqs:*:*:*"没有。

enter image description here