首页 > 解决方案 > 限制 aws sqs:ListQueues 的权限

问题描述

使用 boto3 列出 sqs 队列时,是否可以将权限限制为函数可以拉取的队列数量?

我目前正在使用 boto3 根据前缀拉取队列列表:

sqs = boto3.client('sqs')
response = sqs.list_queues(
   QueueNamePrefix = 'some-prefix'
)

我只能通过以下政策完成这项工作:

{
   "Action": "sqs:ListQueues",
   "Effect": "Allow",
   "Resource": "*"
}

编辑它以限制资源,如下所示:

{
   "Action": "sqs:ListQueues",
   "Effect": "Allow",
   "Resource": "some-prefix*"
}

或使用条件:

{
   "Action": "sqs:ListQueues",
   "Effect": "Allow",
   "Resource": "*",
   "Condition": {"StringLike":{"aws:SourceArn": "some-prefix*"}}
}

给我一个拒绝访问。

在 sqs 的API 策略文档中, ListQueues 权限资源被声明为arn:aws:sqs:region:account_id:*. 我想知道是否有任何方法可以限制权限,以便我的 python 函数无法访问列出 sqs 中的所有队列。

标签: amazon-web-servicesaws-lambdaboto3amazon-iamamazon-sqs

解决方案


查看Amazon SQS - 服务授权参考的操作、资源和条件键ListQueuesAPI 调用不接受任何Condition选项。

但是,它确实接受QueueNamePrefix“用于过滤列表结果的字符串。仅返回名称以指定字符串开头的那些队列。”

因此,您可以通过在该字段中指定前缀来限制队列,而不是使用条件。


推荐阅读