首页 > 解决方案 > 在 istio AuthorizationPolicy 中如何匹配包含查询字符串参数的路径

问题描述

我目前正在使用 istio 1.4 并启用了 aPolicy来检查 jwt。
我启用了一个AuthorizationPolicy具有该规则的:

  rules
  - to:
    - operation:
        methods: ["GET"]
        paths: [
          "/render/checkout"
        ]
    when:
    - key: request.auth.claims[roles]
      values: ["USER"]

当我用我的 jwt 走这条路时,一切都很好。问题是,例如,当我使用查询字符串参数点击相同的 url 时/render/checkout?sort=asc,我得到一个RBAC: access denied.
为了绕过这个,我最终添加了包括问号和通配符的路径:

paths: [
          "/render/checkout", "/render/checkout?*"
        ]

但是有很多路径和很多微服务,我觉得这不应该发生,因为它非常重复且容易出错。

我知道github上已经存在关于在路径中支持正则表达式的问题,但目前:

我可以避免将每个路径加倍,一个没有查询字符串参数,第二个有查询字符串参数吗?

标签: securityistio

解决方案


有一个github 问题,几天前有人问了同样的问题,这导致我们找到您添加的 github 问题。

特别是这部分github会员回答@GODBS。


没有其他方法可以排除 JWT 的路径,然后使用不允许正则表达式的授权策略。


我可以避免将每个路径加倍,一个没有查询字符串参数,第二个有查询字符串参数吗?

因此,据我了解,目前没有其他方法可以使其发挥作用。现在的解决方法是添加另一个路径,就像你做的那样。

我假设他们将来会添加它,这里的问题是需要多长时间。


推荐阅读