關於 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 位址或網路控管:VPC Service Controls 會新增一層存取安全防護,進一步提升 GKE 叢集控制層的安全性。這項功能會根據網路來源等屬性,使用情境感知存取權。

    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 位址就能存取網際網路上公開服務的節點,費用會隨之降低。

後續步驟