授权策略不支持路径上的任何通配符模式吗?
我有以下端点:
/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/*"]
除了更新我的所有端点之外,还有什么不同的解决方案吗?
10x
正如我在评论中提到的
根据 istio文档:
Rule
规则匹配来自执行列表的源列表的请求
操作须遵守一系列条件。匹配发生在
至少有一个来源、操作和条件符合请求。一个
空规则始终匹配。
规则中的任何字符串字段都支持精确、前缀、后缀和
存在匹配:
- 精确匹配:“abc”将匹配值“abc”。
- 前缀匹配:“abc*”将匹配值“abc”和“abcd”。
- 后缀匹配:“*abc”将匹配值“abc”和“xabc”。
- 存在匹配:当值不为空时,“*”将匹配。
所以授权策略确实支持通配符,但我认为问题在于*/activate/*
路径,因为路径只能在开头、结尾或整个字符串使用通配符,所以双通配符不起作用。
有相关的开放 github 问题:
- https://github.com/istio/istio/issues/16585
- https://github.com/istio/istio/issues/25021
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)