檢視次數:
設定檔適用性:等級 2
使用 Cloud KMS 中的客戶管理金鑰在應用層加密存儲於 etcd 的 Kubernetes 機密。
預設情況下,GKE 會加密靜態存儲的客戶內容,包括 Secrets。GKE 會為您處理和管理此預設加密,無需您額外採取任何行動。
應用層秘密加密為敏感資料提供額外的安全層,例如使用者定義的秘密和叢集運行所需的秘密,如服務帳戶密鑰,這些都存儲在etcd中。
使用此功能,您可以使用在 Cloud KMS 中管理的金鑰,在應用層加密資料。這可以在攻擊者設法獲得 etcd 存取權時提供保護。
注意
注意
預設情況下,應用層秘密加密是停用的。

影響

要使用 Cloud KMS CryptoKey 來保護叢集中的 etcd,'Kubernetes Engine Service Agent' 服務帳戶必須擁有 'Cloud KMS CryptoKey Encrypter/Decrypter' 角色。

稽核

使用 Google Cloud 主控台:
  1. 前往 Kubernetes Engine,請造訪 Google Cloud Console Kubernetes Engine 頁面
  2. 從群集列表中,點擊每個群集以顯示詳細資訊窗格,並確保應用層秘密加密已設置為已啟動。
  3. 要檢查現有的叢集,首先定義叢集名稱、位置資訊和專案的三個變數,然後執行以下命令:
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION -- project $PROJECT_ID --format json | jq '.databaseEncryption' 
如果配置正確,命令的輸出將返回包含以下詳細資訊的回應:
{ "currentState": "CURRENT_STATE_ENCRYPTED", "state": "ENCRYPTED" }

補救

要啟用應用層秘密加密,需要配置多個項目。這些項目包括:
  • 鑰匙圈
  • 金鑰
  • 具有Cloud KMS CryptoKey加密/解密器角色的GKE服務帳戶
一旦這些被建立,應用層秘密加密可以在現有或新的叢集上已啟動。
使用 Google Cloud 主控台:
建立機碼:
  1. 前往 Google Cloud Console 安全性頁面以進入 Cloud KMS。
  2. 選擇建立金鑰環。
  3. 輸入金鑰環名稱及金鑰存放的地區。
  4. 點擊建立。
  5. 在建立金鑰窗格中輸入金鑰名稱和適當的輪替週期。
  6. 點擊建立。
在新叢集中啟用:
  1. 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面
  2. 點擊建立叢集,並選擇所需的叢集模式。
  3. 在安全性標題下,於CLUSTER中勾選在應用層加密機密選項框。
  4. 選擇 KMS Key 作為客戶管理的金鑰,如果出現提示,請授予 GKE 服務帳戶權限。
  5. 點擊建立。
要在現有叢集上啟用:
  1. 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面
  2. 選擇要更新的叢集。
  3. 在詳細資料窗格中的安全性標題下,點擊名為應用層秘密加密的鉛筆圖示。
  4. 啟用在應用層加密機密並選擇一個 KMS Key。
  5. 點擊儲存變更。
使用命令列:
建立金鑰環:
gcloud kms keyrings create <ring_name> --location <location> --project 
<key_project_id> 
建立金鑰:
gcloud kms keys create <key_name> --location <location> --keyring <ring_name> 
--purpose encryption --project <key_project_id> 
將 Kubernetes Engine Service Agent 服務帳戶授予Cloud KMS CryptoKey Encrypter/Decrypter角色:
gcloud kms keys add-iam-policy-binding <key_name> --location <location> -- 
keyring <ring_name> --member serviceAccount:<service_account_name> --role 
roles/cloudkms.cryptoKeyEncrypterDecrypter --project <key_project_id> 
要建立具有應用層秘密加密的新叢集:
gcloud container clusters create <cluster_name> --cluster-version=latest -- zone <zone> --database-
encryption-key 
projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/cryptoKey 
s/<key_name> --project <cluster_project_id>
要在現有叢集上啟用:
gcloud container clusters update <cluster_name> --zone <zone> --database- 
encryption-key 
projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/cryptoKey 
s/<key_name> --project <cluster_project_id>