以機密 GKE 節點加密工作負載資料


本頁面說明如何使用機密 Google Kubernetes Engine 節點,在節點和工作負載中強制加密使用中的資料。強制執行加密可提高工作負載的安全性。

本頁面適用於在 GKE 上導入安全防護機制的安全專家。如要進一步瞭解我們在內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud

閱讀本頁面之前,請先熟悉「使用中資料」的概念。

什麼是機密 GKE 節點?

您可以透過機密 GKE 節點或 Hyperdisk Balanced 機密模式,加密工作負載。

機密 GKE 節點

機密 GKE 節點會使用 Compute Engine 機密 VM,透過硬體式記憶體加密保護使用中的資料。機密 GKE 節點支援下列機密運算技術:

  • AMD 安全加密虛擬化 (SEV)
  • AMD 安全加密虛擬化 - 安全巢狀分頁 (SEV-SNP)
  • Intel Trust Domain Extensions (TDX)

如要進一步瞭解這些技術,並取得協助,為您的需求選擇最佳技術,請參閱「機密 VM 總覽」。

機密 GKE 節點不會變更 GKE 對叢集控制層採用的安全措施。如要瞭解這些措施,請參閱「控制層安全性」。如要瞭解誰存取專案中的控制平面,請使用 Google Cloud資料存取透明化控管機制

您可以為整個叢集、特定節點集區或特定工作負載啟用機密 GKE 節點。下表說明這些啟用方法:

機密 GKE 節點設定 說明 行為
工作負載層級 ComputeClass 中設定機密 GKE 節點,然後在工作負載中選取該 ComputeClass。GKE 會建立使用該設定的節點,以執行 Pod。

無論叢集模式或節點集區類型為何,工作負載設定都支援下列任一機密運算技術:

  • AMD SEV
  • AMD SEV-SNP
  • Intel TDX
叢集層級 這項設定無法復原。

建立新的 Autopilot 或 Standard 叢集時,請啟用機密 GKE 節點。叢集中的所有節點都會使用機密 GKE 節點。您無法針對個別節點集區或工作負載覆寫叢集設定。

叢集層級支援的技術取決於叢集作業模式,如下所示:

  • Autopilot 叢集:AMD SEV
  • 標準叢集
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
節點集區層級 在 Standard 叢集中建立新節點集區時,啟用機密 GKE 節點。只有在叢集層級停用機密 GKE 節點時,才能使用這個方法。

節點集區層級支援的技術取決於節點集區是否使用節點自動佈建功能,如下所示:

  • 手動建立的節點集區
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
  • 自動佈建的節點集區
    • AMD SEV
    • AMD SEV-SNP

Hyperdisk Balanced 機密模式

您也可以在開機磁碟儲存空間上啟用 Hyperdisk Balanced 機密模式,在額外的硬體支援安全區中加密資料。

執行下列任一操作時,您可以為 Hyperdisk Balanced 啟用機密模式:

  • 建立新叢集
  • 建立新的節點集區

您無法更新現有叢集或節點集區,變更 Hyperdisk Balanced 設定的機密模式。

下表說明在叢集層級或節點集區層級啟用 Hyperdisk Balanced 設定的機密模式時,適用的 GKE 行為:

Hyperdisk Balanced 機密模式設定 設定操作說明 行為
叢集層級 建立新叢集 只有叢集中的預設節點集區會使用 Hyperdisk Balanced 機密模式設定。您無法執行下列操作:
  • 為叢集中的現有節點集區停用 Hyperdisk Balanced 設定的機密模式
  • 在現有叢集上啟用 Hyperdisk Balanced 設定的機密模式
節點集區層級 建立新的節點集區 您可以在建立任何新節點集區時,為 Hyperdisk Balanced 設定機密模式。您無法更新現有節點集區,以使用 Hyperdisk Balanced 設定的機密模式。

定價

視您設定機密 GKE 節點的方式而定,適用下列定價:

機密 GKE 節點定價
工作負載層級

