閘道安全性


本頁面說明在 Google Kubernetes Engine (GKE) 中保護 Gateway 的不同方法。您也可以瞭解如何保護閘道

閘道安全防護的運作方式

Gateway 代表負載平衡器的前端。您可以透過驗證和加密,保護閘道安全,方法有兩種:

  • 用戶端到閘道:流量源自用戶端,並在閘道終止。
  • 閘道至 Pod:流量源自閘道,並在後端 Pod 終止。

下圖顯示驗證及加密閘道的兩種路徑:

本頁面說明如何使用在閘道層級上傳及管理的憑證,保護用戶端到閘道的路徑。如要瞭解如何保護閘道到 Pod 的流量,請參閱「使用 TLS 保護負載平衡器到應用程式的流量」。

優點

您可以使用 Gateway API,透過多種不同方式保護應用程式,讓與 Gateway 互動的不同角色都能享有彈性。

誰擁有網域和 TLS 設定?

Gateway API 模型導入了兩個角色,可使用或部署閘道:

  • 平台管理員:叢集運算子是整個叢集的管理員。他們負責管理政策、網路存取權和應用程式權限。
  • 應用程式開發人員:應用程式開發人員會定義應用程式和服務設定。

下圖顯示 Gateway 和 HTTPRoute 資源中的欄位,這些欄位會影響兩個應用程式 (store-v1store-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 保護的閘道資源必須符合下列需求:

  • 您必須將閘道監聽器 portprotocol 設為 443HTTPS
  • 您必須將 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 憑證 支援 支援

後續步驟