本文提供如何為儲存在記錄值區中的記錄設定客戶管理的加密金鑰 (CMEK) 的操作說明。本文件也說明如何管理這些金鑰,以及使用 CMEK 時的限制。
您可以將 CMEK 設為機構或資料夾的預設資源設定。設定完成後,Cloud Logging 會確保機構或資料夾中的所有新記錄資料夾都會使用客戶管理的金鑰進行加密。如果您在建立記錄值區時未提供金鑰,系統會使用預設金鑰。詳情請參閱「為 Cloud Logging 設定 CMEK」。
總覽
根據預設,Cloud 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:您打算建立記錄值區的 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:由 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
。 - BUCKET_ID:記錄值區的名稱或 ID。
- LOCATION:記錄值區的位置。
- KMS_KEY_NAME:Cloud KMS 金鑰名稱。格式如下:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
。 - BUCKET_PROJECT_ID:要建立記錄值區的 Google Cloud 專案名稱。
- BUCKET_PROJECT_ID:儲存記錄值區的 Google Cloud 專案名稱。
- 找出記錄值區目前的 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:由 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
。 - 金鑰已啟用。
- 記錄服務帳戶具備該金鑰的加密和解密權限。
啟用 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 金鑰
如要建立記錄值區並為記錄值區啟用 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 的日誌資料夾,請執行下列 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 金鑰
以下各節說明如何更新記錄資料夾,以便使用 Cloud KMS 金鑰的最新主要版本。並說明如何變更、撤銷 Cloud KMS 金鑰的存取權,以及如何停用 Cloud KMS 金鑰。
輪替 Cloud KMS 金鑰
建立 Cloud KMS 金鑰時,您可以設定輪替週期。您也可以手動輪替 Cloud KMS 金鑰。每次輪替金鑰時,系統都會建立該金鑰的新版本。
如果您輪替 Cloud KMS 金鑰,則新金鑰版本只會套用至金鑰輪替後建立的記錄資料夾。如果金鑰由現有記錄資料集區使用,輪替金鑰不會變更記錄資料集區保護資料的方式。
舉例來說,假設您建立記錄資料集區並啟用 CMEK,然後輪替 Cloud KMS 金鑰。您建立的記錄資料夾不會使用新金鑰版本,而是繼續使用記錄資料夾建立時標示為主要的金鑰版本來保護資料。
如要更新記錄集區,以便使用 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 資料表。如果您想在未連結至記錄檔的 BigQuery 資料表上使用金鑰,請按照 BigQuery 說明文件操作。如果您撤銷記錄檔對金鑰的存取權,且您有已連結的 BigQuery 資料集,則也會撤銷 BigQuery 對相同金鑰的存取權。
您無法撤銷 BigQuery 對已連結資料集金鑰的存取權,同時保留記錄功能的存取權。
如要進一步瞭解撤銷存取權的影響,請參閱「限制」一節。
如要移除 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
如果您想使用錯誤回報功能,請勿在記錄值區中啟用客戶自行管理的加密金鑰 (CMEK)。詳情請參閱疑難排解。
無法從記錄值區移除 CMEK
您無法重新設定記錄值區來變更或移除 CMEK。
因 Cloud KMS 金鑰無法使用而導致效能降低
在符合下列兩個條件的情況下,Logging 會將 Cloud KMS 金鑰判定為可供使用及存取:
記錄功能強烈建議您確保所有鍵皆已正確設定且隨時可用。
災難復原功能遭到停用
如果 Cloud Logging 主要儲存空間發生重大錯誤,Logging 會將記錄資料鏡像到災難復原檔案。當您為 Google Cloud 機構等資源啟用 CMEK 時,該資源的記錄檔會受到所設定 CMEK 金鑰的保護。如果無法存取 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
區域中建立的記錄檔值區設定 CMEK。
用戶端程式庫可用性
Logging 用戶端程式庫不會提供設定 CMEK 的方法。
配額
在記錄中使用 CMEK 時,專案可以使用 Cloud KMS 密碼編譯要求配額。舉例來說,在記錄資料桶中啟用 CMEK 可能會耗用這些配額。只有在使用硬體 (Cloud HSM) 或外部 (Cloud EKM) 金鑰時,使用 CMK 金鑰進行加密和解密作業才會影響 Cloud KMS 配額。詳情請參閱「Cloud KMS 配額」。
如要進一步瞭解記錄的使用限制,請參閱「配額與限制」一文。
排解設定錯誤
如要瞭解如何排解 CMEK 設定錯誤,請參閱「排解 CMEK 和機構設定錯誤」。