本頁說明如何使用客戶自行管理的加密金鑰 (CMEK),加密儲存在 Service Extensions 外掛程式中的內容。
總覽
根據預設,Service Extensions 會加密靜態客戶內容。Service Extensions 會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密機制」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務 (包括 Service Extensions)。使用 Cloud KMS 金鑰可讓您控管保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)。
使用 CMEK 設定資源後,存取 Service Extensions 資源的體驗與使用 Google 預設加密類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。
無論金鑰類型為何,所有密碼編譯作業都會計入擁有金鑰的 Google Cloud 專案。如要查看定價資訊,請參閱 Cloud KMS 定價。
建立金鑰並授予權限
下列操作說明將說明如何為外掛程式建立金鑰,以及如何授予使用該金鑰加密及解密外掛程式資料的權限。
在要管理金鑰的 Google Cloud 專案中,執行下列操作:
如要建立金鑰,請啟用 Cloud Key Management Service API。
使用下列任一選項建立金鑰環和金鑰:
Cloud KMS 金鑰位置必須與要加密的外掛程式位置相符。
Service Extensions 服務帳戶必須存在於 Service Extensions 專案中。服務帳戶名稱為
service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com,其中PROJECT_NUMBER是 Service Extensions 執行所在 Google Cloud 專案的專案編號。在 Service Extensions 專案中建立第一個外掛程式時,系統會自動建立服務帳戶。如果您尚未在專案中建立外掛程式,請執行下列指令來建立服務帳戶:
gcloud beta services identity create \ --service=networkactions.googleapis.com \ --project=PROJECT將 PROJECT 替換為執行 Service Extensions 的專案 ID。
將 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予您所建立金鑰的 Service Extensions 服務帳戶。控制台
前往 Google Cloud 控制台的「金鑰管理」頁面。
選取您建立的金鑰。
授予 Service Extensions 服務帳戶存取權:
- 選取「顯示資訊面板」。
- 按一下「新增成員」。
- 新增 Service Extensions 服務帳戶。服務帳戶為
service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com。 - 在「Select a role」(選取角色) 中,依序選取「Cloud KMS」>「Cloud KMS CryptoKey Encrypter/Decrypter」(Cloud KMS CryptoKey 加密者/解密者)。
- 按一下 [儲存]。
重複上一個步驟,授予外掛程式建立者帳戶的存取權。
選取「顯示資訊面板」。「角色/成員」欄會顯示角色。
gcloud
執行
gcloud kms keys add-iam-policy-binding指令,將存取權授予 Service Extensions 服務帳戶:gcloud kms keys add-iam-policy-binding [--project=PROJECT] KEY_NAME \ --location LOCATION --keyring=KEYRING_NAME \ --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter更改下列內容:
PROJECT:包含金鑰的專案 IDKEY_NAME:金鑰名稱LOCATION:金鑰位置KEYRING_NAME:金鑰環名稱PROJECT-NUMBER: Google Cloud 專案的專案編號
將
member設為外掛程式建立者的帳戶,然後重複上一個步驟。
建立外掛程式或更新外掛程式時,請指定 CMEK 金鑰。金鑰會加密外掛程式映像檔和設定資料。其他外掛程式資料則會受到 Google 預設加密機制保護。
自動重新加密
當 KMS 金鑰的主要版本變更時 (無論是使用者手動變更或自動輪替),受該金鑰保護的外掛程式資料會自動以新金鑰版本重新加密。
按鍵追蹤
您可以使用金鑰追蹤功能,列出金鑰保護的外掛程式資源。詳情請參閱「查看金鑰用量」。
Cloud Key Management Service 配額和 Service Extensions
在 Service Extensions 中使用 CMEK 金鑰時 (例如在下列作業中),專案可能會消耗 Cloud KMS 密碼編譯要求配額:
- 建立或更新受 CMEK 保護的外掛程式
- 新增版本或變更受 CMEK 保護的外掛程式主要版本
- 列出已設定
plugin_config_data欄位的受 CMEK 保護外掛程式版本 - 將外掛程式附加至擴充功能
附加的外掛程式也會隨著時間產生解密作業。
如果您使用硬體 (Cloud HSM) 或外部 (Cloud EKM) 金鑰,使用 CMEK 金鑰的加密和解密作業會影響 Cloud KMS 配額。
移除對 CMEK 加密外掛程式的存取權
您可以透過下列幾種方式,移除對 CMEK 加密外掛程式的存取權:
- 使用 Google Cloud 控制台或 gcloud CLI,從 Service Extensions 服務帳戶撤銷 Cloud KMS CryptoKey Encrypter/Decrypter 角色。權限變更會在幾秒內生效,但外掛程式金鑰遭撤銷後,可能需要幾十分鐘,外掛程式的所有服務副本才會停止提供流量。
- 暫時停用客戶自行管理的加密金鑰。
- 永久刪除 CMEK 金鑰。
建議您先撤銷 Service Extensions 服務帳戶的權限,再停用或刪除金鑰。
移除存取權的影響
受 CMEK 保護的資料包括從 Artifact Registry 下載的映像檔,以及直接提供的任何外掛程式設定資料 (透過 plugin_config_data 欄位)。
停用或銷毀外掛程式的加密金鑰後,受 CMEK 保護的所有外掛程式資料都會在幾分鐘內無法存取。外掛程式金鑰遭撤銷後,可能需要幾十分鐘,外掛程式的所有放送副本才會停止放送流量。
外掛程式中繼資料 (例如外掛程式名稱、說明、標籤或記錄設定) 仍可存取。
因此,如果移除保護有效外掛程式 (也就是附加至擴充功能的外掛程式) 的金鑰存取權,外掛程式就會無法放送流量。外掛程式的所有要求都會失敗。
外掛程式叫用失敗時,擴充功能的行為取決於 fail_open 欄位:
- 如果該欄位設為
true,要求會繼續傳送至目標服務,但不會指出外掛程式叫用失敗。 - 如果欄位設為
false,要求不會傳送至目標服務。
限制
外掛程式設定的 CMEK 保護機制僅限於 Service Extensions。
如要保護其他 Google 產品的外掛程式資源,請透過這些產品啟用 CMEK。如要為上傳至 Artifact Registry 的外掛程式映像檔設定 CMEK,請參閱這篇文章。如要保護外掛程式產生的記錄,請為 Cloud Logging 設定 CMEK。
外掛程式的加密模式 (Google 代管或 CMEK) 無法變更。 不過,您可以更新外掛程式,改用其他 KMS 金鑰。
僅支援區域外掛程式。此外,外掛程式只能由與外掛程式位於相同區域的金鑰加密。