本文說明如何設定及管理 Cloud Logging 的客戶管理加密金鑰 (CMEK),以符合貴機構的法規遵循需求。您可以將 CMEK 設為機構、資料夾或兩者的預設資源設定。設定完成後,Cloud Logging 會確保機構或資料夾中的所有新記錄資料夾都會使用客戶管理式金鑰進行加密。
您可以為機構和資料夾設定預設設定。建立新資源時,這些資源會繼承父項資源的預設設定。舉例來說,如果您將 CMEK 設為機構的預設資源設定,則在該機構的專案、資料夾或帳單帳戶中建立的任何新 _Default
和 _Required
記錄資料集,都會使用預設金鑰加密。此外,如果您在該機構的子項專案中建立自訂記錄值區,系統會自動使用預設金鑰,除非您在建立記錄值區時提供其他金鑰。
本指南的操作說明會使用 Google Cloud CLI。
總覽
根據預設,Cloud Logging 會加密靜態儲存的客戶內容。記錄功能會使用金鑰加密金鑰加密儲存在記錄值區中的資料,這個程序稱為「信封式加密」。您必須具備這些金鑰加密金鑰的存取權,才能存取記錄資料。根據預設,這些資料是 Google-owned and Google-managed encryption keys ,您不必採取任何行動。
貴機構可能有監管、法規遵循或進階加密要求,而我們的預設靜態資料加密功能並未提供這些功能。為滿足貴機構的需求,您可以設定 CMEK 來控制及管理自己的加密功能,而非使用Google-owned and Google-managed encryption keys。
如要進一步瞭解 CMEK (包括優點和限制),請參閱「客戶代管加密金鑰」。
將 CMEK 設為記錄作業的預設資源設定時,會發生下列情況:
- 機構或資料夾中的新記錄檔值區會自動使用已設定的金鑰加密。不過,您可以變更該鍵,或建立記錄值區並指定不同的鍵。詳情請參閱「為記錄值區設定 CMEK」。
- 如果您使用 Log Analytics 並查詢多個記錄值區,則系統可能會使用預設金鑰加密暫時性資料。詳情請參閱「Log Analytics 限制」。
事前準備
如要開始使用,請完成下列步驟:
建立啟用 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 可讓您使用任何區域的金鑰。不過,建立記錄值區時,記錄值區的位置必須與金鑰的位置一致。如需支援的區域相關資訊,請參閱以下內容:
如果您按照本文所述步驟,將 CMEK 設為記錄的預設資源設定,則在機構或資料夾中建立的新記錄值區會自動設定為使用 CMEK。此外,由於記錄檔 bucket 的位置必須與金鑰的位置相符,因此將 CMEK 設為預設資源設定後,就無法在
global
區域中建立記錄檔 bucket。
-
請確認您要設定預設設定的機構或資料夾中的 IAM 角色,具備下列 Cloud Logging 權限:
logging.settings.get
logging.settings.update
- FOLDER_ID:資料夾的專屬數字 ID。如要瞭解如何使用資料夾,請參閱「建立及管理資料夾」一文。
- ORGANIZATION_ID:機構的專屬數字 ID。如要瞭解如何取得這個 ID,請參閱「取得機構 ID」一文。
- KMS_PROJECT_ID:由 Google Cloud 專案名稱和隨機指派的數字組成的唯一英數識別碼,用於執行 Cloud KMS 的 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 控制台的「Key management」頁面。
選取包含金鑰的金鑰環名稱。
勾選金鑰的核取方塊。
「Permissions」分頁隨即顯示。
在「Add members」(新增成員) 對話方塊中,指定您授予存取權的 Logging 服務帳戶電子郵件地址。
在「Select a role」(選取角色) 下拉式清單中,選取 [Cloud KMS CryptoKey Encrypter/Decrypter] (Cloud KMS CryptoKey 加密者/解密者)。
按一下「新增」。
如果
logging.googleapis.com
位於限制條件constraints/gcp.restrictNonCmekServices
的服務Deny
政策清單中,Logging 就會拒絕建立未受 CMEK 保護的新使用者定義區塊。不過,這項限制不會阻止 Cloud Logging 建立Google Cloud 專案時所建立的_Required
和_Default
記錄檔 bucket。強制執行
constraints/gcp.restrictCmekCryptoKeyProjects
後,Logging 會建立受 CMEK 保護的資源,這些資源受到來自允許專案、資料夾或機構的 CryptoKey 保護。-
在 Google Cloud 控制台中,前往「Organization Policies」(機構政策) 頁面:
前往「Organization Policies」(機構政策)
如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM 與管理」的結果。
- 選取您的機構。
確認並視需要更新 CMEK 專屬的限制條件。
如要瞭解如何修改機構政策,請參閱「建立及編輯政策」。
- 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:由 Google Cloud 專案名稱和隨機指派的數字組成的唯一英數識別碼,用於執行 Cloud KMS 的 Google Cloud 專案。如要瞭解如何取得這個 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:由 Google Cloud 專案名稱和隨機指派的數字組成的唯一英數識別碼,用於執行 Cloud KMS 的 Google Cloud 專案。如要瞭解如何取得這個 ID,請參閱「識別專案」。
- FOLDER_ID:資料夾的專屬數字 ID。如要瞭解如何使用資料夾,請參閱「建立及管理資料夾」一文。
- ORGANIZATION_ID:機構的專屬數字 ID。如要瞭解如何取得這個 ID,請參閱「取得機構 ID」一文。
您可以設定 Cloud Logging 記錄值區,以便使用 CMEK 加密資料。將 CMEK 設為機構或資料夾的預設設定後,機構或資料夾中的新記錄值區就會自動使用 CMEK。您可以變更這些記錄檔值區的金鑰,也可以建立使用不同於預設設定指定的 KMS 金鑰的記錄檔值區。
如要瞭解如何在記錄值區中啟用 CMEK,包括如何變更金鑰和限制,請參閱「為記錄值區設定 CMEK」。
Cloud Storage 支援將 CMEK 用於路由記錄檔。如需設定 Cloud Storage 的 CMEK 操作說明,請參閱「使用客戶管理的加密金鑰」。
如果在將記錄資料路由至 Cloud Storage 時,因金鑰無法使用而導致資料遺失,您可以將記錄資料一併儲存在記錄值區,然後回溯複製記錄資料到 Cloud Storage。詳情請參閱「複製記錄項目」。
- 根據預設,BigQuery 會加密靜態儲存的客戶內容。詳情請參閱「使用 Cloud Key Management Service 金鑰保護資料」。
- 根據預設,Pub/Sub 會加密靜態儲存的客戶內容。詳情請參閱「設定訊息加密機制」。
- KMS_PROJECT_ID:由 Google Cloud 專案名稱和隨機指派的數字組成的唯一英數識別碼,用於執行 Cloud KMS 的 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
。 - FOLDER_ID:資料夾的專屬數字 ID。如要瞭解如何使用資料夾,請參閱「建立及管理資料夾」一文。
- ORGANIZATION_ID:機構的專屬數字 ID。如要瞭解如何取得這個 ID,請參閱「取得機構 ID」一文。
- 金鑰已啟用。
gcloud logging settings describe
指令回應的kmsServiceAccountId
欄位中列出的服務帳戶具備加密和解密金鑰的權限。
為機構或資料夾啟用 CMEK
請按照下列操作說明,為Google Cloud 資料夾或機構啟用 CMEK。
取得服務帳戶 ID
如要判斷與要套用 CMEK 的機構或資料夾相關聯的服務帳戶 ID,請執行下列 gcloud logging settings describe
指令:
資料夾
gcloud logging settings describe --folder=FOLDER_ID
執行上述指令前,請先進行以下替換:
機構
gcloud logging settings describe --organization=ORGANIZATION_ID
執行上述指令前,請先進行以下替換:
上述指令會為機構或資料夾產生服務帳戶 (如果不存在)。這項指令也會傳回兩個服務帳戶的 ID,一個在 kmsServiceAccountId
欄位中,另一個在 loggingServiceAccountId
欄位中。如要將 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
執行上述指令前,請先進行下列替換:
控制台
設定機構政策
記錄功能支援組織政策,可要求 CMEK 保護機制,並限制可用於 CMEK 保護機制的 Cloud KMS CryptoKey:
如要進一步瞭解 CMEK 和機構政策,請參閱「CMEK 機構政策」。
如果機構政策中指定了 CMEK 限制,請確認這些限制與機構或資料夾的記錄預設設定一致。此外,如果您打算修改預設設定,請先檢查並視需要更新機構政策,然後再更新預設設定。
如要查看或設定機構政策,請按照下列步驟操作:
使用 Cloud KMS 金鑰設定 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
執行上述指令前,請先進行下列替換:
先前的命令會更新預設設定,以便儲存 Cloud KMS 金鑰的相關資訊。您必須確保資料夾的預設儲存位置已設為 KMS_KEY_LOCATION 的值。如果您尚未設定預設儲存位置,或是該位置的值不符合 KMS_KEY_LOCATION 的值,請在先前的指令中附加以下內容:
--storage-location = KMS_KEY_LOCATION
--storage-location
標記可讓您設定或更新資料夾的預設儲存位置。
機構
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
執行上述指令前,請先進行下列替換:
先前的命令會更新預設設定,以便儲存 Cloud KMS 金鑰的相關資訊。您必須確保機構的預設儲存位置設為 KMS_KEY_LOCATION 的值。如果您尚未設定預設儲存位置,或是該位置的值不符合 KMS_KEY_LOCATION 的值,請在先前的指令中附加以下內容:
--storage-location = KMS_KEY_LOCATION
--storage-location
標記可讓您設定或更新機構的預設儲存空間位置。
套用金鑰後,機構或資料夾中的新記錄檔值區會設定為使用這個金鑰加密靜止資料。您也可以變更個別記錄值區的鍵。您無法在 global
區域中建立記錄資料桶,因為您必須使用地區與資料區域範圍相符的金鑰。
如果無法使用 Google Cloud CLI,請執行 Cloud Logging API 方法 updateSettings
。
驗證金鑰啟用狀態
如要確認您已成功為組織或資料夾啟用 CMEK,請執行下列 gcloud logging settings describe
指令:
資料夾
gcloud logging settings describe --folder=FOLDER_ID
執行上述指令前,請先進行以下替換:
機構
gcloud logging settings describe --organization=ORGANIZATION_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 KMS 金鑰
下列各節說明如何變更、撤銷 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
機構
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 金鑰的存取權
您可以移除已設定服務帳戶的 IAM 權限,撤銷 Logging 對 Cloud KMS 金鑰的存取權。
如果您移除 Logging 對金鑰的存取權,變更可能需要最多一小時才會生效。
如要撤銷 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
執行上述指令前,請先進行下列替換:
停用 CMEK
為組織或資料夾停用 CMEK 後,系統只會移除未來作業的 CMEK 政策強制執行機制,先前套用的任何設定都會保持不變。
如要在資源上停用 CMEK (該資源已將 CMEK 設為預設資源設定),請執行下列 Google Cloud CLI 指令:
資料夾
gcloud logging settings update --folder=FOLDER_ID --clear-kms-key
執行上述指令前,請先進行以下替換:
機構
gcloud logging settings update --organization=ORGANIZATION_ID --clear-kms-key
執行上述指令前,請先進行以下替換:
如要刪除金鑰,請參閱「刪除與還原金鑰版本」一文。
Cloud KMS 金鑰輪替的考量因素
與 Google Cloud 組織或資料夾相關聯的 Cloud KMS 金鑰輪替時,Cloud Logging 不會自動輪替暫時性災難復原檔案的加密金鑰。現有的復原檔案會繼續使用建立時所使用的金鑰版本。新的復原檔案會使用目前的主要金鑰版本。
限制
以下是將 CMEK 設為記錄作業的預設資源設定時的已知限制。
災難復原檔案無法使用
在符合下列兩個條件的情況下,Logging 會將 Cloud KMS 金鑰判定為可供使用及存取:
如果 Logging 無法存取 Cloud KMS 金鑰,就無法寫入臨時的災難復原檔案,且使用者無法執行查詢。即使已還原金鑰存取權,查詢效能仍可能會持續降低。
由於記錄功能無法寫入轉送所需的暫存檔案,因此轉送至 Cloud Storage 的記錄檔也可能會受到影響。如果在加密或解密資料時遇到錯誤,系統會將通知傳送至包含 Cloud KMS 金鑰的 Google Cloud 專案。
用戶端程式庫可用性
Logging 用戶端程式庫不會提供設定 CMEK 的方法。
因 Cloud EKM 金鑰無法使用而導致效能降低
使用 Cloud EKM 金鑰時,Google 無法控管外部代管金鑰在外部金鑰管理合作夥伴系統中的供應情形。
將 CMEK 設為機構或資料夾的預設資源設定後,如果無法使用外部代管的金鑰,Cloud Logging 會持續重試存取金鑰。Cloud Logging 也會將傳入的記錄資料緩衝至最多一小時。一小時後,如果 Cloud Logging 仍無法存取外部管理的金鑰,就會開始捨棄資料。
如果 CMEK 套用至記錄資料夾,且無法使用外部管理的金鑰,Cloud Logging 會繼續將記錄儲存在記錄資料夾中,但使用者無法存取該資料。
如要進一步瞭解使用外部金鑰時的其他考量和可能的替代方案,請參閱 Cloud External Key Manager 說明文件。
記錄區塊的限制
如要瞭解將 CMEK 與記錄值區搭配使用時的限制,請參閱限制。
配額
如要進一步瞭解記錄的使用限制,請參閱「配額與限制」一文。
排解設定錯誤
如要瞭解如何排解 CMEK 設定錯誤,請參閱「排解 CMEK 和預設設定錯誤」。