關於 GKE 中的網路隔離


本頁說明 Google Kubernetes Engine (GKE) 叢集控制層和叢集節點的網路隔離和存取控制機制。本頁面取代了說明私人叢集概念的頁面。

決定如何設定網路隔離時,請考量以下兩點:

  • 控制層存取權:與可存取叢集控制層的對象有關。
  • 叢集網路,與隔離節點有關。

本頁面說明如何控管及自訂叢集控制層和叢集節點 (在標準叢集中) 或工作負載 (在 Autopilot 叢集中) 的存取權。決定叢集的網路設定時,這項自訂功能就非常實用。如要直接定義網路設定,請參閱「自訂網路隔離」。

最佳做法

與貴機構的網路架構師、網路工程師、網路管理員,或負責定義、實作及維護網路架構的其他團隊,共同規劃及設計網路隔離設定。

控制層存取權

在本節中,您將考量哪些人可以存取控制層。

每個 GKE 叢集都有一個控制層,負責處理 Kubernetes API 要求。控制層會在 Google 代管專案的 VPC 網路中,透過虛擬機器 (VM) 執行。區域叢集具有多個控制層副本,每個副本都會在自己的 VM 上執行。

控制層有兩種叢集存取端點:

  • 以 DNS 為基礎的端點
  • 以 IP 為準的端點
最佳做法

僅使用以 DNS 為基礎的端點存取控制層,簡化設定並提供彈性且以政策為基礎的安全層。

以 DNS 為基礎的端點

以 DNS 為基礎的端點會為每個叢集控制層提供專屬的 DNS 或完整網域名稱 (FQDN)。這個 DNS 名稱可用於存取控制平面。DNS 名稱會解析為可從 Google Cloud API 存取的端點,包括地端或其他雲端網路。啟用以 DNS 為基礎的端點後,您就不需要防禦主機或 Proxy 節點,即可從其他虛擬私有雲網路或外部位置存取控制層。

如要存取控制層端點,您需要設定 IAM 角色和政策,以及驗證權杖。如要進一步瞭解確切的必要權限,請參閱「自訂網路隔離」。

除了 IAM 政策和權杖,您也可以設定下列存取屬性:

  • 透過 VPC Service Controls 進行 IP 位址或網路控管:為提升 GKE 叢集控制層的安全性,VPC Service Controls 會新增一層存取安全防護。這項功能會根據網路來源等屬性,使用情境感知存取權。

    VPC Service Controls 不直接支援控制層使用公開 IP 位址的叢集。不過,當您使用以 DNS 為基礎的端點存取 GKE 叢集 (包括私人和公開叢集) 時,VPC Service Controls 會提供保護。

    設定 VPC Service Controls 時,請在服務範圍的受限服務清單中加入 container.googleapis.comkubernetesmetadata.googleapis.com,保護 GKE 叢集的 DNS 型端點。將這些 API 新增至服務範圍後,所有 GKE API 作業都會啟用 VPC-SC。這項設定可確保您定義的安全防護範圍控管控制層的存取權。

    同時使用 IAM 政策和 VPC Service Controls,確保 DNS 型端點的存取安全,為叢集控制層建立多層安全模型。VPC Service Controls 會與支援的 Google Cloud 服務整合。這項功能可讓叢集的安全設定與您在其他 Google Cloud 服務中代管的資料保持一致。

  • Private Service Connect 或 Cloud NAT:從無法存取公用網際網路的用戶端存取 DNS 型端點。根據預設,您可以透過公開網際網路上的 API 存取 DNS 型端點。 Google Cloud詳情請參閱「自訂網路隔離」頁面的「以 DNS 為基礎的端點」。

以 IP 為準的端點

您也可以選擇使用 IP 型端點,設定控制層的存取權。