在 Autopilot 工作負載中,下列兩種費用都適用:

  • 系統會根據 Pod 執行的 Compute Engine 機型系列,以節點為單位計算費用。詳情請參閱 Google Kubernetes Engine 價格的「具有特定硬體需求的 Pod」一節。
  • 機密 GKE 節點定價。詳情請參閱「機密 VM 定價」一文的「GKE Autopilot 的機密 GKE 節點定價」一節。

在標準工作負載中,您需要支付下列兩種費用:

叢集層級

在 Autopilot 叢集中,下列兩種費用都適用:

  • 兼顧運算類別價格,因為叢集中的預設機器系列會變更為 N2D。詳情請參閱 Google Kubernetes Engine 定價的「Balanced and Scale-Out compute class Pods」(平衡和擴充運算類別 Pod) 一節。
  • 機密 GKE 節點定價。詳情請參閱「機密 VM 定價」一文的「GKE Autopilot 的機密 GKE 節點定價」一節。

在標準叢集中,會產生下列兩種費用:

節點集區層級

在標準節點集區中,適用下列費用:

此外,機密 GKE 節點啟動時產生的記錄資料,可能比非機密 GKE 節點略多。如要進一步瞭解記錄檔定價,請參閱 Google Cloud Observability 定價

事前準備

開始之前,請確認您已完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。

需求條件

機密 GKE 節點必須符合下列條件:

  • Autopilot 叢集必須執行 GKE 1.30.2 以上版本。
  • 視您選擇的機密運算技術而定,標準叢集必須執行下列其中一個 GKE 版本:

    • AMD SEV:任何 GKE 版本。
    • AMD SEV-SNP:1.32.2-gke.1297000 以上版本。
    • Intel TDX:1.32.2-gke.1297000 以上版本。
  • 如要在工作負載層級啟用機密 GKE 節點,Autopilot 和 Standard 叢集必須執行 GKE 1.33.3-gke.1392000 以上版本。

  • 節點必須使用支援所選機密運算技術的機型。詳情請參閱機器類型、CPU 和區域

  • 叢集控制層和節點必須位於支援所選機密運算技術的位置。詳情請參閱「查看支援的區域」。

在工作負載層級設定機密 GKE 節點

如要在個別工作負載中啟用機密 GKE 節點,請使用 ComputeClass。ComputeClass 是 Kubernetes 自訂資源,可讓您定義 GKE 建立的新節點屬性,並在硬體無法使用時控管備援行為。ComputeClasses 支援 GKE 的所有可用機密運算技術,即使叢集或節點集區層級不支援特定技術也一樣。

如要在工作負載層級設定機密 GKE 節點,請按照下列步驟操作:

  1. 選用:如果是 GKE Standard 叢集,請為叢集啟用節點自動佈建功能。如果是 Autopilot 叢集,請略過這個步驟。

    如果您選擇使用 ComputeClasses,但只手動建立節點集區,則也必須手動設定這些節點集區的節點汙點和節點標籤。這項額外的手動設定可能會導致您發現,使用 ComputeClass 建立機密 GKE 節點的好處較少。

  2. 將下列 ComputeClass 資訊清單儲存為 YAML 檔案。如要進一步瞭解 ComputeClass 支援的欄位和值,請參閱 ComputeClass CustomResourceDefinition

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        confidentialNodeType: CONFIDENTIAL_COMPUTE_TECHNOLOGY
      nodePoolAutoCreation:
        enabled: true
      activeMigration:
        optimizeRulePriority: true
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - machineFamily: MACHINE_SERIES
      - machineType: MACHINE_TYPE
      whenUnsatisfiable: DoNotScaleUp
    

    更改下列內容:

    • COMPUTE_CLASS:新運算類別的名稱。
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY:要使用的機密運算技術。支援的值如下:

      • SEV (適用於 AMD SEV)
      • SEV_SNP (適用於 AMD SEV-SNP)
      • TDX for Intel TDX
    • ZONE1,ZONE2,...:要在其中建立節點的可用區,例如 ['us-central1-a','us-central1-b']。指定支援您所指定機密運算技術的區域。詳情請參閱「查看支援的區域」。

    • MACHINE_SERIES:節點的機器系列,例如 n2d。指定支援您所指定機密運算技術的機器系列。詳情請參閱機器類型、CPU 和區域

    • MACHINE_TYPE 節點的機器類型,例如 n2d-standard-4。指定支援您所指定機密運算技術的機型。詳情請參閱機器類型、CPU 和區域

    這份資訊清單包含 spec.nodePoolAutoCreation 欄位,值為 enabled: true,可讓 GKE 使用節點自動佈建功能建立新的節點集區。

  3. 在叢集中建立 ComputeClass:

    kubectl apply -f PATH_TO_COMPUTE_CLASS_MANIFEST
    

    請將 PATH_TO_COMPUTE_CLASS_MANIFEST 替換為 ComputeClass 資訊清單檔案的路徑。

  4. 將下列 Deployment 資訊清單儲存為 YAML 檔案:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "4Gi"

  5. 建立 Deployment:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    PATH_TO_DEPLOYMENT_MANIFEST 替換為 Deployment 資訊清單檔案的路徑。

