本頁面說明如何使用受防護的 GKE 節點功能。受防護的 GKE 節點提供可驗證的高強度節點身分和完整性,可進一步提高 Google Kubernetes Engine (GKE) 節點的安全性。
如為 GKE Autopilot 叢集,受防護的 GKE 節點功能預設為啟用,且無法覆寫。對於 GKE 標準叢集,受防護的 GKE 節點功能預設為啟用,但可以覆寫。
關於受防護的 GKE 節點
受防護的 GKE 節點是以 Compute Engine 受防護的 VM 為基礎。如果沒有 Shielded GKE Nodes,攻擊者可能會利用 Pod 中的安全漏洞竊取啟動憑證,並冒用叢集內的節點,進而存取叢集的 Secret。啟用 Shielded GKE 節點後,GKE 控制層會以加密方式驗證下列項目:
- 叢集中的每個節點都是在 Google 資料中心執行的虛擬機器。
- 每個節點都是為叢集佈建的代管執行個體群組 (MIG) 的一部分。
- 系統正在為 kubelet 執行的節點佈建憑證。
即使攻擊者能夠竊取節點的啟動憑證,也無法冒用叢集中的節點。
即使您在叢集上停用這項功能,GKE 叢集控制層節點一律會使用 Shielded GKE 節點。啟用或停用 Shielded GKE Nodes 只會影響執行工作負載的工作站節點是否使用這項功能。
定價
執行 Shielded GKE 節點不會產生額外費用。不過,受防護的 GKE 節點在啟動時產生的記錄,會比標準節點多約 0.5 KB。詳情請參閱 Cloud Logging 定價頁面。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
在新叢集中啟用受防護的 GKE 節點
您可以使用 gcloud CLI 或 Google Cloud 控制台,建立啟用 Shielded GKE 節點的新叢集。
gcloud
建立新叢集時,請指定 --enable-shielded-nodes
選項:
gcloud container clusters create CLUSTER_NAME \
--enable-shielded-nodes
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下「add_box Create」(建立)。
在導覽窗格的「Cluster」(叢集) 底下,按一下「Security」(安全性)。
勾選「Enable Shielded GKE Nodes」(啟用受防護的 GKE 節點) 核取方塊。
視需求設定叢集。
點選「建立」。
如要進一步瞭解如何建立叢集,請參閱「建立叢集」。
在現有叢集中啟用受防護的 GKE 節點
您可以使用 Google Cloud CLI 或 Google Cloud 控制台,在現有叢集中啟用受防護的 GKE 節點。
GKE 如何啟用受防護的 GKE 節點
啟用受防護的 GKE 節點後,系統會將工作節點重新建立為受防護的 VM。叢集節點會以輪流方式重建,盡量減少停機時間。
啟用受防護的 GKE 節點後,GKE 會透過下列步驟更新叢集:
- GKE 會立即重建控制層,並忽略維護可用性。
- GKE 會以受防護的 VM 重新建立工作站節點,並遵守維護可用性。GKE 會使用節點數擴充升級,更新每個節點集區。這取決於資源可用性。停用節點自動升級功能不會阻止這項變更。
如要瞭解這項特定變更的詳細資訊,請在手動變更表格中找到對應的資料列,該表格會使用節點升級策略並遵守維護政策,重新建立節點。如要進一步瞭解節點更新,請參閱「規劃節點更新中斷」。
啟用受防護的 GKE 節點
gcloud
更新叢集時,請指定 --enable-shielded-nodes
選項:
gcloud container clusters update CLUSTER_NAME \
--enable-shielded-nodes
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下您要修改的叢集名稱。
在「安全性」下方的「受防護的 GKE 節點」欄位中,按一下 edit「編輯受防護的 GKE 節點」。
勾選「Enable Shielded GKE Nodes」(啟用受防護的 GKE 節點) 核取方塊。
按一下 [儲存變更]。
確認已啟用受防護的 GKE 節點
您可以使用 Google Cloud CLI 或 Google Cloud 控制台,確認叢集是否使用受防護的 GKE 節點。
gcloud
描述叢集:
gcloud container clusters describe CLUSTER_NAME
如果已啟用受防護的 GKE 節點,指令輸出內容會包含下列幾行:
shieldedNodes:
enabled: true
控制台
如要確認叢集是否使用受防護的 GKE 節點,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下要檢查的叢集名稱。
在「安全性」下方的「受防護的 GKE 節點」欄位中,確認受防護的 GKE 節點是否為「已啟用」。
您也可以監控節點基礎受防護 VM 的完整性。如需相關程序,請參閱「監控受防護的 VM 執行個體的完整性」一文。
停用受防護的 GKE 節點
您可以使用 Google Cloud CLI 或 Google Cloud 控制台停用 Shielded GKE 節點。
GKE 如何停用受防護的 GKE 節點
停用 Shielded GKE 節點後,GKE 會透過下列步驟更新叢集:
- GKE 會立即重建控制層,並忽略維護可用性。
- GKE 會將工作站節點重新建立為非受保護的 VM,並遵守維護作業可用性。GKE 會使用節點數擴充升級,更新每個節點集區。這取決於資源可用性。停用節點自動升級功能不會阻止這項變更。
如要瞭解這項特定變更的詳細資訊,請在手動變更表格中找到對應的資料列,該表格會使用節點升級策略並遵守維護政策,重新建立節點。如要進一步瞭解節點更新,請參閱「規劃節點更新中斷」。
停用受防護的 GKE 節點
gcloud
更新叢集時,請指定 --no-enable-shielded-nodes
選項:
gcloud container clusters update CLUSTER_NAME \
--no-enable-shielded-nodes
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下您要修改的叢集名稱。
在「安全性」下方的「受防護的 GKE 節點」欄位中,按一下 edit「編輯受防護的 GKE 節點」。
取消勾選「Enable Shielded GKE Nodes」(啟用受防護的 GKE 節點) 核取方塊。
按一下 [儲存變更]。
節點完整性
您也可以在節點集區中設定節點完整性檢查,為節點提供更完善的 Rootkit 和 Bootkit 防護。受防護的 GKE 節點、安全啟動和完整性監控功能是獨立的功能,可以個別啟用或停用。
安全啟動
安全啟動是節點集區設定,可在啟動程序期間驗證節點 VM 的啟動元件,例如核心和開機載入程式。節點集區預設會停用安全啟動功能。
在節點集區中啟用安全啟動前,請先考量下列事項:
- 在 Ubuntu 節點中啟用安全啟動功能後,系統會禁止在這些節點中載入未簽署的第三方核心模組。
- 在 Container-Optimized OS 節點中啟用安全啟動功能,不會影響核心模組載入作業,因為 Container-Optimized OS 節點映像檔會控管載入第三方核心模組的功能,與安全啟動功能無關。
如要啟用安全啟動,請使用 Google Cloud CLI 或 Google Cloud 控制台。
gcloud
如要在建立叢集時啟用安全啟動功能,請按照下列步驟操作:
gcloud container clusters create CLUSTER_NAME \
--shielded-secure-boot
如要在建立節點集區時啟用安全啟動功能:
gcloud container node-pools create POOL_NAME \
--shielded-secure-boot
安全啟動功能預設為停用。使用 --no-shielded-secure-boot
選項建立叢集或節點集區時,可以明確停用這項功能。
控制台
如要在建立節點集區時啟用安全啟動功能:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下您要修改的叢集名稱。
按一下 add_box「Add Node Pool」(新增節點集區)。
在導覽選單中按一下「Security」(安全性)。
在「Shielded options」(受防護的選項) 下方,勾選「Enable secure boot」(啟用安全啟動功能) 核取方塊。
點選「建立」。
完整性監控
完整性監控是節點集區設定,預設會在 GKE 上啟用。您可以使用 Google Cloud CLI 或 Google Cloud 控制台停用完整性監控。
gcloud
建立節點集區時,如何停用系統元件的完整性監控功能:
gcloud container node-pools create POOL_NAME \
--no-shielded-integrity-monitoring
完整性監控功能預設為啟用。使用 --shielded-integrity-monitoring
選項建立節點集區時,您可以明確啟用這項功能。
控制台
如要在建立節點集區時停用完整性監控功能,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下您要修改的叢集名稱。
按一下 add_box「Add Node Pool」(新增節點集區)。
按一下導覽窗格中的「Security」(安全性)。
在「受防護的選項」下方,取消勾選「啟用完整性監控」核取方塊。