AuthorizationPolicy 配置问题:JWT 身份验证无法在指定命名空间内工作

问题描述 投票:0回答:1

我目前面临 JWT 身份验证的 Istio AuthorizationPolicy 配置问题。我们的目标是为来自命名空间外部的流量启用 JWT 身份验证,同时允许命名空间内的请求无需身份验证即可继续进行。

相关配置如下:


 - List item

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  annotations:
  name: auth-policy
  namespace: istio-system
spec:
  rules:
  - from:
    - source:
        requestPrincipals:
        - '*'
    - source:
        notNamespaces:
        - <namespace>
  selector:
    matchLabels:
      <key>: <value>


apiVersion: "security.istio.io/v1beta1"
kind: "RequestAuthentication"
metadata:
  name: jwt
  namespace: istio-system
spec:
  selector:
    matchLabels:
      <key>: <value>
  jwtRules:
  - issuer: "<issuer>"
    jwksUri: "<jwksUri>"
    fromHeaders:
    - name: x-jwt-assertion
      prefix: "Bearer "

我们遇到的问题是,尽管在 AuthorizationPolicy 中使用了 notNamespaces 字段,但指定命名空间内的请求也需要身份验证。我们预计命名空间内的请求将免于身份验证。

如果有人遇到类似的问题或了解正确的配置以实现我们期望的行为,我将非常感谢您的帮助。预先感谢您的帮助!

在 Istio AuthorizationPolicy 配置中,我们尝试使用以下规则实现 JWT 身份验证:

来自命名空间外部的所有流量都应该需要 JWT 身份验证。 应允许指定名称空间内的请求,无需任何身份验证。 为了实现这一点,我们使用 AuthorizationPolicy 中的 notNamespaces 字段来指定应绕过身份验证的命名空间。

我们预计源自指定命名空间的请求不会触发 JWT 身份验证过程,并且无需任何身份验证要求即可继续进行。

但是,尽管我们进行了配置,指定命名空间内的请求仍然受到 JWT 身份验证,这不是所需的行为。我们正在寻求帮助来理解和解决这个问题。

kubernetes istio istio-gateway kubernetes-security istio-operator
1个回答
0
投票

您必须在

from
部分使用 AND 语义。您编写它的方式就好像有两个单独的规则,它们具有 OR 语义

删除

-
使其成为 AND:

  - from:
    - source:
        requestPrincipals:
        - '*'
      source:
        notNamespaces:
        - <namespace>
© www.soinside.com 2019 - 2024. All rights reserved.