GKE 為這項工作負載建立的新節點會使用您指定的機密運算技術。這些節點會在您選取的其中一個可用區中執行,並使用您在 ComputeClass 中定義的機器類型。GKE 會新增節點 taint 和節點標籤,因此只有選取相同 ComputeClass 的 Pod 才能在節點上執行。

在叢集層級設定機密 GKE 節點

您可以為整個 Autopilot 或 Standard 叢集啟用機密 GKE 節點,也就是說,叢集中的每個節點都會使用機密 GKE 節點。因此,您在該叢集中部署的所有工作負載,都會在機密 GKE 節點上執行。您無法在個別工作負載或節點集區中覆寫叢集設定。

建立新的 Autopilot 叢集

Autopilot 叢集僅支援叢集層級的 AMD SEV。啟用機密 GKE 節點後,Autopilot 叢集的預設機器系列會變更為 N2D。所有工作負載都會在這些機密節點上執行,您不必變更工作負載資訊清單。

  • 執行下列指令:

    gcloud container clusters create-auto CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-confidential-nodes
    

    更改下列內容:

    • CLUSTER_NAME:Autopilot 叢集的名稱。
    • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域,例如 us-central1

    叢集必須執行 1.30.2 以上版本。 詳情請參閱「建立特定發布管道和版本的 Autopilot 叢集」。

建立新的標準叢集

建立標準叢集時,您可以為節點指定機密運算技術。建立叢集時指定技術會產生下列影響:

  • 您只能在該叢集中建立使用機密 GKE 節點的節點集區或工作負載。
  • 您無法更新叢集來停用機密 GKE 節點。
  • 您無法在個別節點集區或工作負載中,覆寫叢集層級的機密運算技術。

在叢集層級設定機密運算設定後,就無法變更。 因此,請先考量下列用途,再建立叢集:

如要建立使用 Confidential GKE 節點的標準模式叢集,請選取下列其中一個選項:

gcloud

建立新叢集時,請在 gcloud CLI 中指定 --confidential-node-type 選項:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • LOCATION:叢集控制層的 Compute Engine 位置。該位置必須支援您指定的機密運算技術。詳情請參閱「適用情形」一節。
  • MACHINE_TYPE:支援您指定的機密運算技術的機器類型。詳情請參閱「適用情形」一節。
  • ZONE1,ZONE2,...:以半形逗號分隔的清單,列出控制平面區域中支援新機密運算技術的可用區。詳情請參閱「查看支援的區域」。
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY:要使用的機密運算技術。支援的值如下:

    • sev:AMD SEV
    • sev_snp:AMD SEV-SNP
    • tdx:Intel TDX

