istio - Istio 授权 - Istio 'paths' 字段中的模式匹配
问题描述
我想在 Istio 授权中创建一个规则:
- to:
- operation:
methods: [ "POST" ]
paths: [ "/data/api/v1/departments/*/users/*/position" ]
when:
- key: request.auth.claims[resource_access][roles]
values: [ "edit" ]
所以我想在这里使用路径变量(在带有 的地方'*'
)。我应该放什么而不是'*'
让它工作?它在当前设置中不起作用。
我得到“RBAC denied”,我有一个角色'edit'
,并且该角色的路径是好的。'*'
它适用于没有标志的端点
解决方案
将此答案作为社区 wiki 发布,因为此处已经回答了类似的问题:
部分问题:
- operation: methods: ["PUT"] paths: ["/my-service/docs/*/activate/*"]
回答:
根据 istio文档:
规则
规则匹配来自源列表的请求,这些请求执行受条件列表约束的操作列表。当至少一个源、操作和条件与请求匹配时,就会发生匹配。始终匹配空规则。
规则中的任何字符串字段都支持 Exact、Prefix、Suffix 和 Presence 匹配:
- 完全匹配:“abc”将匹配值“abc”。
- 前缀匹配:“abc*”将匹配值“abc”和“abcd”。
- 后缀匹配:“*abc”将匹配值“abc”和“xabc”。
- 存在匹配:当值不为空时,“*”将匹配。
所以授权策略确实支持通配符,但我认为问题出在
*/activate/*
路径上,因为路径只能在开头、结尾或整个字符串中使用通配符,双通配符不起作用。有相关的开放 github 问题:
推荐阅读
- php - 更改特定 woocommerce 类别存档的默认排序顺序
- python - 将 scipy.stats.spearmanr() 的输出保存到 excel 或文本
- javascript - HTML5 Canvas ~ 使用绘制元素平滑快速缩放,而不是图像 ~ 如何?
- python - 在 print() 中使用 str()
- android - Delphi 10.2 Tokyo Android 以编程方式安装.apk(新版本)
- python - “只有大小为 1 的数组可以转换为 Python 标量”或“`x0` 最多必须有 1 个维度”
- javascript - 如何仅将javascript输出的一个值转换为斜体?
- c# - .Net Standard 2.0 CompilationLibrary.ResolveReferencePaths 失败
- c# - imageMagick PDF to PNG:提高条码的可读性
- git - 强制 LF 行结束,并在不提交的情况下转换工作目录