設定檔適用性:等級 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 主控台:
- 前往 Kubernetes Engine,請造訪 Google Cloud Console Kubernetes Engine 頁面
- 從群集列表中,點擊每個群集以顯示詳細資訊窗格,並確保應用層秘密加密已設置為已啟動。
- 要檢查現有的叢集,首先定義叢集名稱、位置資訊和專案的三個變數,然後執行以下命令:
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 主控台:
建立機碼:
- 前往 Google Cloud Console 安全性頁面以進入 Cloud KMS。
- 選擇建立金鑰環。
- 輸入金鑰環名稱及金鑰存放的地區。
- 點擊建立。
- 在建立金鑰窗格中輸入金鑰名稱和適當的輪替週期。
- 點擊建立。
在新叢集中啟用:
- 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面。
- 點擊建立叢集,並選擇所需的叢集模式。
- 在安全性標題下,於CLUSTER中勾選在應用層加密機密選項框。
- 選擇 KMS Key 作為客戶管理的金鑰,如果出現提示,請授予 GKE 服務帳戶權限。
- 點擊建立。
要在現有叢集上啟用:
- 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面。
- 選擇要更新的叢集。
- 在詳細資料窗格中的安全性標題下,點擊名為應用層秘密加密的鉛筆圖示。
- 啟用
在應用層加密機密並選擇一個 KMS Key。 - 點擊儲存變更。
使用命令列:
建立金鑰環:
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>