您也可以在叢集建立指令中使用 --enable-confidential-nodes 旗標。如果您只在指令中指定這個旗標,叢集就會使用 AMD SEV。您在指令中指定的機器類型必須支援 AMD SEV。不過,如果您在同一指令中指定 --confidential-node-type 標記,GKE 會使用您在 --confidential-node-type 標記中指定的值。

控制台

  1. 在 Google Cloud 控制台中,前往「建立 Kubernetes 叢集」頁面。

    前往「建立 Kubernetes 叢集」

  2. 在導覽選單的「叢集」部分中,按一下「安全性」

  3. 勾選「Enable Confidential GKE Nodes」(啟用機密 GKE 節點) 核取方塊。

  4. 在「需要變更」對話方塊中,按一下「進行變更」

  5. 在「類型」選單中,選取要使用的機密運算技術。

    如果您選取的技術需要特定 Compute Engine 機型系列,系統會顯示對話方塊。按一下「進行變更」,更新節點集區的機器系列。

  6. 在導覽選單的「節點集區」區段中,點選「default-pool」

  7. 在「節點集區詳細資料」窗格中,執行下列操作:

    1. 勾選「指定節點位置」核取方塊。系統會顯示叢集所在區域的可用區域清單。
    2. 選取支援您為節點選取機密運算技術的區域核取方塊。詳情請參閱「查看支援的區域」。
  8. 點選「建立」

如要進一步瞭解如何建立叢集,請參閱建立區域叢集

如果節點集區是使用 Hyperdisk Balanced 機密模式設定建立,則只有該節點集區中的節點會受到設定限制。在叢集中建立任何新的節點集區時,您必須在建立時設定機密模式。

設定節點自動佈建功能

您可以設定節點自動佈建,在自動佈建的節點集區中使用機密 GKE 節點。節點自動佈建支援下列機密運算技術:

  • AMD SEV
  • AMD SEV-SNP

如要搭配節點自動佈建功能使用機密 GKE 節點,請在建立叢集時指定 --enable-confidential-nodes gcloud CLI 標記。其他注意事項如下:

  • 建立叢集時,請選擇節點自動佈建功能支援的機密運算技術。這項選擇無法復原,且會套用至叢集層級。
  • 在現有叢集上啟用節點自動佈建功能時,叢集必須已使用節點自動佈建功能支援的機密 GKE 節點技術。
  • 部署工作負載時,請確認工作負載選取叢集的機密運算技術,以及與該技術相容的機器系列。

在節點集區層級設定機密 GKE 節點

如果叢集層級的機密 GKE 節點已停用,您可以在特定節點集區啟用機密 GKE 節點。

您必須在節點集區建立要求中,指定 Hyperdisk Balanced 設定的機密模式。

建立新的節點集區

如要建立啟用機密 GKE 節點的新節點集區,請選取下列其中一個選項:

gcloud

執行下列指令:

gcloud container node-pools create NODE_POOL_NAME \
    --location=LOCATION \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

更改下列內容:

  • NODE_POOL_NAME:新節點集區的名稱。
  • LOCATION:新節點集區的位置。該位置必須支援您指定的機密運算技術。詳情請參閱「適用情形」一節。
  • CLUSTER_NAME:叢集名稱。
  • MACHINE_TYPE:支援您指定的機密運算技術的機器類型。詳情請參閱「適用情形」一節。
  • ZONE1,ZONE2,...:以半形逗號分隔的清單,列出叢集區域中支援新機密運算技術的可用區。詳情請參閱「查看支援的區域」。
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY:要使用的機密運算技術。支援的值如下:

    • sev:AMD SEV
    • sev_snp:AMD SEV-SNP
    • tdx:Intel TDX

您也可以在叢集建立指令中使用 --enable-confidential-nodes 旗標。如果您只在指令中指定這個旗標,叢集就會使用 AMD SEV。您在指令中指定的機器類型必須支援 AMD SEV。不過,如果您在同一指令中指定 --confidential-node-type 標記,GKE 會使用您在 --confidential-node-type 標記中指定的值。

