檢視次數:
設定檔適用性:等級 2
如果不需要,請關閉從節點網路外部訪問 Kubernetes API 的權限。
在私人叢集內,主節點有兩個端點:一個私人端點和一個公共端點。私人端點是主節點的內部 IP 位址,位於主節點的 VPC Network 中的內部負載平衡器後方。節點使用私人端點與主節點進行通訊。
公用端點使 Kubernetes API 可以從主節點的 VPC Network 外部進行訪問。儘管 Kubernetes API 需要授權的令牌來執行敏感操作,但弱點可能會導致 Kubernetes 被公開暴露,並允許無限制的訪問。
此外,攻擊者可能能夠識別當前叢集和 Kubernetes API 版本,並確定其是否易受攻擊。除非必要,否則禁用公共端點將有助於防止此類威脅,並要求攻擊者必須在主節點的 VPC Network 上才能對 Kubernetes API 進行任何攻擊。
注意
注意
預設情況下,私人端點是停用的。

影響

要啟用私人端點,叢集也必須配置私人節點、私人主機 IP 範圍以及啟用 IP 別名。如果在叢集建立期間,將 --enable-private-endpoint 標誌傳遞給 gcloud CLI,或在 Google Cloud Console 中未定義外部 IP 位址,則所有來自公共 IP 位址的訪問將被禁止。

稽核

使用 Google Cloud 主控台:
  1. 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面
  2. 選擇所需的叢集,並在詳細資訊窗格中,確保端點沒有公共 IP 位址。
使用命令列:
要檢查現有叢集的私人端點狀態,首先定義三個變數:叢集名稱、位置資訊和專案,然後執行以下命令:
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION --
project $PROJECT_ID --format json | jq '.privateClusterConfig.enablePrivateEndpoint'
上述命令的輸出會返回 { "enablePrivateEndpoint": true },如果已啟用私人端點且公共訪問已停用。
為了進行額外檢查,可以使用以下命令查詢端點參數:
gcloud container clusters describe <cluster_name> --format json | jq '.endpoint'
如果已啟動私人端點且已停用公共存取,則上述命令的輸出會返回一個私人 IP 位址。

補救

一旦建立叢集時未啟用僅限私人端點,則無法修復。相反,必須重新建立叢集。
使用 Google Cloud 主控台:
  1. 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面
  2. 點擊建立叢集,然後選擇標準模式叢集的配置。
  3. 按需求配置叢集,然後在導航窗格中的叢集下點擊網路。
  4. 在 IPv4 網路存取下,點擊私人叢集單選按鈕。
  5. 取消勾選使用其外部IP位址的存取控制平面核取方塊。
  6. 在控制平面 IP 範圍文本框中,提供控制平面的 IP 範圍。
  7. 根據需要配置其他設定,然後點擊建立。
使用命令列:
在叢集建立命令中包含 --enable-private-endpoint 標誌,以建立已啟動私人端點且已停用公共存取的叢集:
gcloud container clusters create <cluster_name> --enable-private-endpoint
設定此旗標還需要設定--enable-private-nodes--enable-ip-alias--master-ipv4-cidr=<master_cidr_range>