首页 > 解决方案 > 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',并且该角色的路径是好的。'*'它适用于没有标志的端点

标签: istio

解决方案


将此答案作为社区 wiki 发布,因为此处已经回答了类似的问题:

部分问题:

       - operation:
           methods: ["PUT"]
           paths: ["/my-service/docs/*/activate/*"]  

回答:

根据 istio文档

规则

规则匹配来自源列表的请求,这些请求执行受条件列表约束的操作列表。当至少一个源、操作和条件与请求匹配时,就会发生匹配。始终匹配空规则。

规则中的任何字符串字段都支持 Exact、Prefix、Suffix 和 Presence 匹配:

  • 完全匹配:“abc”将匹配值“abc”。
  • 前缀匹配:“abc*”将匹配值“abc”和“abcd”。
  • 后缀匹配:“*abc”将匹配值“abc”和“xabc”。
  • 存在匹配:当值不为空时,“*”将匹配。

所以授权策略确实支持通配符,但我认为问题出在*/activate/*路径上,因为路径只能在开头、结尾或整个字符串中使用通配符,双通配符不起作用。

有相关的开放 github 问题:


推荐阅读