控制層安全性

本文件說明在 Google Kubernetes Engine 中保護叢集控制層元件的方式。

共同責任模式下,Google 會為您管理 GKE 控制層元件。控制層包括 Kubernetes API 伺服器,etcd 和多種控制器。儘管您可以依自己的需求設定某些選項,但 Google 會負責保護控制層。您則負責保護節點、容器和 Pod。

強化的作業系統

GKE 控制層元件是在 Container-Optimized OS 上執行,這是一個由 Google 設計的安全強化作業系統。有關 Container Optimized OS 內建安全功能的詳細說明,請參閱 Container-Optimized OS 安全性總覽

架構與隔離

在 GKE 叢集中,控制層元件在 Google 代管的專案中,並在 Google 所擁有的Compute Engine 執行個體上執行。每個執行個體僅為一個客戶執行這些元件。

對 Kubernetes API 伺服器和 etcd 的驗證與其他 Google Cloud 服務的驗證方式相同。 應用程式層傳輸安全 (ALTS) 會保護這些通訊。

對叢集的管理存取權限

Google Site Reliability Engineers 的 SSH 工作階段是透過 Google 的內部稽核基礎架構進行稽核紀錄,該架構可用於識別和安全性應變。詳情請請參閱 Google Security 白皮書中的管理存取權限

etcd 安全性

在 Google Cloud Platform 中的預設情況下,客戶內容是在檔案系統層中加密。因此,代管 GKE 叢集的 etcd 儲存空間磁碟會在檔案系統層加密。詳情請參閱靜態加密

etcd 會監聽兩個 TCP 通訊埠。通訊埠 2379 是用於 etcd 用戶端,如 Kubernetes API 伺服器。通訊埠 2379 是繫結到本機回送網絡通訊埠,因此只能從執行 Kubernetes API 伺服器的 VM 進行存取。通訊埠 2380 是用於伺服器對伺服器的通訊。通訊埠 2380 上的流量是由雙向 TLS 進行加密。也就是說,每個伺服器必須向另一個伺服器證明其身份。在區域叢集中,用於建立仲裁的 etcd 伺服器之間的通訊是由雙向 TLS進行加密。

憑證授權單位和叢集信任

每個叢集都有自己的根憑證授權單位 (CA)。這個 CA 的根金鑰是由內部 Google 服務管理,每個叢集也擁有其用於 etcd 的 CA。etcd CA 的根金鑰會分送到執行 Kubernetes API 伺服器的 VM 上的中繼資料。節點與 Kubernetes API 伺服器之間的通訊是受 TLS 保護。詳情請參閱叢集信任

安全漏洞和修補程式管理

GKE 會遵循 Google 標準以進行測試、合格鑑定,並逐步推行對控制層的變更。這將大幅降低控制層元件無法使用的風險。GKE 會遵循服務水準協議,該協議定義了可用性的許多層面。

GKE 控制層元件是由 Google 的網站可靠性工程師團隊進行管理,並與最新的安全性修補程式保持同步。這包括主機作業系統的修補程式,Kubernetes 元件以及在控制層 VM 上執行的容器。

GKE 會立即將新的核心、作業系統和 Kubernetes 等級的修正套用到控制層 VM。當這些包含已知安全漏洞的修補程式時,GKE 安全性公告中也提供了其他信息。GKE 會使用Container Registry 安全漏洞掃描來掃描所有 Kubernetes 系統和GKE 特定容器的安全漏洞,並持續對容器進行修補,從而使整個 Kubernetes 生態系統受益。

Google 工程師會參與尋找、修復和揭露 Kubernetes 安全漏洞。Google 會透過 Google 服務漏洞獎勵計劃向外部安全研究人員付費,以尋找安全性漏洞。在某些情況下,(例如 2017 年 10 月的 Dnsmasq 安全漏洞) GKE 可在安全漏洞公開之前修補所有正在執行的叢集。

Google 所提供的安全性監控和設定功能

本主題將討論前述的安全功能,此安全性功能是由 Google 所管理。本節和接下來的章節將討論可以監控和設定的安全性功能。

自 1.8.3 版發布後,叢集建立後的稽核記錄即預設為啟用。這提供了對 Kubernetes API 伺服器進行呼叫的詳細記錄 (可在 Stackdriver 中取得)。您可以在 GCP 主控台的記錄頁面上查看記錄項目。您也可以使用 BigQuery 檢視和分析這些記錄。

您可以設定的部分

預設情況下,Kubernetes API 伺服器會使用公開的 IP 位址。您可使用主要授權網路私人叢集來保護 Kubernetes API 伺服器,以便指派私人 IP 位址至 Kubernetes API 伺服器,並停用公開 IP 位址的存取權限。

您可使用 Cloud IAM 做為識別資訊提供者,以處理 GKE 中的叢集驗證。您應該透過為 MasterAuth 配置來設定空的使用者名稱和密碼,來確保已停用基本驗證。在相同的配置中,您也可以停用用戶端憑證,如此一來在鎖定叢集存取權時,就不需要考慮此金鑰。

您可以透過定期憑證輪替來強化控制層的安全性。啟動憑證輪替之後,就會自動替換 TLS 憑證及叢集憑證授權單位。GKE 也會輪替 Kubernetes API 伺服器的 IP 位址。若需更多資訊,請參閱角色型存取控制憑證輪替

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件