本文說明如何為 Cloud Logging 設定及管理客戶自行管理的加密金鑰 (CMEK),以符合貴機構的法規遵循需求。對於機構和資料夾,您可以設定 Cloud Logging 的預設資源設定,強制新值區使用 CMEK。設定完成後,Cloud Logging 會確保機構或資料夾中的所有新記錄 bucket,都以客戶管理金鑰加密。
您可以為機構和資料夾設定 Cloud Logging 的預設資源設定。
建立新資源時,這些資源會繼承上層的設定。舉例來說,假設您將機構的 Cloud Logging 預設資源設定設為 CMEK 設定,完成這項設定後,在機構的專案、資料夾或帳單帳戶中建立的任何新 _Default 和 _Required 記錄 bucket,都會使用預設金鑰加密。此外,如果您在機構的子項資源中建立自訂記錄儲存空間,系統會自動使用預設金鑰,除非您在建立記錄儲存空間時提供其他金鑰。
本指南中的操作說明使用 Google Cloud CLI。
本文中的資訊不適用於可觀測性值區。 如要瞭解可觀測性 bucket,請參閱「設定可觀測性 bucket 的預設值」。
總覽
根據預設,Cloud Logging 會加密靜態儲存的客戶內容。記錄服務會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密機制」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務 (包括 Logging)。使用 Cloud KMS 金鑰可控管防護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄及控管金鑰生命週期。 您可以在 Cloud KMS 中控管及管理這些金鑰,而非由 Google 擁有及管理用於保護資料的對稱金鑰加密金鑰 (KEK)。
使用 CMEK 設定資源後,存取 Logging 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。
如果 Cloud Logging 的預設資源設定包含 CMEK 設定,系統會執行下列操作:
- 系統會自動使用設定的金鑰,加密機構或資料夾中的新記錄水桶。不過,您可以變更該金鑰,或是建立記錄檔儲存空間並指定其他金鑰。詳情請參閱「為記錄檔值區設定 CMEK」。
- 如果您使用 Observability Analytics,並查詢多個記錄檔 bucket,系統可能會使用預設金鑰加密暫時資料。詳情請參閱「Observability Analytics 限制」。
事前準備
如要開始使用,請完成下列步驟:
建立啟用 CMEK 的記錄 bucket 前,請先詳閱限制。
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
設定要建立金鑰的專案: Google Cloud
-
如要取得建立金鑰所需的權限,請要求管理員授予您專案的「Cloud KMS 管理員 」(
roles/cloudkms.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。 -
Cloud Logging 可讓您使用任何區域的金鑰。不過,建立記錄檔 bucket 時,記錄檔 bucket 的位置必須與金鑰位置相符。如要瞭解支援的地區,請參閱下列文章:
如果 Cloud Logging 的預設資源設定包含 CMEK 設定,則在機構或資料夾中建立的新記錄 bucket 會自動設定為 CMEK。此外,由於記錄 bucket 的位置必須與金鑰位置相符,如果 Cloud Logging 的預設資源設定包含 CMEK 設定,您就無法在
global區域建立記錄 bucket。
-
請確認您在要設定 Cloud Logging 預設資源設定的機構或資料夾中,所擁有的 IAM 角色包含下列 Cloud Logging 權限:
logging.settings.getlogging.settings.update
為機構或資料夾啟用 CMEK
請按照下列操作說明,為資料夾或機構啟用 CMEK。Google Cloud
取得服務帳戶 ID
如要判斷與要套用 CMEK 的機構或資料夾相關聯的服務帳戶 ID,請執行下列 gcloud logging settings describe 指令:
資料夾
gcloud logging settings describe --folder=FOLDER_ID
執行上一個指令前,請先進行下列替換:
- FOLDER_ID:資料夾的專屬數字 ID。如要瞭解如何使用資料夾,請參閱「建立及管理資料夾」。
ORGANIZATION
gcloud logging settings describe --organization=ORGANIZATION_ID
執行上一個指令前,請先進行下列替換:
- ORGANIZATION_ID:組織的專屬數字 ID。如要瞭解如何取得這個 ID,請參閱「取得機構 ID」。
如果機構或資料夾沒有服務帳戶,上述指令會產生服務帳戶。這項指令也會傳回兩個服務帳戶的 ID,分別位於 kmsServiceAccountId 欄位和 loggingServiceAccountId 欄位。如要設定 Cloud Logging 的預設資源設定,使其具有 CMEK 設定,請使用 kmsServiceAccountId 欄位中的值。
以下說明指定機構時,上述指令的回應範例:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com name: organizations/ORGANIZATION_ID/settings
針對每項資源執行一次佈建程序。多次執行 describe 指令會傳回 kmsServiceAccountId 欄位的相同值。
如果無法使用 Google Cloud CLI,請執行 Cloud Logging API 方法 getSettings。
指派加密者/解密者角色
如要使用 CMEK,請將「Cloud KMS CryptoKey Encrypter/Decrypter」角色指派給服務帳戶,授予服務帳戶使用 Cloud KMS 的權限:
gcloud
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
執行上一個指令前,請先進行下列替換:
- 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。
控制台
- 前往 Google Cloud 控制台的「金鑰管理」頁面。
選取包含金鑰的金鑰環名稱。
勾選金鑰的核取方塊。
「權限」分頁標籤會隨即顯示。
在「新增成員」對話方塊中,指定要授予存取權的記錄服務帳戶電子郵件地址。
在「Select a role」(選取角色) 選單中,選取「Cloud KMS CryptoKey Encrypter/Decrypter」(Cloud KMS CryptoKey 加密者/解密者)。
按一下「新增」。
設定機構政策
記錄支援組織政策,可要求 CMEK 保護措施,並限制哪些 Cloud KMS CryptoKey 可用於 CMEK 保護措施:
如果
logging.googleapis.com位於限制constraints/gcp.restrictNonCmekServices的服務政策清單中,則 Logging 會拒絕建立未受 CMEK 保護的新使用者定義 bucket。Deny不過,這項限制不會阻止 Cloud Logging 建立_Required和_Default記錄 bucket,這些 bucket 會在建立Google Cloud 專案時建立。強制執行
constraints/gcp.restrictCmekCryptoKeyProjects時,記錄會建立受 CMEK 保護的資源,這些資源受到允許的專案、資料夾或機構的 CryptoKey 保護。
如要進一步瞭解 CMEK 和組織政策,請參閱「CMEK 組織政策」。
請確認 Cloud Logging 的預設資源設定符合貴機構的政策。如要修改機構和資料夾的 Cloud Logging 預設資源設定,請先檢查並視需要更新組織政策,再更新這些設定。
如要查看或設定組織政策,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Organization Policies」(組織政策) 頁面:
前往「Organization Policies」(組織政策)
如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」(IAM 與管理) 的結果。
- 選取您的機構。
驗證,並視需要更新 CMEK 專屬限制。
如要瞭解如何修改組織政策,請參閱「建立及編輯政策」。
使用 Cloud KMS 金鑰設定 Cloud Logging
如要更新 Cloud Logging 的預設資源設定,使其包含 CMEK 設定,請執行下列
gcloud logging settings update
指令:
資料夾
gcloud logging settings update \
--folder=FOLDER_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-key-name=KMS_KEY_NAME \
--kms-keyring=KMS_KEY_RING \
--kms-project=KMS_PROJECT_ID
執行上一個指令前,請先進行下列替換:
- FOLDER_ID:資料夾的專屬數字 ID。如要瞭解如何使用資料夾,請參閱「建立及管理資料夾」。
- KMS_KEY_LOCATION:Cloud KMS 金鑰所在的區域。
- KMS_KEY_NAME:
Cloud KMS 金鑰的名稱。格式如下:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY。 - KMS_KEY_RING:Cloud KMS 金鑰環的名稱。
- KMS_PROJECT_ID:由專案名稱和隨機指派的數字組成的專屬英數字元 ID,用於執行 Cloud KMS 的專案。 Google Cloud Google Cloud 如要瞭解如何取得這個 ID,請參閱「識別專案」。
先前的指令會更新 Cloud Logging 的預設資源設定,以儲存 Cloud KMS 金鑰的相關資訊。請務必將資料夾的預設儲存位置設為 KMS_KEY_LOCATION 的值。如果尚未設定預設儲存位置,或該位置的值與 KMS_KEY_LOCATION 的值不符,請在先前的指令中附加下列內容:
--storage-location=KMS_KEY_LOCATION
--storage-location 標記可讓您設定或更新資料夾的預設儲存位置。
ORGANIZATION
gcloud logging settings update \
--organization=ORGANIZATION_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-key-name=KMS_KEY_NAME \
--kms-keyring=KMS_KEY_RING \
--kms-project=KMS_PROJECT_ID
執行上一個指令前,請先進行下列替換:
- ORGANIZATION_ID:組織的專屬數字 ID。如要瞭解如何取得這個 ID,請參閱「取得機構 ID」。
- KMS_KEY_LOCATION:Cloud KMS 金鑰所在的區域。
- KMS_KEY_NAME:
Cloud KMS 金鑰的名稱。格式如下:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY。 - KMS_KEY_RING:Cloud KMS 金鑰環的名稱。
- KMS_PROJECT_ID:由專案名稱和隨機指派的數字組成的專屬英數字元 ID,用於執行 Cloud KMS 的專案。 Google Cloud Google Cloud 如要瞭解如何取得這個 ID,請參閱「識別專案」。
先前的指令會更新 Cloud Logging 的預設資源設定,以儲存 Cloud KMS 金鑰的相關資訊。請務必確認機構的預設儲存位置已設為 KMS_KEY_LOCATION 的值。如果尚未設定預設儲存位置,或該位置的值與 KMS_KEY_LOCATION 的值不符,請在先前的指令中附加下列內容:
--storage-location=KMS_KEY_LOCATION
--storage-location 旗標可讓您設定或更新機構的預設儲存位置。
套用金鑰後,機構或資料夾中的新記錄檔值區會設定為使用這項金鑰加密待用資料。您也可以為個別記錄檔 bucket 變更金鑰。您無法在 global 區域建立記錄檔 bucket,因為您必須使用金鑰,且金鑰的區域必須與資料的區域範圍相符。
如果無法使用 Google Cloud CLI,請執行 Cloud Logging API 方法 updateSettings。
確認啟用金鑰
如要確認您已為機構或資料夾成功啟用 CMEK,請執行下列指令:gcloud logging settings describe
資料夾
gcloud logging settings describe --folder=FOLDER_ID
執行上一個指令前,請先進行下列替換:
- FOLDER_ID:資料夾的專屬數字 ID。如要瞭解如何使用資料夾,請參閱「建立及管理資料夾」。
ORGANIZATION
gcloud logging settings describe --organization=ORGANIZATION_ID
執行上一個指令前,請先進行下列替換:
- ORGANIZATION_ID:組織的專屬數字 ID。如要瞭解如何取得這個 ID,請參閱「取得機構 ID」。
如果上一個指令傳回 Cloud KMS 金鑰名稱,且 kmsKeyName 欄位已填入,表示機構或資料夾已啟用 CMEK:
kmsKeyName: KMS_KEY_NAME kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
將記錄檔轉送至支援的目的地
您可以設定 Cloud Logging 記錄值區,使用 CMEK 加密資料。 如果是組織和資料夾,如果您使用 CMEK 設定 Cloud Logging 的預設資源設定,組織或資料夾中的新記錄 bucket 會自動使用 CMEK。您可以變更這些記錄檔值區的金鑰,也可以建立記錄檔值區,並使用與 Cloud Logging 預設資源設定所指定不同的 KMS 金鑰。
如要瞭解如何將 CMEK 套用至記錄檔 bucket,包括如何變更金鑰,以及在記錄檔 bucket 上啟用 CMEK 時的限制,請參閱「為記錄檔 bucket 設定 CMEK」。
Cloud Storage 支援使用 CMEK 路由記錄。如要瞭解如何為 Cloud Storage 設定 CMEK,請參閱「使用客戶自行管理的加密金鑰」。
如果將記錄檔資料傳送至 Cloud Storage 時,因金鑰無法使用而導致資料遺失,只要記錄檔也儲存在記錄檔 bucket 中,您就可以追溯方式將記錄檔大量複製到 Cloud Storage。詳情請參閱「複製記錄項目」。
- BigQuery 預設會加密靜態儲存的客戶內容。詳情請參閱「使用 Cloud Key Management Service 金鑰保護資料」。
- Pub/Sub 預設會加密靜態儲存的客戶內容。詳情請參閱「設定訊息加密機制」。
管理 Cloud KMS 金鑰
以下各節說明如何變更、撤銷存取權或停用 Cloud KMS 金鑰。
變更 Cloud KMS 金鑰
如要變更與機構或資料夾相關聯的 Cloud KMS 金鑰,請建立金鑰,然後執行 gcloud logging settings update 指令,並提供新 Cloud KMS 金鑰的相關資訊:
資料夾
gcloud logging settings update \ --folder=FOLDER_ID --kms-key-name=NEW_KMS_KEY_NAME --kms-location=NEW_KMS_KEY_LOCATION \ --kms-keyring=NEW_KMS_KEY_RING \ --kms-project=NEW_KMS_PROJECT_ID
請務必將資料夾的預設儲存位置設為 KMS_KEY_LOCATION 的值。如果尚未設定預設儲存位置,或該位置的值與 KMS_KEY_LOCATION 的值不符,請在先前的指令中附加下列內容:
--storage-location=NEW_KMS_KEY_LOCATION
ORGANIZATION
gcloud logging settings update \ --organization=ORGANIZATION_ID --kms-key-name=NEW_KMS_KEY_NAME --kms-location=NEW_KMS_KEY_LOCATION \ --kms-keyring=NEW_KMS_KEY_RING \ --kms-project=NEW_KMS_PROJECT_ID
請務必確認機構的預設儲存位置已設為 KMS_KEY_LOCATION 的值。如果尚未設定預設儲存位置,或該位置的值與 KMS_KEY_LOCATION 的值不符,請在先前的指令中附加下列內容:
--storage-location=NEW_KMS_KEY_LOCATION
撤銷 Cloud KMS 金鑰的存取權
如要撤銷 Logging 對 Cloud KMS 金鑰的存取權,請移除已設定服務帳戶對該金鑰的 IAM 權限。
如果移除記錄檔的存取金鑰權限,變更最多可能需要一小時才會生效。
如要撤銷 Logging 對 Cloud KMS 金鑰的存取權,請執行下列 Google Cloud CLI 指令:
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
執行上一個指令前,請先進行下列替換:
- 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 後,系統只會停止對日後作業強制執行 CMEK 政策,先前套用的設定則不會變動。
如要停用已設定 CMEK 的資源,請執行下列 Google Cloud CLI 指令:
資料夾
gcloud logging settings update --folder=FOLDER_ID --clear-kms-key
執行上一個指令前,請先進行下列替換:
- FOLDER_ID:資料夾的專屬數字 ID。如要瞭解如何使用資料夾,請參閱「建立及管理資料夾」。
ORGANIZATION
gcloud logging settings update --organization=ORGANIZATION_ID --clear-kms-key
執行上一個指令前,請先進行下列替換:
- ORGANIZATION_ID:組織的專屬數字 ID。如要瞭解如何取得這個 ID,請參閱「取得機構 ID」。
如要刪除金鑰,請參閱「刪除與還原金鑰版本」。
Cloud KMS 金鑰輪替注意事項
與 Google Cloud 機構或資料夾相關聯的 Cloud KMS 金鑰輪替時,Cloud Logging 不會自動輪替臨時災難復原檔案的加密金鑰。現有復原檔案會繼續使用當初建立時採用的金鑰版本。新的復原檔案會使用目前的主要金鑰版本。
限制
為 Cloud Logging 設定預設資源設定時,如果包含 CMEK 設定,則有下列已知限制。
災難復原檔案無法使用
如果符合下列條件,記錄服務就會將 Cloud KMS 金鑰視為可用且可存取:
- 該金鑰已啟用。
gcloud logging settings describe指令回應的kmsServiceAccountId欄位中列出的服務帳戶,必須具備金鑰的加密和解密權限。
如果 Logging 無法存取 Cloud KMS 金鑰,就無法寫入暫時的災害復原檔案,使用者也無法執行查詢。即使還原金鑰存取權,查詢效能仍可能下降。
由於記錄服務無法寫入轉送作業所需的暫存檔案,因此將記錄檔轉送至 Cloud Storage 的作業也可能受到影響。如果加密或解密資料時發生錯誤,系統會將通知傳送至包含 Cloud KMS 金鑰的專案。 Google Cloud
用戶端程式庫適用情形
記錄用戶端程式庫不會提供設定 CMEK 的方法。
Cloud EKM 金鑰無法使用,導致服務效能降低
使用 Cloud EKM 金鑰時,Google 無法控管外部金鑰管理合作夥伴系統中外部代管金鑰的可用性。
如果 Cloud Logging 的預設資源設定包含 CMEK 設定,且外部代管金鑰無法使用,Cloud Logging 會持續嘗試存取金鑰。Cloud Logging 也會緩衝處理最多一小時的傳入記錄資料。 一小時後,如果 Cloud Logging 仍無法存取外部管理金鑰,就會開始捨棄資料。
如果將 CMEK 套用至記錄檔儲存空間,且外部管理的金鑰無法使用,Cloud Logging 仍會將記錄檔儲存在記錄檔儲存空間中,但使用者無法存取該資料。
如要瞭解使用外部金鑰時的其他考量事項和替代方案,請參閱 Cloud External Key Manager 說明文件。
記錄值區的限制
如要瞭解在記錄值區中使用 CMEK 時的限制,請參閱「限制」。
配額
如要瞭解 Logging 用量限制的詳細資訊,請參閱「配額與限制」。
排解設定錯誤
如要瞭解如何排解 CMEK 設定錯誤,請參閱「排解 Cloud Logging 的 CMEK 和預設資源設定」。