authorization - 带通配符的 Istio AuthorizationPolicy
问题描述
授权策略不支持路径上的任何通配符模式?
我有以下端点:
/my-service/docs/active (GET)
/my-service/docs/<id>/activate/<bool> (PUT)
第一个将获取所有活动文档,第二个将激活/停用特定文档。我尝试将其设置在授权策略上,但由于 willdcard 似乎忽略了此策略。
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: my-service-private
namespace: default
spec:
action: DENY
selector:
matchLabels:
app:my-service
rules:
- from:
- source:
notNamespaces: [ "default" ]
to:
- operation:
methods: ["GET"]
paths: ["/my-service/docs/active"]
- operation:
methods: ["PUT"]
paths: ["/my-service/docs/*/activate/*"]
除了更新我的所有端点之外,这里有什么不同的解决方案吗?
10倍
解决方案
正如我在评论中提到的
根据 istio文档:
规则
规则匹配来自源列表的请求,这些请求执行受条件列表约束的操作列表。当至少一个源、操作和条件与请求匹配时,就会发生匹配。始终匹配空规则。
规则中的任何字符串字段都支持 Exact、Prefix、Suffix 和 Presence 匹配:
- 完全匹配:“abc”将匹配值“abc”。
- 前缀匹配:“abc*”将匹配值“abc”和“abcd”。
- 后缀匹配:“*abc”将匹配值“abc”和“xabc”。
- 存在匹配:当值不为空时,“*”将匹配。
所以授权策略确实支持通配符,但我认为问题出在*/activate/*
路径上,因为路径只能在开头、结尾或整个字符串中使用通配符,双通配符不起作用。
有相关的开放 github 问题:
推荐阅读
- macos - 在 Jupyter Lab markdown 中渲染数学公式的问题
- ios - 是否可以在使用一个等值对象字段的对象数组上使用包含?
- python - “charmap”编解码器无法解码位置 4836 中的字节 0x9d:字符映射到
- javascript - 显示结果不显示
- java - Java Mongodb 将正则表达式匹配到任何文档字段
- r - 将字符串作为列名传递时出错 R t 测试
- reactjs - 如何在 React JSx 中多次重复一个图像以填满一个页面?
- python - 时间戳对象没有属性 dt
- json - Contentful .NET SDK Newtonsoft.Json.JsonReaderException 将 JSON 反序列化为 POCO
- python - mac (10.15.5) 上 pyzmail 的 pip 安装错误