除非我将资源的值设置为arn:aws:sqs:*:*:*
,否则在使用AWS-CLI且附加策略不起作用的呼叫列表队列命令时,这很奇怪。
{
"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
我需要更改策略中的某些内容还是列表队列的行为不同?
谢谢。
答案 0 :(得分:2)
根据Actions, Resources, and Condition Keys for Amazon SQS - AWS Identity and Access Management,SQS命令不接受条件。因此,ListQueues()
命令要么完全可以工作(显示 all 个匹配队列),要么不返回任何内容(由于访问被拒绝)。限制返回哪些队列的唯一方法是使用queue-name-prefix
。
策略中的Resource
属性将确定各种命令可以在哪个队列上运行,这就是为什么您能够获得与local-*
匹配的队列的属性的原因。如果您尝试获取名为public-xxx
的队列的详细信息,它将被拒绝。 (但是ListQueues
在服务上运行,而不是在特定队列上运行。)