【问题标题】:Simplest possible IAM Policy is Denied. Why?最简单的 IAM 策略被拒绝。为什么?
【发布时间】:2017-04-28 23:07:14
【问题描述】:

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

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

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

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

这是在策略编辑器上被拒绝的屏幕截图:

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 你是对的。将 Resource 子句更改为您所做的可以解决问题。详情见我的回答。
    • 我要补充一点,您需要一个额外的委托人:* 如果您需要使用由其他 AWS 服务承担的此类策略附加的角色。像问题所问的最简单的策略不需要它,但对于 STS 承担一个角色,它是必需的。但是,强烈建议您不要在角色信任策略的 Principal 元素中使用通配符,除非您通过策略中的 Condition 元素限制访问。否则,任何账户中的任何 IAM 用户都可以访问该角色。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2019-11-09
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2022-10-01
      • 2018-07-12
      • 1970-01-01
      • 2013-10-11
      相关资源
      最近更新 更多