設定檔適用性:等級 2
使用客戶管理的密鑰在雲端 KMS 中於應用程式層加密儲存在 etcd 中的 Kubernetes 機密。
預設情況下,GKE 會加密靜態存儲的客戶內容,包括 Secrets。GKE 會為您處理和管理此預設加密,無需您採取任何額外行動。
應用層秘密加密為敏感資料提供額外的安全層,例如使用者定義的秘密和叢集運行所需的秘密,如服務帳戶密鑰,這些都存儲在etcd中。
使用此功能,您可以使用在雲端 KMS 中管理的金鑰,在應用層加密資料防護。這可以防止攻擊者在獲得 etcd 存取權時進行攻擊。
![]() |
注意預設情況下,應用層秘密加密是停用的。
|
影響
要使用雲端 KMS CryptoKey 來保護叢集中的 etcd,'Kubernetes Engine Service Agent' 服務帳戶必須擁有 'Cloud
KMS CryptoKey Encrypter/Decrypter' 角色。
稽核
使用 Google 雲端主控台:
- 前往Kubernetes Engine 網站。
- 從叢集列表中,點擊每個叢集以顯示詳細資訊窗格,並確保應用層秘密加密已啟動。
使用命令行:
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 雲端主控台:
建立金鑰:
- 前往雲端 KMS 網站。
- 選擇
建立金鑰環
。 - 輸入金鑰環名稱及金鑰儲存的地區。
- 點擊
CREATE
。 - 在建立金鑰窗格中輸入金鑰名稱和適當的輪替週期。
- 點擊
CREATE
。
啟用新叢集:
- 前往Kubernetes Engine 網站。
- 點擊
CREATE CLUSTER
,然後選擇所需的叢集模式。 - 在
安全性
標題下,於叢集
中,勾選在應用程式層加密機密
核取方塊。 - 選擇 kms 金鑰作為客戶管理的金鑰,並在提示時授予 GKE 服務帳戶權限。
- 點擊
CREATE
。
啟用現有叢集:
- 前往Kubernetes Engine 網站。
- 選擇要更新的叢集。
- 在詳細資料窗格中,於安全性標題下,點擊名為應用層秘密加密的鉛筆圖示。
- 啟用
在應用層加密機密
並選擇一個 KMS 金鑰。 - 點擊
儲存變更
。
使用命令列:
建立金鑰:
建立金鑰圈:
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>