主控台

  1. 在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面:

    前往 Kubernetes 叢集

  2. 按一下標準叢集的名稱。

  3. 按一下 「Add node pool」(新增節點集區)

  4. 按一下導覽選單中的「Security」(安全性)

  5. 在「節點安全性」窗格中執行下列操作:

    1. 勾選「Enable Confidential GKE Nodes」(啟用機密 GKE 節點) 核取方塊。
    2. 在「需要變更」對話方塊中,按一下「進行變更」
    3. 在「類型」選單中,選取要使用的機密運算技術。

      如果您選取的技術需要特定 Compute Engine 機型系列,系統會顯示對話方塊。按一下「進行變更」,更新節點集區的機器系列。

  6. 在導覽選單中,按一下「節點集區詳細資料」

  7. 在「節點集區詳細資料」窗格中,執行下列操作:

    1. 勾選「指定節點位置」核取方塊。系統會顯示叢集所在區域的可用區域清單。
    2. 選取支援您為節點選取機密運算技術的區域核取方塊。詳情請參閱「查看支援的區域」。
  8. 選用:設定節點集區的其他設定。

  9. 點選「建立」

更新現有節點集區

這項變更需要重新建立節點,可能會導致執行中的工作負載中斷。如要瞭解這項特定變更的詳細資訊,請在「手動變更,使用節點升級策略重建節點,但不遵守維護政策」表格中,找出對應的資料列。如要進一步瞭解節點更新,請參閱「規劃節點更新中斷」。

您可以更新現有節點集區,改用機密 GKE 節點,或是切換節點使用的機密運算技術。節點集區必須符合下列所有規定:

  • 節點使用的機器類型支援所選的機密運算技術。
  • 節點會在支援所選機密運算技術的可用區中執行。

由於機型和位置的可用性可能因機密運算技術而異,您可能需要先更新節點集區的這些屬性,才能啟用特定機密運算技術。

如要更新現有節點集區以使用機密 GKE 節點,請選取下列其中一個選項:

gcloud

您可以使用 gcloud CLI,在節點集區上啟用機密 GKE 節點,或變更節點的機密運算技術。

  1. 如果節點集區已使用機密 GKE 節點,請停用機密 GKE 節點。等待節點集區更新作業完成。
  2. 將節點集區機器類型和節點位置變更為支援新機密運算技術的值:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --machine-type=MACHINE_TYPE \
        --node-locations=ZONE1,ZONE2,...
    

    更改下列內容:

    • NODE_POOL_NAME:現有節點集區的名稱。
    • CLUSTER_NAME:叢集名稱。
    • CLUSTER_LOCATION:叢集位置。
    • MACHINE_TYPE:支援新機密運算技術的機器類型。詳情請參閱「適用情形」一節。
    • ZONE1,ZONE2,...:以半形逗號分隔的清單,列出叢集區域中支援新機密運算技術的可用區。詳情請參閱「查看支援的區域」。
  3. 使用機密運算技術更新節點集區:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY
    

    CONFIDENTIAL_COMPUTE_TECHNOLOGY 替換為要使用的機密運算技術。支援的值如下:

    • sev:AMD SEV
    • sev_snp:AMD SEV-SNP
    • tdx:Intel TDX

主控台

只有在所選機密運算技術支援節點集區的機器類型時,您才能更新現有節點集區,改用機密 GKE 節點。如果節點未採用支援的機器類型,請改用本節中的 gcloud CLI 指示。

  1. 在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面:

    前往 Kubernetes 叢集

  2. 按一下標準叢集的名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 按一下要修改的節點集區名稱。

  5. 在「Node pool details」(節點集區詳細資料) 頁面中,按一下 「Edit」(編輯)。「編輯節點集區」窗格隨即開啟。

  6. 在「可用區」部分,確認所選可用區支援機密運算技術。詳情請參閱「查看支援的區域」。

    如果所選區域不支援這項技術,請按照下列步驟操作:

    1. 取消勾選不支援的區域。
    2. 選用:勾選其他支援區域的核取方塊。
    3. 按一下 [儲存]。等待節點集區更新作業完成。
    4. 按一下「編輯」,重新開啟「編輯節點集區」窗格。
  7. 在「安全性」部分,勾選「啟用機密 GKE 節點」核取方塊。

  8. 在「Type」(類型) 選單中,選取節點的機密運算技術。

  9. 按一下 [儲存]

