本文說明如何為記錄 bucket 中儲存的記錄設定客戶自行管理的加密金鑰 (CMEK)。本文也會說明如何管理這些金鑰,以及使用 CMEK 的相關限制。
您可以將 CMEK 設定為機構或資料夾的預設資源設定。設定完成後,Cloud Logging 會確保機構或資料夾中的所有新記錄儲存空間,都以客戶管理的金鑰加密。如果您在建立記錄值區時未提供金鑰,系統會使用預設金鑰。詳情請參閱「為 Cloud Logging 設定 CMEK」。
總覽
根據預設,Cloud Logging 會加密靜態儲存的客戶內容。Logging 會使用金鑰加密金鑰,對儲存在記錄檔儲存空間中的資料進行加密,這個程序稱為「信封式加密」。如要存取記錄資料,必須先取得這些金鑰加密金鑰。 這些值預設為 Google-owned and Google-managed encryption keys ,您不必採取任何行動。
貴機構可能需要符合法規、法規遵循或進階加密要求,而預設的靜態加密機制無法滿足這些需求。為符合貴機構的需求,您可以自行管理金鑰,而不使用Google-owned and Google-managed encryption keys。
如要瞭解 CMEK 的優點和限制等詳細資訊,請參閱「客戶管理的加密金鑰」。
對於對稱式加密,建議定期自動輪替金鑰,詳情請參閱金鑰輪替。
必要條件
操作步驟如下:
使用 CMEK 時會有一些限制。建立啟用 CMEK 的記錄值區前,請先參閱限制。
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
設定要建立金鑰的專案: Google Cloud
-
如要取得建立金鑰所需的權限,請要求管理員在專案或父項資源上,授予您 Cloud KMS 管理員 (
roles/cloudkms.admin
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。 -
Cloud Logging 可讓您使用任何區域的金鑰。不過,建立記錄值區時,記錄值區的位置必須與金鑰位置一致。如要瞭解支援的區域,請參閱下列說明:
您無法為在
global
區域建立的記錄檔值區啟用 CMEK。
-
請確認您在打算建立記錄值區的Google Cloud 專案中,具備下列 Cloud Logging 權限:
logging.settings.get
logging.buckets.get
logging.buckets.list
logging.buckets.create
logging.buckets.update
執行下列
gcloud logging settings describe
指令:gcloud logging settings describe --project=BUCKET_PROJECT_ID
執行上一個指令前,請進行下列替換:
- BUCKET_PROJECT_ID:您打算建立記錄 bucket 的 Google Cloud 專案名稱。
如果指定資源沒有服務帳戶,上述指令會產生一個,並在
kmsServiceAccountId
欄位中傳回該服務帳戶的 ID:kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com name: projects/BUCKET_PROJECT_ID/settings
kmsServiceAccountId
欄位會列出 Cloud Logging 用來呼叫 Cloud Key Management Service 的服務帳戶。如果 KMS_SERVICE_ACCT_NAME 欄位的格式為
cmek-pPROJECT_NUMBER
,且您使用 VPC Service Controls 或啟用網域限定共用,請判斷是否需要遷移 CMEK 服務帳戶。如要瞭解何時需要遷移,以及如何執行遷移作業,請參閱「排解 VPC Service Controls 和網域限制共用功能的問題」。- KMS_PROJECT_ID:唯一的英數字元 ID,由執行 Cloud KMS 的 Google Cloud 專案的 Google Cloud 專案名稱和隨機指派的數字組成。如要瞭解如何取得這個 ID,請參閱「識別專案」。
- KMS_SERVICE_ACCT_NAME:
gcloud logging settings describe
指令回應的kmsServiceAccountId
欄位中顯示的服務帳戶名稱。 - KMS_KEY_LOCATION:Cloud KMS 金鑰的區域。
- KMS_KEY_RING:Cloud KMS 金鑰環的名稱。
- KMS_KEY_NAME:
Cloud KMS 金鑰的名稱。格式如下:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
。 - BUCKET_ID:記錄值區的名稱或 ID。
- LOCATION:記錄值區的位置。
- KMS_KEY_NAME:
Cloud KMS 金鑰的名稱。格式如下:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
。 - BUCKET_PROJECT_ID:要建立記錄 bucket 的 Google Cloud 專案名稱。
- BUCKET_PROJECT_ID:儲存記錄值區的 Google Cloud 專案名稱。
- 找出記錄 bucket 目前的 Cloud KMS 金鑰。詳情請參閱「驗證金鑰是否已啟用」。
- 找出可使用的其他 Cloud KMS 金鑰。如果金鑰環只有一個金鑰,請建立金鑰。
- 將記錄值區的 Cloud KMS 金鑰變更為上一個步驟中建立的 Cloud KMS 金鑰。
- 將記錄值區的 Cloud KMS 金鑰變更為原始 Cloud KMS 金鑰。
- BUCKET_ID:記錄值區的名稱或 ID。
- LOCATION:記錄值區的位置。
- NEW_KMS_KEY_NAME:新金鑰的名稱。
- BUCKET_PROJECT_ID:儲存記錄值區的 Google Cloud 專案名稱。
- KMS_PROJECT_ID:唯一的英數字元 ID,由執行 Cloud KMS 的 Google Cloud 專案的 Google Cloud 專案名稱和隨機指派的數字組成。如要瞭解如何取得這個 ID,請參閱「識別專案」。
- KMS_SERVICE_ACCT_NAME:
gcloud logging settings describe
指令回應的kmsServiceAccountId
欄位中顯示的服務帳戶名稱。 - KMS_KEY_LOCATION:Cloud KMS 金鑰的區域。
- KMS_KEY_RING:Cloud KMS 金鑰環的名稱。
- KMS_KEY_NAME:
Cloud KMS 金鑰的名稱。格式如下:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
。 - 金鑰已啟用。
- 記錄服務帳戶具備該金鑰的加密和解密權限。
啟用 CMEK
完成必要條件步驟後,請按照下列操作說明,為個別記錄值區啟用 CMEK。
取得服務帳戶 ID
如要找出與要套用 CMEK 的 Google Cloud資源相關聯的服務帳戶 ID,請按照下列步驟操作:
指派加密者/解密者角色
在記錄值區層級設定 CMEK 時,請將 Cloud KMS CryptoKey Encrypter/Decrypter 角色指派給 kmsServiceAccountId
欄位識別的服務帳戶,授予該服務帳戶使用 Cloud KMS 的權限:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY_NAME
執行上一個指令前,請先進行下列替換作業:
建立記錄值區並提供 Cloud KMS 金鑰
如要建立記錄 bucket 並為記錄 bucket 啟用 CMEK,請執行下列gcloud logging buckets create
指令:
gcloud logging buckets create BUCKET_ID \ --location=LOCATION \ --cmek-kms-key-name=KMS_KEY_NAME \ --project=BUCKET_PROJECT_ID
執行上一個指令前,請先進行下列替換作業:
確認啟用金鑰
如要確認您已成功建立啟用 CMEK 的記錄 bucket,請執行下列 gcloud logging buckets list
指令:
gcloud logging buckets list --project=BUCKET_PROJECT_ID
執行上一個指令前,請進行下列替換:
在表格輸出中,您會看到標示為 CMEK
的資料欄。如果 CMEK
欄的值為 TRUE
,表示記錄值區已啟用 CMEK。
如要查看特定記錄儲存區的詳細資料 (包括金鑰詳細資料),請執行下列指令:
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=BUCKET_PROJECT_ID
管理 Cloud KMS 金鑰
以下各節說明如何更新記錄 bucket,以使用 Cloud KMS 金鑰的最新主要金鑰版本。此外,這些主題也說明如何變更、撤銷存取權及停用 Cloud KMS 金鑰。
輪替 Cloud KMS 金鑰
建立 Cloud KMS 金鑰時,您可以設定輪替週期。您也可以手動輪替 Cloud KMS 金鑰。每次輪替金鑰時,系統都會建立該金鑰的新版本。
如果您輪替 Cloud KMS 金鑰,新的金鑰版本只會套用至金鑰輪替後建立的記錄檔儲存空間。如果現有記錄檔儲存空間使用該金鑰,輪替金鑰不會改變記錄檔儲存空間保護資料的方式。
舉例來說,假設您建立記錄儲存空間並啟用 CMEK,然後輪替 Cloud KMS 金鑰。您建立的記錄 bucket 不會使用新金鑰版本,而是繼續使用建立記錄 bucket 時標示為主要版本的金鑰版本,保護 bucket 中的資料。
如要更新記錄儲存區,使其使用 Cloud KMS 金鑰的最新主要金鑰版本,請按照下列步驟操作:
變更 Cloud KMS 金鑰
如要變更與記錄值區相關聯的 Cloud KMS 金鑰,請建立金鑰,然後更新記錄值區的 CMEK 設定:
gcloud logging buckets update BUCKET_ID --location=LOCATION \ --cmek-kms-key-name=NEW_KMS_KEY_NAME --project=BUCKET_PROJECT_ID
撤銷 Cloud KMS 金鑰的存取權
如要隨時撤銷 Logging 對 Cloud KMS 金鑰的存取權,請移除已設定服務帳戶對該金鑰的 IAM 權限。
如果移除記錄檔的存取金鑰權限,變更最多可能需要一小時才會生效。
如果您有已連結的 BigQuery 資料集,BigQuery 無法使用這項存取權,將金鑰套用至新的 BigQuery 表格。如要在未連結至 Cloud Logging 的 BigQuery 資料表上使用金鑰,請按照 BigQuery 的說明文件操作。如果您撤銷 Cloud Logging 對金鑰的存取權,且有連結的 BigQuery 資料集,系統也會撤銷 BigQuery 對同一金鑰的存取權。
您無法撤銷 BigQuery 對連結資料集金鑰的存取權,同時保留 Logging 的存取權。
如要進一步瞭解撤銷存取權的影響,請參閱「限制」一節。
如要移除 Logging 對金鑰的存取權,請執行下列指令:
gcloud kms keys remove-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY_NAME
執行上一個指令前,請先進行下列替換作業:
限制
以下是已知限制。
CMEK 會停用 Error Reporting
如要使用 Error Reporting,請勿在記錄 bucket 中啟用客戶自行管理的加密金鑰 (CMEK)。詳情請參閱疑難排解。
無法從記錄值區移除 CMEK
您無法重新設定記錄檔值區,變更或移除 CMEK。
因 Cloud KMS 金鑰無法使用而導致服務效能下降
如果符合下列條件,記錄服務會將 Cloud KMS 金鑰判定為可供使用及存取:
強烈建議您確保所有金鑰都已正確設定,且隨時可用。
災難復原功能失效
如果 Cloud Logging 主要儲存空間發生重大故障,Logging 會將記錄檔資料鏡像到災害復原檔案。為資源 (例如機構) 啟用 CMEK 後,該資源的記錄檔就會受到設定的 CMEK 金鑰保護。 Google Cloud 如果無法存取 CMEK 金鑰,系統就無法為該資源寫入災害復原檔案。
遺失災害復原檔案不會影響正常的記錄作業。 不過,如果發生儲存空間災難,Cloud Logging 可能無法從 CMEK 設定不正確的資源復原記錄。
支援限制
如果資源的金鑰設定有誤或無法使用,Cloud 客戶服務就無法讀取資源的記錄。
查詢效能降低
如果無法存取客戶管理的加密金鑰,Cloud Logging 仍會繼續加密資料,並將資料儲存在記錄檔 bucket 中。不過,Cloud Logging 無法對這類資料執行背景最佳化作業。如果金鑰存取權恢復,資料就會恢復可用狀態;不過,資料一開始會以未經最佳化的狀態儲存,查詢效能可能會受到影響。
Cloud EKM 金鑰無法使用,導致服務效能降低
使用 Cloud EKM 金鑰時, Google Cloud 無法控管外部金鑰管理合作夥伴系統中外部代管金鑰的供應情形。如果是值區層級的 CMEK,如果外部管理的金鑰無法使用,Cloud Logging 會繼續將記錄檔儲存在記錄檔值區中,但使用者無法存取這些記錄檔。
如要進一步瞭解使用外部金鑰時的注意事項和替代方案,請參閱 Cloud External Key Manager 說明文件。
區域性
建立記錄值區並啟用 CMEK 時,您必須使用金鑰,且金鑰的區域必須與資料的區域範圍相符。您無法為在 global
區域中建立的記錄檔 bucket 設定 CMEK。
用戶端程式庫適用情形
Logging 用戶端程式庫未提供設定 CMEK 的方法。
配額
在 Cloud Logging 中使用 CMEK 時,專案可能會耗用 Cloud KMS 密碼編譯要求配額。舉例來說,在記錄 bucket 上啟用 CMEK 可能會耗用這些配額。使用 CMEK 金鑰進行加密和解密作業時,只有在您使用硬體 (Cloud HSM) 或外部 (Cloud EKM) 金鑰時,才會影響 Cloud KMS 配額。詳情請參閱「Cloud KMS 配額」。
如要瞭解記錄的使用限制,請參閱配額與限制。
排解設定錯誤
如要瞭解如何排解 CMEK 設定錯誤,請參閱「排解 CMEK 和機構設定錯誤」。