【问题标题】:Change istio authorization policy in Azure AKS在 Azure AKS 中更改 istio 授权策略
【发布时间】:2020-11-27 11:33:26
【问题描述】:

我在 Azure AKS 中使用 istio 进行身份验证时遇到问题。据我所知,我正在生成一个有效的令牌,但出现 403 错误。

应用的 istio 授权配置是:

kind: AuthorizationPolicy
metadata:
  name: entitlements-jwt-authz
  namespace: osdu
spec:
  selector:
    matchLabels:
      app: entitlements-azure
  action: DENY
  rules:
    - from:
        - source:
            notRequestPrincipals: ["*"]
      to:
        - operation:
            notPaths: ["/",
                       "*/v2/api-docs",
                       "*/swagger-resources","*/swagger-ui.html",
                       "*/actuator/health",
                       "/entitlements/v1/swagger-resources/*",
                       "/entitlements/v1/webjars/*"]

我想尝试将此策略更改为仅允许,以便我可以尝试将其隔离为令牌问题,但我不确定如何更改此策略,因为我不熟悉 kubernetes。有人能指出我正确的方向吗?

我不确定我是否提供了足够的信息,所以请询问是否需要更多信息。

谢谢 迈克

【问题讨论】:

  • 这个授权策略应该做什么?如果您只想将其更改为ALLOW,那么您唯一需要更改的是action。如果您想将整个 AuthorizationPolicy 从拒绝更改为允许,但又想继续执行相同的操作,则必须更改 action、source 和 operation。所以你会使用action: ALLOW、requestPrincipals: ["*"]和paths。另外你可以看看here,我用 AuthorizationPolicy 拒绝和允许做了一些测试。如果这能回答您的问题,请告诉我。

标签: jwt istio azure-aks


【解决方案1】:

我猜你有一个与 istio 的签名验证不兼容的access_token。

转到jwt.io 分析您的令牌。 header 是否包含 nonce?如果是,那就是问题所在。 Azure 对此并不是很透明,但据我了解,签名必须使用 JWKS 和 nonce 进行验证,而 istio 则不能。

对我来说,解决方案是将范围从默认的 MS Graph 范围更改为自定义范围。您可以在您的应用注册中创建一个范围或使用默认范围:<appId>/.default,例如abce-1234-ghkli-5677/.default。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2020-08-31
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多