【问题标题】:Istio return "RBAC: access denied" with wildcard pathIstio 使用通配符路径返回“RBAC: access denied”
【发布时间】:2021-04-07 19:54:32
【问题描述】:

在“AuthorizationPolicy”中使用通配符路径时,Istio 返回“RBAC: access denied”,请参阅文件:

api-key-test-authorization.yml

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: api-key-test-authorization
  namespace: test
spec:
  selector:
    matchLabels:
      api-key-secured: enabled
  rules:
  - to:
    - operation:
        paths: ["*/test1", "*/test2/*", "*/test4*"]
  - to:
    - operation:
        paths: ["/*"]
    when:
    - key: request.headers[api-key]
      values: ["XXXXXXXX"]

Resources.java

...
enter code here
@GetMapping(value = "/test1")
@ResponseBody
public ResponseEntity<Resource> getTest1(HttpServletResponse response) throws IOException {

    System.out.println("Test 1");

    return ResponseEntity.ok().build();
}

@GetMapping(value = "/test2/{id}/xpto")
@ResponseBody
public ResponseEntity<Resource> getTest2(@PathVariable("id") String id, HttpServletResponse response) throws IOException {

    System.out.println(id + " XPTO");

    return ResponseEntity.ok().build();
}

@GetMapping(value = "/test3/{id}")
@ResponseBody
public ResponseEntity<Resource> getTest3(@PathVariable("id") String id, HttpServletResponse response) throws IOException {

    System.out.println(id + " of Test 3");

    return ResponseEntity.ok().build();
}

结果

  • “http://example.com/test1”:工作正常;
  • “http://example.com/test2/xxx/xpto”:返回“RBAC:拒绝访问”;
  • “http://example.com/test3/xxx”:返回“RBAC:访问被拒绝”;

这些路径被配置为不需要传递“api-key”,但是当路径中有通配符(*)时,它会返回要求“api-key”的错误。

我正在使用 Istio.1.4.9

【问题讨论】:

    标签: java spring kubernetes istio


    【解决方案1】:

    看来根据documentation,前缀后缀匹配是可以的,但不能两者兼得:

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

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

    请注意,对于您给定的 URL,前缀匹配可能就足够了,因为在此上下文中不考虑域部分。

    类似的东西(未经测试)

    paths: ["test1", "test2/*", "test4*"]
    

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2020-07-02
      • 1970-01-01
      • 2019-12-20
      • 2018-03-07
      • 2013-10-30
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多