與叢集和 IP 位址相關的術語

  • Google Cloud 外部 IP 位址

    • Google Cloud. Google Cloud 擁有指派給任何 VM 的外部 IP 位址,這些 VM 供託管在Google Cloud. Google Cloud 上的任何客戶使用。詳情請參閱「哪裡可以找到 Compute Engine IP 範圍?」一文。

    • Google Cloud 產品 (例如 Cloud Run 或 Cloud Run 函式) 使用的外部 IP 位址。在 Google Cloud 上代管的任何用戶端都可以例項化這些 IP 位址。 Google Cloud 擁有這些 IP 位址。

  • Google 保留的 IP 位址:用於 GKE 叢集管理的外部 IP 位址。這些 IP 位址包括 GKE 管理的程序和其他生產環境 Google 服務。這些 IP 位址屬於 Google。

  • GKE 叢集 IP 位址範圍:指派給叢集的內部 IP 位址,GKE 會用於叢集的節點、Pod 和服務。

  • 內部 IP 位址:叢集虛擬私有雲網路的 IP 位址。這些 IP 位址可以包括叢集 IP 位址、內部部署網路、RFC 1918 範圍,或包括非 RFC 1918 範圍的私人使用公用 IP (PUPI) 位址。

  • 外部端點:GKE 指派給控制層的外部 IP 位址。

  • 內部端點:GKE 指派給控制層的內部 IP 位址。

  • 虛擬私有雲網路:您可以在虛擬網路中建立子網路,並為叢集的節點和 Pod 指定 IP 位址範圍。

使用 IP 型端點時,有兩種做法:

  • 在外部和內部端點公開控制層。 這表示您可以從外部 IP 位址存取控制層的外部端點,並從叢集的 VPC 網路存取內部端點。節點只會透過內部端點與控制層通訊。

  • 僅在內部端點公開控制層。也就是說,網際網路上的用戶端無法連線至叢集,且可從叢集虛擬私有雲網路的任何 IP 位址存取控制層。節點只會透過內部端點與控制層通訊。

    使用 IP 型端點時,這是最安全的選項,因為可防止對控制層的一切網際網路存取。如果您的工作負載需要控管存取權 (例如因資料隱私權和安全法規),建議選用這項服務。

無論選擇上述哪一種做法,您都可以設定授權網路,限制哪些 IP 位址可以連上端點。如果您使用以 IP 為基礎的端點,強烈建議您至少新增一個授權網路。授權網路會授予一組特定信任 IPv4 位址的控制層存取權,並為 GKE 叢集提供保護和額外的安全防護。

最佳做法

使用以 IP 為基礎的端點時,請啟用授權網路,確保 GKE 叢集安全無虞。

授權網路的運作方式

授權網路會提供以 IP 為基礎的防火牆,以便管理 GKE 控制層存取情形。控制層的存取權取決於來源 IP 位址。啟用授權網路後,您會將要允許存取 GKE 叢集控制層端點的 IP 位址,設定為 CIDR 區塊清單。

下表顯示:

  • 無論您是否啟用授權網路,這些預設 IP 位址一律可以存取 GKE 控制層。
  • 啟用授權網路後,可存取控制層的可設定 IP 位址。
控制層端點 預設可一律存取端點的 IP 位址 啟用授權網路後,可存取端點的可設定 IP 位址
已啟用外部和內部端點
  • Google 保留的 IP 位址
  • GKE 叢集 IP 位址範圍
  • 允許清單中的外部 IP 位址
  • 已加入許可清單的內部 IP 位址
  • Google Cloud 外部 IP 位址
僅啟用內部端點
  • Google 保留的 IP 位址
  • GKE 叢集 IP 位址範圍
  • 已加入許可清單的內部 IP 位址。

您也可以透過授權網路設定區域,讓內部 IP 位址可從該區域連線至控制層的內部端點。您可以選擇只允許從叢集的虛擬私有雲網路存取,或允許從虛擬私有雲或地端部署環境中的任何 Google Cloud 區域存取。

