vSAN 加密簡介
如要加密 vSAN 靜態資料,必須使用金鑰管理系統 (KMS)。Google Cloud VMware Engine 提供多種金鑰管理選項,可加密 vSAN 資料:
- Google-owned and Google-managed encryption keys (GMEK):根據預設,vSAN 資料加密會使用 Google-owned and Google-managed encryption keys Cloud Key Management Service,適用於私有雲,無須額外付費。
- 客戶自行管理的加密金鑰 (CMEK):您可以在 Cloud Key Management Service 中使用 CMEK,管理個別私有雲的加密金鑰。
- 外部 KMS:您可以部署外部 KMS,從下列支援的供應商加密靜態 vSAN 資料。
選擇金鑰管理解決方案
如要協助您選擇金鑰管理解決方案,請參閱下列比較:
| 功能 | GMEK (預設) | CMEK | 外部 KMS |
|---|---|---|---|
| 金鑰管理責任 | 客戶 | 客戶 | |
| 金鑰儲存空間 | Cloud Key Management Service (Google 專案) | Cloud Key Management Service (客戶專案) | 外部 KMS |
| 隔離層級 | 區域服務 | 個別私有雲 | 個別私有雲 |
| 輪替自動化 | 由 Google 自動處理 | 在 KMS 輪替時由 Google 自動執行 | 由客戶管理 |
| 額外授權費用 | 無 | Google Cloud 系統會收取 KMS 費用 | 第三方 KMS 授權 |
本頁面說明 vSAN 加密行為,並歸納如何使用外部 KMS,在 VMware Engine 中加密虛擬機器的靜態資料。
vSAN 資料加密
根據預設,VMware Engine 會為主要叢集和後續新增至私有雲的叢集啟用 vSAN 資料加密。vSAN 靜態資料加密功能會使用資料加密金鑰 (DEK),加密後儲存在叢集的本機實體磁碟。DEK 是符合 FIPS 140-2 Level 1 標準的 AES-256 位元加密金鑰,由 ESXi 主機自動產生。系統會使用 Cloud Key Management Service 或外部 KMS 提供的金鑰加密金鑰 (KEK) 加密 DEK。
我們強烈建議不要停用 vSAN 靜態資料加密功能,因為這可能會導致您違反 Google Cloud VMware Engine 的服務專屬條款。在叢集上停用 vSAN 靜態資料加密功能時,VMware Engine 監控邏輯會發出警報。為避免您違反服務條款,這則快訊會觸發 Cloud Customer Care 團隊主導的動作,在受影響的叢集上重新啟用 vSAN 加密功能。
同樣地,如果您設定外部 KMS,強烈建議不要刪除 vCenter Server 中 Cloud Key Management Service 的金鑰提供者設定。
Google-owned and Google-managed encryption keys (GMEK)
私有雲預設會使用 Google-owned and Google-managed encryption keys (GMEK)。 透過 GMEK,VMware Engine 會設定 vCenter Server,以便連線至 GMEK 提供者。VMware Engine 會為每個區域建立一個金鑰供應商執行個體,而金鑰供應商會使用 Cloud KMS 加密 KEK。VMware Engine 會全面管理金鑰供應商,並將其設定為在所有區域中維持高可用性。
GMEK 供應商可輔助 vCenter Server 中的內建金鑰供應商 (適用於 vSphere 7.0 Update 2 以上版本),建議用於生產環境。內建金鑰供應器會在 vCenter Server 中以程序形式執行,而 vCenter Server 則會在 VMware Engine 的 vSphere 叢集中執行。VMware 建議不要使用內建金鑰供應商,加密代管 vCenter Server 的叢集。請改用 GMEK、CMEK 或外部 KMS。
GMEK 自動金鑰輪替
Google Cloud VMware Engine 會定期為所有叢集觸發 GMEK 的自動金鑰輪替作業。這項背景維護作業不需要使用者介入,也不會影響叢集可用性。
由客戶管理的加密金鑰 (CMEK)
Google Cloud VMware Engine 支援使用 Cloud Key Management Service,為個別私有雲提供客戶管理的加密金鑰 (CMEK)。您可以為每個私有雲設定不同的 CMEK 金鑰,不必在整個專案中共用單一金鑰。這項機制有以下好處:
- 強化隔離:一個私有雲的金鑰遭到入侵或輪替,不會影響其他私有雲。
- 精細的法規遵循:根據每個私有雲中工作負載的特定資料落地或法規遵循需求,指派金鑰。
管理 CMEK 加密
您可以使用 Google Cloud 控制台和 VMware Engine API,為私有雲設定及管理客戶自行管理的加密金鑰 (CMEK)。如要使用 CMEK,您必須將 roles/cloudkms.cryptoKeyEncrypterDecrypter IAM 角色授予 VMware Engine 服務帳戶 (service-<var>PROJECT_NUMBER</var>@gcp-sa-vmwareengine.iam.gserviceaccount.com),才能使用特定 Cloud KMS 金鑰。這項權限可讓 VMware Engine 使用專案中選取的 Cloud KMS 金鑰,加密及解密保護 vSAN 資料的金鑰加密金鑰 (KEK)。
指派金鑰權限
您必須先指派必要權限,才能啟用 CMEK:
找出 KMS 資源:前往Google Cloud 控制台的「金鑰管理」頁面,找出要用於資料保護的特定 Cloud KMS 金鑰。
設定 IAM 角色:在 Cloud KMS 金鑰資訊主頁上,直接將 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色授予 VMware Engine 服務帳戶 (
service-<var>PROJECT_NUMBER</var>@gcp-sa-vmwareengine.iam.gserviceaccount.com)。
Google Cloud 管理 CMEK 的控制台和 VMware Engine API 操作說明:
Google Cloud 控制台
如要使用 Google Cloud 控制台設定客戶自行管理的加密金鑰 (CMEK),請按照下列步驟操作:
使用 CMEK 建立私有雲
如要使用 Google Cloud 控制台建立採用 CMEK 的私有雲,請按照下列步驟操作:
前往 Google Cloud 控制台的「Private clouds」頁面。
點選「建立」。
在「Encryption」(加密) 區段中,選擇「Customer-managed encryption keys (CMEK)」(客戶自行管理的加密金鑰 (CMEK))。
輸入 Cloud KMS 金鑰的完整資源名稱。
按一下「建立」或「儲存」。
更新現有私有雲的 CMEK 金鑰
如要使用 Google Cloud 控制台更新現有私有雲的 CMEK 金鑰,請按照下列步驟操作:
前往 Google Cloud 控制台的「Private clouds」頁面。
選取要更新的現有私有雲。
在「Encryption」(加密) 區段中,選擇「Customer-managed encryption keys (CMEK)」(客戶自行管理的加密金鑰 (CMEK))。
輸入 Cloud KMS 金鑰的完整資源名稱。
按一下「建立」或「儲存」。
為現有私有雲更新加密設定,改用 GMEK
如要使用 Google Cloud 控制台,將現有私有雲的加密類型更新為 GMEK,請按照下列步驟操作:
前往 Google Cloud 控制台的「Private clouds」頁面。
選取要更新的現有私有雲。
在「Encryption」(加密) 區段中,選擇 Google-owned and Google-managed encryption keys (GMEK)。
按一下「建立」或「儲存」。
VMware Engine API
如要使用 API 指令,請先將下列變數替換為環境的值:
PROJECT_ID: Google Cloud 專案 ID。LOCATION:VMware Engine 區域,例如us-east4。PC_ID:新 Private Cloud 的 ID。NETWORK_ID:虛擬私有雲網路的 ID。CIDR_RANGE:Private Cloud 的管理 CIDR 範圍。CLUSTER_ID:管理叢集的 ID。NODE_TYPE:節點類型,例如standard-72。COUNT:叢集中的節點數量。RING:Cloud KMS 金鑰環的名稱。KEY:Cloud KMS 加密編譯金鑰的名稱。PC_NAME:現有 Private Cloud 的名稱。
如要使用 CMEK 建立私有雲,請使用 privateClouds.create 方法並指定 encryptionConfig 參數:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://vmwareengine.googleapis.com/v1/projects//locations//privateClouds?private_cloud_id=" \
-d '{
"networkConfig": {
"vmwareEngineNetwork": "projects//locations/global/vmwareEngineNetworks/",
"managementCidr": ""
},
"managementCluster": {
"clusterId": "",
"nodeTypeConfigs": {
"": {
"nodeCount":
}
}
},
"encryptionConfig": {
"cryptoKeyName": "projects//locations//keyRings//cryptoKeys/"
}
}'
如要更新現有私有雲的 CMEK 金鑰,請使用 privateClouds.patch 方法:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://vmwareengine.googleapis.com/v1/projects//locations//privateClouds/?updateMask=encryptionConfig" \
-d '{
"encryptionConfig": {
"cryptoKeyName": "projects//locations//keyRings//cryptoKeys/"
}
}'
如要將現有私有雲切換回 GMEK (Google-owned and Google-managed encryption keys),請使用 privateClouds.patch 方法,並提供空白的 encryptionConfig 物件:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://vmwareengine.googleapis.com/v1/projects//locations//privateClouds/?updateMask=encryptionConfig" \
-d '\''{
"encryptionConfig": {}
}'\''
瞭解 CMEK 限制
- 區域規定:私有雲和您選取的 Cloud KMS 金鑰必須位於相同區域。請注意,vSAN 加密不支援 Google Cloud KMS 全域金鑰。
- 金鑰可用性:如果加密金鑰因停用或撤銷而無法存取,所有相依的 vSAN 作業都會失敗。重要程序 (包括主機重新啟動和淺層重新鍵入) 必須先成功重新建立金鑰存取權,才能繼續進行。
透過 CMEK 自動 KEK 輪替功能提升作業效率
如果機構選擇使用 CMEK,vSAN 靜態資料加密的自動 KEK 輪替功能可自動執行手動安全防護工作:
- 自動同步:系統會監控 Cloud KMS,並自動偵測金鑰輪替。
- 無縫背景 KEK 輪替:輪替時,系統會啟動淺層 KEK 輪替,確保持續保護資料,且不需要在 vCenter 中手動介入。這項作業會使用新的金鑰加密金鑰 (KEK),更新資料加密金鑰 (DEK) 的金鑰加密金鑰。由於 DEK 會直接加密 vSAN 資料,因此這項程序不需要重新加密所有 vSAN 資料。
- 零停機時間管理:系統會在背景產生及套用 KEK,確保工作負載的效能和可用性。這項程序通常會在 Cloud KMS 金鑰輪替後 48 小時內完成。
加密虛擬機器的需求條件
您可以透過預設Google-owned and managed key 供應商或 Cloud Key Management Service,管理 VM 的加密金鑰。
如果您為私有雲中的任何 VM 啟用 VM 加密 (或 vTPM),並使用 KMS 管理加密金鑰,則在輪替 KMS 金鑰後,必須重新加密 (淺層重新產生金鑰) 每個 VM。
淺層重新產生金鑰只會替換金鑰加密金鑰 (KEK),不會變更 VM 的資料加密金鑰 (DEK)。您通常會在 vSphere Client 中使用「重新加密」動作,觸發淺層重新產生金鑰。
在這項作業期間,系統會使用新的 KEK 重新包裝 (重新加密) 現有 DEK。這個程序速度很快,因為不會重寫磁碟上的實際資料,只會更新包含加密 DEK 的小型金鑰套件。詳情請參閱下列 VMware 說明文件:
無法重新設定加密 VM 金鑰的風險
如果未先重新設定加密 VM 的金鑰,就刪除輪替 (舊) 的 KMS 金鑰版本,可能會導致下列問題:
- vMotion 失敗:如果您在 KMS 金鑰輪替後,但在執行 VM 重新加密前,重新啟動目的地主機或將其新增至叢集,ESXi 主機就無法在 vMotion 期間解密 VM DEK。
- 無法開機:如果主機重新啟動或清除本機金鑰快取,就無法從 KMS 重新取得金鑰。如果您從 KMS 刪除必要金鑰,主機就無法解密 DEK,因此加密的 VM 無法啟動。
在工作負載 VM 上執行重新產生金鑰作業的步驟
- 在 vSphere Client 中,以滑鼠右鍵按一下 VM。
- 依序選取「VM Policies」>「Re-encrypt」。
- 在隨即顯示的對話方塊中,確認重新加密要求。
- 等待工作完成。
- 將 VM 遷移至您重新啟動或在 KMS 金鑰輪替後新增至叢集的主機,即可驗證重新加密作業。
外部 KMS
您也可以選擇符合 KMIP 1.1 規範,且經 VMware 認證可用於 vSAN 的第三方 KMS 解決方案。下列供應商已透過 VMware Engine 驗證其 KMS 解決方案,並發布部署指南和支援聲明:
如需設定操作說明,請參閱下列文件:
使用支援的供應商
部署外部 KMS 時,每個部署作業都需要執行相同的基本步驟:
- 建立 Google Cloud 專案或使用現有專案。
- 建立新的虛擬私有雲 (VPC) 網路,或選擇現有的虛擬私有雲網路。
- 將所選虛擬私有雲網路連線至 VMware Engine 網路。
接著,在 Compute Engine VM 執行個體中部署 KMS:
- 設定必要 IAM 權限,部署 Compute Engine VM 執行個體。
- 在 Compute Engine 中部署 KMS。
- 在 vCenter 和 KMS 之間建立信任關係。
- 啟用 vSAN 資料加密。
以下各節將簡要說明使用其中一個支援供應商的程序。
設定 IAM 權限
您必須具備足夠的權限,才能在特定 Google Cloud 專案和虛擬私有雲網路中部署 Compute Engine VM 執行個體、將虛擬私有雲網路連線至 VMware Engine,以及設定虛擬私有雲網路的防火牆規則。
專案擁有者和具有網路管理員角色的 IAM 主體可以建立分配的 IP 範圍,以及管理私人連線。如要進一步瞭解角色,請參閱 Compute Engine IAM 角色。
在 Compute Engine 中部署金鑰管理系統
Google Cloud Marketplace 提供部分 KMS 解決方案的設備外型規格。您可以直接在 VPC 網路或專案中匯入 OVA,部署這類裝置。 Google Cloud
如果是軟體型 KMS,請使用 KMS 供應商建議的設定 (vCPU 數量、vMem 和磁碟),部署 Compute Engine VM 執行個體。在訪客作業系統中安裝 KMS 軟體。在已連線至 VMware Engine 網路的虛擬私有雲網路中,建立 Compute Engine VM 執行個體。
在 vCenter 和 KMS 之間建立信任關係
在 Compute Engine 中部署 KMS 後,請設定 VMware Engine vCenter,從 KMS 擷取加密金鑰。
請先將 KMS 連線詳細資料新增至 vCenter。接著,在 vCenter 和 KMS 之間建立信任關係。如要在 vCenter 和 KMS 之間建立信任關係,請執行下列操作:
- 在 vCenter 中產生憑證。
- 使用 KMS 產生的權杖或金鑰簽署。
- 將該憑證提供或上傳至 vCenter。
- 在 vCenter 伺服器設定頁面中檢查 KMS 設定和狀態,確認連線狀態。
啟用 vSAN 資料加密
在 vCenter 中,預設 CloudOwner 使用者有足夠的權限可啟用及管理 vSAN 資料加密。
如要從外部 KMS 切換回預設Google-owned and managed key 提供者,請按照 VMware 文件「設定及管理標準金鑰提供者」中的步驟,變更金鑰提供者。
後續步驟
- 瞭解 vSAN KMS 連線健康狀態檢查。
- 瞭解 vSAN 7.0 加密。