聯絡。
本頁說明如何輪替您為 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 角色:
-
管理金鑰或金鑰版本:
金鑰專案的 Cloud KMS 管理員 (
roles/cloudkms.admin
) -
設定叢集以使用新金鑰:
Kubernetes Engine 叢集管理員 (
roles/container.clusterAdmin
) 在叢集專案中
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
限制
您可以將叢集更新為現有金鑰的新版本,但無法更新叢集,改用完全不同的金鑰執行這些加密作業。
將 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 和控制層開機磁碟的金鑰
為開機磁碟和 etcd 加密金鑰建立新的主要金鑰版本:
gcloud kms keys versions create \ --key=KCP_DISK_KEY_NAME \ --keyring=KEYRING_NAME \ --location=LOCATION \ --project=KEY_PROJECT_ID \ --primary
變更最多可能需要 10 分鐘才會全面套用到專案。
找出叢集控制層目前的修補程式版本:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format='value(currentMasterVersion)'
更改下列內容:
CLUSTER_NAME
:GKE 叢集名稱。LOCATION
:GKE 叢集控制層的位置,例如us-central1
。
將叢集控制層升級至目前使用的版本。
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。