使用以 IP 為基礎的端點時的限制

  • 如果擴充子網路,且該子網路用於具有授權網路的叢集,則必須更新授權網路設定,納入擴充的 IP 位址範圍。
  • 如果用戶端是透過動態 IP 位址的網路連線 (例如員工的家用網路),您必須經常更新授權網路清單,才能維持叢集存取權。
  • 停用控制層外部端點的存取權後,您就無法遠端與叢集互動。如要遠端存取叢集,必須使用防禦主機,將用戶端流量轉送至叢集。相較之下,使用 DNS 型端點只需要設定 IAM 權限。
  • 以 IP 為基礎的端點不會直接與 VPC Service Controls 整合。VPC Service Controls 會在服務範圍層級運作,控管 Google Cloud內的資料存取和移動。建議您同時使用 DNS 型端點和 VPC Service Controls,以獲得強大的安全防禦機制。
  • 您最多可以指定 100 個授權 IP 位址範圍 (包括外部和內部 IP 位址)。

叢集網路存取權

本節將探討如何隔離 Kubernetes 叢集內的節點

啟用私人節點

只透過內部 IP 位址佈建節點,讓節點成為私人節點,防止外部用戶端存取節點。如果節點沒有外部 IP 位址,除非在叢集網路中啟用 NAT,否則節點上執行的工作負載無法連上網際網路。你隨時可以變更這些設定。

您可以在個別叢集層級或節點集區層級 (適用於 Standard) 或工作負載層級 (適用於 Autopilot) 啟用私人節點。在節點集區或工作負載層級啟用私有節點,會覆寫叢集層級的任何節點設定。

如果將公開節點集區更新為私人模式,在下列情況下,需要存取叢集網路外部的工作負載可能會失敗:

  • 共用虛擬私有雲網路中未啟用 Private Google Access 的叢集。手動啟用 Private Google Access,確保 GKE 下載指派的節點映像檔。如果叢集不在共用虛擬私有雲網路中,GKE 會自動啟用私人 Google 存取權。

  • 需要存取網際網路,但未啟用 Cloud NAT 或未定義自訂 NAT 解決方案的工作負載。如要允許傳出流量連至網際網路,請啟用 Cloud NAT 或自訂 NAT 解決方案。

無論是否啟用私人節點,控制層都只會透過內部 IP 位址與各節點通訊。

網路隔離的優點

網路隔離的優點如下:

  • 彈性

    • 叢集具有統一且彈性的設定。無論叢集是否具備外部端點,都採用相同的架構,並支援相同的功能。您可以根據符合需求的控制項和最佳做法,確保存取安全無虞。叢集中的節點與控制層之間的所有通訊都會使用內部 IP 位址。
    • 您可以隨時變更控制層存取權和叢集節點設定,不必重新建立叢集。
    • 如果您需要從任何可存取網際網路的位置,或從未直接連線至虛擬私有雲的網路或裝置管理叢集,可以選擇啟用控制層的外部端點。或者,如果需要為機密工作負載維持網路區隔,可以停用外部端點,以提升安全性。無論是哪種情況,您都可以使用授權網路,限制對信任 IP 範圍的存取權。
  • 安全性

    • 透過 VPC Service Controls 使用 DNS 型端點,可提供多層安全防護模型,保護叢集免受未經授權的網路和身分存取控制層的威脅。VPC Service Controls 會與 Cloud Audit Logs 整合,監控控制層的存取權。
    • 私人節點和在這些節點上執行的工作負載,無法直接從公開網際網路存取,因此可大幅降低叢集遭受外部攻擊的可能性。
    • 您可以封鎖Google Cloud 外部 IP 位址或外部 IP 位址的控制層存取權,完全隔離叢集控制層,減少潛在安全威脅。
  • 法規遵循:如果您所屬的產業對資料存取和儲存有嚴格規定,私有節點可確保機密資料保留在私有網路中,協助您遵守法規。

  • 控管:私人節點可讓您精細控管叢集內外的流量流動方式。您可以設定防火牆規則和網路政策,只允許授權通訊。如果您在多雲端環境中運作,私人節點可協助您在不同環境之間建立安全且受控的通訊。

  • 費用:啟用私人節點後,不需要外部 IP 位址就能存取網際網路上公開服務的節點,可降低費用。

後續步驟