[英]How to enable both Mutual TLS and gRPC TLS in Istio such that Istio can collect metrics, but gRPC considers the connection "Safe"
這是一個“原則上”的問題,因為我試圖了解 mTLS 在 Istio 中的實現方式,以及它如何與支持 mTLS 的服務(例如 gRPC)一起工作。
考慮到我有一個啟用了“mtls 無處不在”的集群。 這有效地在 envoy 代理之間通過 mTLS 管道建立了所有 TCP 連接的隧道,並且 envoy 和服務之間的連接是純文本的。
但是,有些服務至少需要 TLS 連接才能使用 Envoy 代理; 理想情況下是 mTLS 連接。 其中之一是 gRPC,它需要 TLS 才能使用其核心 JWT 身份驗證:
https://grpc.io/docs/guides/auth.html#authenticate-with-google
所以,問題變成了:
<3 干杯
Istio 試圖解決的眾多問題之一是將證書管理從應用層卸載到 sidecar 容器。 我個人不知道有什么方法可以使用 Citadel 來管理應用程序容器中的證書,至於“窺探”,您可能會嘗試使用envoy filter做一些事情,但即使可以,這也將是自定義解決方案,很容易被破壞. 不知何故,我認為這行不通,或者根本無法完成。 您的第一個問題/方法似乎走錯了路。
不幸的是,我無法直接回答您的第二個問題,但我曾短暫參與過一個項目,該項目使用帶有JWT 的gRPC 微服務,該項目經過 Istio 驗證,但我們確實沒有處理容器中的證書。 因此,在沒有具體實現細節的情況下,我會說選項二是可行的方法。
值得一提的是所使用的身份驗證策略示例。
apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
name: {{ template "service.name" . }}
labels:
app: {{ template "service.name" . }}
chart: {{ template "service.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
targets:
- name: {{ template "service.name" . }}
origins:
- jwt:
issuer: https://auth.company.com/
jwksUri: https://auth-service.auth.svc.cluster.local:8008/keys/public
audiences:
- dGQVkdEluc3RhrmNps:CompanyApp:CompanyOrg
principalBinding: USE_ORIGIN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.