輪替 etcd 和控制層開機磁碟加密金鑰


聯絡。

本頁說明如何輪替您為 GKE 控制層授權設定的 etcd 和控制層開機磁碟加密金鑰。本頁面適用於叢集管理員和安全工程師。

閱讀本頁之前,請先熟悉下列 GKE 控制平面授權概念:

規劃金鑰輪替

本頁說明如何輪替控制層中的下列憑證元件:

  • etcd 和控制層開機磁碟的加密金鑰。
  • etcd 內部備份的加密金鑰,用於災難復原。 Google Cloud

您也可以輪替客戶管理的憑證授權單位 (CA) 和服務帳戶簽署金鑰,這些金鑰是透過 GKE 控制平面授權設定。詳情請參閱「輪替客戶管理的控制層 CA 和簽署金鑰」。

Cloud Key Management Service (Cloud KMS) 中的金鑰不會過期。如果貴機構有金鑰輪替的安全規定,請手動輪替金鑰。為盡量減少執行中工作負載的中斷情形,請勿為這些金鑰設定自動金鑰輪替。

輪替控制平面開機磁碟和 etcd 的加密金鑰時,GKE 會建立以新金鑰加密的新磁碟。如果是區域叢集,由於控制層已複製,因此這項作業不會造成停機。如果是區域叢集,控制層會暫時無法使用,直到新磁碟可用為止。

事前準備

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

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。
  • 現有叢集使用控制層開機磁碟和 etcd 加密

  • 找出下列 Google Cloud 專案的專案 ID:

    • 金鑰專案:包含 Cloud KMS 資源的專案。
    • 叢集專案:包含 GKE 叢集的專案。
  • 如要在本頁執行驗證工作,請確認已為 Cloud Key Management Service (KMS) API 啟用DATA_READ資料存取稽核記錄。詳情請參閱「啟用資料存取稽核記錄」。

必要角色和權限

如要取得輪替客戶管理 CA 和金鑰所需的權限,請要求管理員授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

限制

您可以將叢集更新為現有金鑰的新版本,但無法更新叢集,改用完全不同的金鑰執行這些加密作業。

將 IAM 角色授予 GKE 服務代理

如要輪替開機磁碟和 etcd 的加密金鑰,請在金鑰專案中,將Kubernetes Engine KMS Crypto Key User (roles/container.cloudKmsKeyUser) 角色指派給叢集專案中的 GKE 服務代理程式:

gcloud kms keys add-iam-policy-binding KCP_DISK_KEY_NAME \
    --keyring=KEYRING_NAME \
    --location=LOCATION \
    --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role=roles/container.cloudKmsKeyUser \
    --project=KEY_PROJECT_ID

更改下列內容:

  • KCP_DISK_KEY_NAME:控制平面啟動磁碟和 etcd 磁碟的加密金鑰名稱。
  • KEYRING_NAME:金鑰所屬金鑰環的名稱。
  • LOCATION:金鑰環的 Google Cloud 位置。這必須與叢集位置相同。如要查看地區清單,請在 Cloud KMS 位置表格中篩選「地區」。
  • CLUSTER_PROJECT_NUMBER:叢集專案的數值專案編號。
  • KEY_PROJECT_ID主要專案的專案 ID。

輪替 etcd 和控制層開機磁碟的金鑰

  1. 為開機磁碟和 etcd 加密金鑰建立新的主要金鑰版本:

    gcloud kms keys versions create \
        --key=KCP_DISK_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    變更最多可能需要 10 分鐘才會全面套用到專案。

  2. 找出叢集控制層目前的修補程式版本:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(currentMasterVersion)'
    

    更改下列內容:

    • CLUSTER_NAME:GKE 叢集名稱。
    • LOCATION:GKE 叢集控制層的位置,例如 us-central1
  3. 將叢集控制層升級至目前使用的版本。

    gcloud container clusters upgrade CLUSTER_NAME \
        --master \
        --location=LOCATION \
        --cluster-version=CONTROL_PLANE_VERSION \
        --project=CLUSTER_PROJECT_ID
    

    更改下列內容:

    • CONTROL_PLANE_VERSION:上一個步驟輸出內容中的叢集控制層版本。
    • CLUSTER_PROJECT_ID叢集專案的專案 ID。

控制層升級作業完成後,叢集會使用新的金鑰版本,加密控制層開機磁碟和所有 etcd 磁碟。

輪替 etcd 內部備份加密金鑰

本節說明如何輪替 etcd 內部備份的加密金鑰, Google Cloud 會使用這項備份進行災難復原。您可以為這個金鑰設定自動輪替,但建議改為手動輪替。金鑰輪替後,叢集會使用新的金鑰版本加密新的 etcd 內部備份。

etcd 內部備份會使用主鍵版本,並以以下間隔進行:

  • 區域叢集每 30 分鐘一次。
  • Autopilot 叢集和區域 Standard 叢集每 10 分鐘一次。

輪替金鑰後,請勿立即停用或刪除舊版金鑰。等待一段時間,讓 GKE 建立使用新金鑰版本的新 etcd 內部備份。

  • 為 etcd 內部備份加密金鑰建立新的主要金鑰版本:

    gcloud kms keys versions create \
        --key=ETCD_BACKUP_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    更改下列內容:

    • ETCD_BACKUP_KEY_NAME:etcd 內部備份加密金鑰的名稱。
    • KEYRING_NAME:金鑰所屬金鑰環的名稱。
    • LOCATION:金鑰環的 Google Cloud 位置。這必須與叢集位置相同。如要查看地區清單,請在 Cloud KMS 位置表格中篩選「地區」。
    • KEY_PROJECT_ID主要專案的專案 ID。

後續步驟