僅將工作負載放在機密節點集區

如果您在叢集層級啟用機密 GKE 節點,所有工作負載都會在機密節點上執行。您不需要變更資訊清單。不過,如果您只在節點集區層級為特定 Standard 模式節點集區啟用機密 GKE 節點,就應以宣告方式表示工作負載只能在啟用機密 GKE 節點的節點集區上執行。

  • 如要規定工作負載必須透過特定機密運算技術執行,請使用含有 cloud.google.com/gke-confidential-nodes-instance-type 標籤的節點選取器,如下例所示:

    apiVersion: v1
    kind: Pod
    spec:
    # For readability, lines are omitted from this example manifest
      nodeSelector:
        cloud.google.com/gke-confidential-nodes-instance-type: "CONFIDENTIAL_COMPUTE_SELECTOR"
    

    CONFIDENTIAL_COMPUTE_SELECTOR 替換為節點集區使用的技術名稱。這個欄位支援下列值,您必須以大寫指定:

    • SEV:AMD SEV
    • SEV_SNP:AMD SEV-SNP
    • TDX:Intel TDX
  • 如要讓工作負載在任何機密節點上執行 (不論機密運算技術為何),請使用節點親和性規則,如下列範例所示:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: Exists
    
  • 如要讓工作負載在僅使用部分可用機密運算技術的節點上執行,請使用類似下列範例的節點親和性規則:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: In
                values:
                - SEV
                - SEV_SNP
                - TDX
    

    values 欄位中,僅指定要執行工作負載的機密運算技術。

確認已啟用機密 GKE 節點

如要檢查叢集或節點是否使用 Confidential GKE 節點,請檢查叢集、節點集區、節點或 Compute Engine 執行個體。

叢集驗證

選取下列選項之一:

gcloud

描述叢集:

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType)'

如果已啟用機密 GKE 節點,輸出內容會類似下列內容:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

控制台

  1. 在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面。

    前往 Kubernetes 叢集

  2. 按一下要檢查的叢集名稱。

  3. 在「安全性」部分,確認「機密 GKE 節點」欄位的值為「已啟用」

驗證節點集區

選取下列選項之一:

gcloud

描述節點集區:

gcloud container node-pools describe NODE_POOL_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType,enableConfidentialStorage)'

如果已啟用機密 GKE 節點,輸出內容會類似下列內容:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

如果也啟用 Hyperdisk Balanced 機密模式,輸出結果會類似於下列內容:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR
enableConfidentialStorage: true

控制台

  1. 在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面。

    前往 Kubernetes 叢集

  2. 按一下要檢查的叢集名稱。

  3. 按一下節點集區名稱。

  4. 在「安全性」部分,確認「機密 GKE 節點」欄位的值為「已啟用」

驗證特定節點

  1. 找出節點名稱:

    kubectl get nodes
    
  2. 描述節點:

    kubectl describe NODE_NAME
    

    NODE_NAME 替換為要檢查的節點名稱。

    輸出結果會與下列內容相似:

    Name:               gke-cluster-1-default-pool-affsf335r-asdf
    Roles:              <none>
    Labels:             cloud.google.com/gke-boot-disk=pd-balanced
                        cloud.google.com/gke-container-runtime=containerd
                        cloud.google.com/gke-confidential-nodes-instance-type=CONFIDENTIAL_COMPUTE_SELECTOR
                        cloud.google.com/gke-nodepool=default-pool
                        cloud.google.com/gke-os-distribution=cos
                        cloud.google.com/machine-family=e2
    # lines omitted for clarity
    

    在這個輸出內容中,cloud.google.com/gke-confidential-nodes-instance-type 節點標籤表示該節點為機密節點。

設定機構政策限制

