istio-system 名前空間に存在する 1 つの istio Gateway リソースがあります。複数のホストに JWT 認証を設定する必要がありますが、すべてのホストが JWT を使用しているわけではありません。Istio ドキュメントからマニフェストを適用しようとしています(ラベル app:httpbin を持つワークロードのすべてのリクエストに JWT が必要です)。
これが私のマニフェストです:
apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
name: "test-jwt"
spec:
selector:
matchLabels:
app: "test-users"
jwtRules:
- issuer: https://test-keycloak.test.cloud/auth/realms/test
jwksUri: https://test-keycloak.test.cloud/auth/realms/test/protocol/openid-connect/certs
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: "test-jwt"
spec:
selector:
matchLabels:
app: "test-users"
rules:
- from:
- source:
requestPrincipals: ["*"]
app: test-users
ラベルが付いたワークロード (ポッド、サービス) がありますが、機能していません。test-users アプリにリクエストを実行するとJwt is missing
、トークンを渡さなくてもエラーが発生しません。セクションに偽物を入力してissuer
もjwtRules
、リクエストは引き続き通過します。RequestAuthentication
/ペアが istio-system 名前空間にデプロイされたドキュメントに記載されている他のアプローチを試しましたが、それはAuthorizationPolicy
機能しましたが、他のすべての名前空間で JWT 認証を使用する必要があり、これは私が持つことができないものです。