amazon-web-services - 限制 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 SQS - 服务授权参考的操作、资源和条件键,ListQueues
API 调用不接受任何Condition
选项。
但是,它确实接受QueueNamePrefix
:“用于过滤列表结果的字符串。仅返回名称以指定字符串开头的那些队列。”
因此,您可以通过在该字段中指定前缀来限制队列,而不是使用条件。
推荐阅读
- batch-file - 仅当 Excel 文件打开时,如何在无限运行的批处理文件中关闭和保存 Excel 文件?
- docker - 无法使用 Docker compose 在 Eureka 中注册服务
- java - 是否可以在 Spring 中取消声明或定义空 bean?
- java - 构造函数字节码
- python - 具有多列的 Pandas isin
- angular - auth0 令牌:编译失败
- angular - 如何将多个组件添加到路径
- ajax - 任何 ajax 请求上的 RxJS 加载指示器
- javascript - ES6 将所有名称过滤到一个函数中
- php - 上传到 VPS 后图片不显示