本頁面說明在 Google Kubernetes Engine (GKE) 中保護 Gateway 的不同方法。您也可以瞭解如何保護閘道。
閘道安全防護的運作方式
Gateway 代表負載平衡器的前端。您可以透過驗證和加密,保護閘道安全,方法有兩種:
- 用戶端到閘道:流量源自用戶端,並在閘道終止。
- 閘道至 Pod:流量源自閘道,並在後端 Pod 終止。
下圖顯示驗證及加密閘道的兩種路徑:
本頁面說明如何使用在閘道層級上傳及管理的憑證,保護用戶端到閘道的路徑。如要瞭解如何保護閘道到 Pod 的流量,請參閱「使用 TLS 保護負載平衡器到應用程式的流量」。
優點
您可以使用 Gateway API,透過多種不同方式保護應用程式,讓與 Gateway 互動的不同角色都能享有彈性。
誰擁有網域和 TLS 設定?
Gateway API 模型導入了兩個角色,可使用或部署閘道:
- 平台管理員:叢集運算子是整個叢集的管理員。他們負責管理政策、網路存取權和應用程式權限。
- 應用程式開發人員:應用程式開發人員會定義應用程式和服務設定。
下圖顯示 Gateway 和 HTTPRoute 資源中的欄位,這些欄位會影響兩個應用程式 (store-v1
和 store-v2
) 的 TLS 和網域擁有權。
在上圖中,叢集運算子會控管下列項目:
- 應用程式開發人員可在每個命名空間中,為應用程式使用哪些網域。
- 終止不同網域的特定憑證。
- 閘道擁有者提供的憑證。
- HTTPRoute 擁有者是否可指定自己的主機名稱來產生憑證。
如果 Gateway 定義允許,應用程式開發人員可以控管產生憑證的主機名稱。
這種作業工作分離機制可讓應用程式開發人員部署及管理自己的 HTTPRoute,以實現更分散的控制,並讓平台管理員部署及管理 Gateway,以集中控管 TLS。
閘道憑證管理
您可以使用下列任一方法保護閘道:
如果您使用 Kubernetes Secrets 或 Compute Engine API 的 SslCertificate
資源,則單一 Gateway 最多可附加 15 個憑證。
如果申請提高配額,憑證管理員最多可為每個負載平衡器附加 10,000,000 個憑證。
如要進一步瞭解 Google Cloud 安全資料傳輸層 (SSL) 憑證,請參閱安全資料傳輸層 (SSL) 憑證總覽。
Kubernetes Secret
Gateway API 規格支援使用 Kubernetes Secret 儲存憑證,並將憑證附加至閘道。您可以使用 Gateway.spec.tls.certificateRef
欄位,將一或多個 Kubernetes Secret 與 Gateway 建立關聯。
透過 Kubernetes Secret 保護的閘道資源必須符合下列需求:
- 您必須將閘道監聽器
port
和protocol
設為443
和HTTPS
。 - 您必須將
listener.tls.mode
欄位設為Terminate
。 - 您必須在
listeners.tls
區塊中參照 TLS 憑證。
使用 Kubernetes Secret 保護的閘道資源有下列限制:
- 只有 HTTPS 接聽程式會使用指定的密鑰終止流量,但您可以指定多個接聽程式,混合使用 HTTP 和 HTTPS。
- 如果有多個接聽程式在同一個閘道上使用 HTTPS,每個接聽程式都必須有專屬的主機名稱。
- 每個通訊埠和通訊協定配對只能省略單一主機名稱或指派
*
。 - 每個閘道只能指派一個預設憑證。
如要瞭解如何使用 Kubernetes Secret 保護 Gateway,請參閱「使用 Kubernetes Secret 保護 Gateway」。
SSL 憑證
SSL 憑證會儲存憑證,並將憑證傳送至負載平衡器。
SSL 憑證可以自行管理或由 Google 代管。
如要進一步瞭解這兩種類型憑證的差異,請參閱「SSL 憑證總覽」。
SSL 憑證的範圍和位置必須與使用該憑證的閘道範圍和位置相符。舉例來說,區域閘道無法使用全域 SSL 憑證。
下表列出各 GatewayClass 的 SSL 憑證範圍和位置規定:
GatewayClass | SSL 憑證範圍 | SSL 憑證位置 |
---|---|---|
gke-l7-global-external-managed |
全球 SSL 憑證 | 全球 |
gke-l7-global-external-managed-mc |
||
gke-l7-gxlb |
||
gke-l7-gxlb-mc |
||
gke-l7-regional-external-managed |
地區 SSL 憑證 | 必須與閘道位於相同區域 |
gke-l7-regional-external-managed-mc |
||
gke-l7-rilb |
||
gke-l7-rilb-mc |
Google 代管的 SSL 憑證不相容於區域閘道。 如要瞭解如何使用 SSL 憑證保護閘道,請參閱使用 SSL 憑證保護閘道。
Certificate Manager
憑證管理工具是集中管理 TLS 憑證的位置。
使用 Certificate Manager 保護 Gateway 時,您可以執行下列操作:
- 直接從您在憑證管理工具中建立的閘道參照
CertificateMap
。 - 管理自己的憑證。
- 縮短憑證傳播時間。
- 使用 Cloud Monitoring 監控過期憑證和憑證傳播情形。
憑證管理工具支援自行管理和 Google 代管的 SSL 憑證。如要瞭解如何使用 Certificate Manager 保護 Gateway,請參閱「使用 Certificate Manager 保護 Gateway」。
GatewayClass TLS 支援
下表說明 GKE 支援的 TLS 終止方法,並依 GatewayClass 分類:
GatewayClass |
gke-l7-global-external-managed gke-l7-global-external-managed-mc gke-l7-gxlb gke-l7-gxlb-mc
|
gke-l7-regional-external-managed gke-l7-regional-external-managed-mc gke-l7-rilb gke-l7-rilb-mc
|
---|---|---|
用戶端到閘道的 TLS | 支援 | 支援 |
閘道到後端的 TLS | 支援 | 支援 |
Google Cloud 憑證資源 | 全域 SSL 憑證CertificateMap |
地區 SSL 憑證 |
使用 Kubernetes Secret 的自行管理憑證 | 支援 | 支援 |
自行管理的 Compute Engine SSL 憑證 | 支援 | 支援 |
Google 代管的 Compute Engine SSL 憑證 | 支援 | 不支援 |
透過 Certificate Manager 自行管理 SSL 憑證 | 支援 | 支援 |
透過 Certificate Manager 使用 Google 代管的 SSL 憑證 | 支援 | 支援 |
後續步驟
- 瞭解如何保護閘道。