您可以定義機構政策限制,確保在整個機構中建立的所有 VM 資源都是機密 VM 執行個體。如果是 GKE,您可以自訂「Restrict Non-Confidential Computing」(限制非機密運算) 限制,要求所有新叢集都必須啟用其中一種可用的機密運算技術。強制執行機構政策限制時,請將 container.googleapis.com API 服務名稱新增至拒絕清單,如下例所示:

gcloud resource-manager org-policies deny \
    constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
    --project=PROJECT_ID

PROJECT_ID 替換為您的專案 ID。

為 Hyperdisk Balanced 機密模式建立 PersistentVolume

如需處理量或 IOPS 允許值的相關指引,請參閱「規劃 Hyperdisk 磁碟區的效能等級」。

以下範例說明如何為每種 Hyperdisk 類型建立 Hyperdisk Balanced StorageClass 的機密模式:

Hyperdisk Balanced

  1. 將下列資訊清單儲存到名為 confidential-hdb-example-class.yaml 的檔案:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
      enable-confidential-storage: true
      disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
    

    更改下列內容:

    • KMS_PROJECT_ID:擁有 Cloud KMS 金鑰的專案
    • REGION:磁碟所在的區域
    • KEY_RING:包含金鑰的金鑰環名稱
    • HSM_KEY_NAME:用於加密磁碟的 HSM 金鑰名稱
  2. 建立 StorageClass:

    kubectl create -f hdb-example-class.yaml
    
  3. 建立 GKE 適用的 Hyperdisk 永久磁碟區要求,使用 Hyperdisk Balanced 磁碟區的機密模式。

如要找出叢集中可用的 StorageClass 名稱,請執行下列指令:

kubectl get sc

限制

機密 GKE 節點有下列限制:

Hyperdisk Balanced 機密模式有下列限制:

即時遷移限制

使用 N2D 機器類型並以 AMD SEV 做為機密運算技術的 Compute Engine 機密 VM 支援即時遷移,可將主機維護事件造成工作負載中斷的可能性降到最低。即時遷移功能適用於下列 GKE 版本:

  • 1.27.10-gke.1218000 以上版本
  • 1.28.6-gke.1393000 以上版本
  • 1.29.1-gke.1621000 以上版本

如果節點集區在新增即時遷移功能時,已執行支援的版本,請手動將節點集區升級至相同或不同的支援版本。升級節點會觸發節點重建作業,而新節點會啟用即時遷移功能。

如要瞭解哪些 Compute Engine 機器類型支援即時遷移,請參閱支援的設定

如果節點發生主機維護事件,但該節點不支援即時遷移,就會進入 NotReady 狀態。在節點恢復就緒狀態前,執行中的 Pod 會受到干擾。如果維護作業超過五分鐘,GKE 可能會嘗試在其他節點上重新建立 Pod。

停用機密 GKE 節點

這項變更需要重新建立節點,可能會導致執行中的工作負載中斷。如要瞭解這項特定變更的詳細資訊,請在「手動變更,使用節點升級策略重建節點,但不遵守維護政策」表格中,找出對應的資料列。如要進一步瞭解節點更新,請參閱「規劃節點更新中斷」。

您只能在 Standard 模式節點集區中停用機密 GKE 節點。如果節點集區位於叢集層級使用機密 GKE 節點的叢集,您就無法在節點集區層級停用這項功能。如要停用機密 GKE 節點,請選取下列其中一個選項:

gcloud

執行下列指令:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CLUSTER_LOCATION \
    --no-enable-confidential-nodes

主控台

  1. 在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面:

    前往 Kubernetes 叢集

  2. 按一下標準叢集的名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 按一下要修改的節點集區名稱。

  5. 在「Node pool details」(節點集區詳細資料) 頁面中,按一下 「Edit」(編輯)。「編輯節點集區」窗格隨即開啟。

  6. 在「安全性」部分,取消勾選「啟用機密 GKE 節點」核取方塊。

  7. 按一下 [儲存]

後續步驟