【问题标题】:AccessDenied when calling the ListQueues operation调用 ListQueues 操作时 AccessDenied
【发布时间】:2019-06-17 11:52:19
【问题描述】:

除非我将 Resource 的值设置为 arn:aws:sqs:*:*:*,否则当使用 AWS-CLI 和附加策略不起作用的 call list queues 命令时,这很奇怪。

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

我希望下面的命令应该返回所有以 local-* 开头的队列,但我得到了 AccessDenied。

aws sqs list-queues --queue-name-prefix local-*

但是对于同一个队列,我可以得到它的属性。

aws sqs get-queue-attributes --queue-url https://us-west-2.queue.amazonaws.com/0****5/local-myqueue --attribute-names All

我是否需要更改策略或列表队列的行为不同?

提前致谢。

【问题讨论】:

    标签: amazon-web-services amazon-sqs aws-cli


    【解决方案1】:

    根据Actions, Resources, and Condition Keys for Amazon SQS - AWS Identity and Access Management,SQS 命令不接受条件。因此,ListQueues() 命令要么完全工作(显示所有 匹配队列),要么不返回任何内容(由于拒绝访问)。限制返回哪些队列的唯一方法是使用queue-name-prefix

    策略中的Resource 属性将确定可以在哪个队列上运行各种命令,这就是为什么您能够获取与local-* 匹配的队列的属性。如果您尝试获取名为public-xxx 的队列的详细信息,则会被拒绝。 (但ListQueues 操作的是服务,而不是特定的队列。)

    【讨论】:

    • 谢谢@John 的回答。我现在很清楚,但我希望这应该像限制 queue-name-prefix 一样工作,但这也不起作用。任何原因?也许它也是 ListQueues 的子标志,这就是为什么?
    • 没有可用于列表队列的条件字段,这是您通常对前缀应用限制的地方。随意尝试——这将是一个带有 StringLike 的条件,这将迫使用户提供前缀或面临失败。
    猜你喜欢
    • 2020-01-16
    • 2020-07-08
    • 1970-01-01
    • 2020-05-06
    • 2017-09-28
    • 1970-01-01
    • 2021-07-28
    • 2021-04-13
    • 2018-07-12
    相关资源
    最近更新 更多