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

影響

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

稽核

使用 Google 雲端主控台:
  1. 前往Kubernetes Engine 網站
  2. 從叢集列表中,點擊每個叢集以顯示詳細資訊窗格,並確保應用層秘密加密已啟動。
使用命令行:
gcloud container clusters describe $CLUSTER_NAME --zone $COMPUTE_ZONE --
format json | jq '.databaseEncryption'
如果配置正確,命令的輸出將返回包含以下詳細信息的回應:
keyName=projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/
cryptoKeys/<key_name>] 
state=ENCRYPTED 
{ 
  "currentState": "CURRENT_STATE_ENCRYPTED", 
  "keyName": "projects/<key_project_id>/locations/us-
central1/keyRings/<ring_name>/cryptoKeys/<key_name>", 
  "state": "ENCRYPTED" 
}

補救

要啟用應用層秘密加密,需要配置多個項目。這些包括:
  • 金鑰圈
  • 金鑰
  • 具有雲端 KMS CryptoKey 加密/解密角色的 GKE 服務帳戶
一旦這些被建立,應用層秘密加密可以在現有或新的叢集上已啟動。
使用 Google 雲端主控台:
建立金鑰:
  1. 前往雲端 KMS 網站
  2. 選擇建立金鑰環
  3. 輸入金鑰環名稱及金鑰儲存的地區。
  4. 點擊 CREATE
  5. 在建立金鑰窗格中輸入金鑰名稱和適當的輪替週期。
  6. 點擊 CREATE
啟用新叢集:
  1. 前往Kubernetes Engine 網站
  2. 點擊 CREATE CLUSTER,然後選擇所需的叢集模式。
  3. 安全性標題下,於叢集中,勾選在應用程式層加密機密核取方塊。
  4. 選擇 kms 金鑰作為客戶管理的金鑰,並在提示時授予 GKE 服務帳戶權限。
  5. 點擊 CREATE
啟用現有叢集:
  1. 前往Kubernetes Engine 網站
  2. 選擇要更新的叢集。
  3. 在詳細資料窗格中,於安全性標題下,點擊名為應用層秘密加密的鉛筆圖示。
  4. 啟用在應用層加密機密並選擇一個 KMS 金鑰。
  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 服務帳戶 雲端 KMS CryptoKey 加密/解密器 角色:
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>/cryptoKeys/
<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>/cryptoKeys/
<key_name> --project <cluster_project_id>