我有一个IAM用户的策略,该策略是为从特定SQS队列发送和接收消息而创建的。使用AWS CLI并发出list-queues
命令时,我收到错误:
An error occurred (AccessDenied) when calling the ListQueues operation: Access to the resource https://queue.amazonaws.com/ is denied.
我在IAM用户上有一个自定义策略来指定权限,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1485992560000",
"Effect": "Allow",
"Action": [
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:ListQueues"
],
"Resource": [
"arn:aws:sqs:us-east-1:XXXX:TestQueue"
]
}
]
}
有了这个策略,我已经验证我可以使用AWS CLI从此队列发送和接收消息。如果我修改了对用户的权限并添加了Action为sqs:ListQueues
且资源为"*"
的语句,那么使用AWS CLI的list-queues
命令会在响应中返回TestQueue的url。
我认为list-queue
应该仅返回IAM用户被授予该行动的队列是错误的吗?
欢迎任何指导/建议!谢谢!
答案 0 :(得分:3)
sqs:ListQueues
之类的命令不能限制其资源。它们的资源规范必须为*
。这也意味着您无法限制返回值:它们将始终返回所有队列,即使用户无法对其执行操作。
这与其他"列出"类似的行为类型方法,如ec2:DescribeInstances
等。