首页 > 解决方案 > 带通配符的 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倍

标签: authorizationistio

解决方案


正如我在评论中提到的

根据 istio文档

规则

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

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

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

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

有相关的开放 github 问题:


推荐阅读