排解 Cloud Logging 的 CMEK 和預設資源設定問題

本文說明如何找出並減輕常見的 CMEK 設定錯誤。本文也說明如何找出設定 Cloud Logging 預設資源設定時發生的錯誤。這些設定適用於機構和資料夾。

排解為系統建立的新記錄檔值區設定位置的問題

您嘗試更新機構或資料夾的 Cloud Logging 預設資源設定。您更新的內容是設定或修改位置資訊設定。不過,指令會失敗並顯示類似下列內容的錯誤:

ERROR: (gcloud.logging.settings.update) INVALID_ARGUMENT: The KMS key location must match the storage location. Received KMS key location: us-central1, storage location: us-west1
- '@type': type.googleapis.com/google.rpc.DebugInfo
  detail: '[ORIGINAL ERROR] generic::invalid_argument: The KMS key location must match
    the storage location. Received KMS key location: us-central1, storage location:
    us-west1 [google.rpc.error_details_ext] { message: "The KMS key location must
    match the storage location. Received KMS key location: us-central1, storage location:
    us-west1" }'

如要解決這項錯誤,請在預設資源設定中,將位置設為 Cloud Key Management Service 金鑰的位置。

排解 CMEK 問題

設定 CMEK 時,系統會將相關問題通知 Cloud de Confiance 包含 Cloud KMS 金鑰的專案。舉例來說,如果 KMS_KEY_NAME 無效、相關聯的服務帳戶沒有必要的 Cloud Key Management Service CryptoKey Encrypter/Decrypter 角色,或是金鑰存取權已停用,更新就會失敗。

設定 CMEK 後,至少會發生下列其中一種情況:

  • 您收到 Cloud Logging 傳送的通知,指出 CMEK 存取權有問題。

  • 在機構或資料夾中建立新專案時,您會發現 _Default_Required 記錄檔 bucket 未啟用 CMEK。 Cloud de Confiance

  • 從啟用 CMEK 的記錄檔值區讀取資料時,或嘗試建立或更新記錄檔值區時,您會收到錯誤訊息。

通知會提供失敗相關資訊,以及可採取哪些措施來緩解問題:

錯誤 建議
加密編譯金鑰權限遭拒

與 Cloud de Confiance 專案相關聯的 Logging 服務帳戶沒有足夠的 IAM 權限,無法對指定的 Cloud KMS 金鑰進行操作。請按照錯誤訊息中的指示操作,或參閱下列文件:

已停用加密編譯金鑰 指定的 Cloud KMS 金鑰已停用。按照錯誤訊息中的操作說明重新啟用金鑰。
已刪除加密編譯金鑰

指定的 Cloud KMS 金鑰已刪除。請按照 操作說明操作,或參閱下列文件:

找出含有 Cloud KMS 金鑰的專案

如要找出包含記錄檔 bucket、資料夾或機構所用加密金鑰的 Cloud de Confiance 專案 ID,請按照下列步驟操作:

專案

gcloud logging settings describe --project=PROJECT_ID

執行指令前,請將 PROJECT_ID 替換為包含記錄檔 bucket 的專案 ID。

資料夾

gcloud logging settings describe --folder=FOLDER_ID

執行指令前,請將 FOLDER_ID 替換為資料夾 ID。

機構

gcloud logging settings describe --organization=ORGANIZATION_ID

執行指令前,請將 ORGANIZATION_ID 替換為組織 ID。

先前的指令會傳回類似下列的資訊:

kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com
loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com

如果是機構和資料夾,系統也會傳回下列欄位:

kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY

kmsKeyName 欄位的值包括儲存金鑰的 Cloud de Confiance 專案。

驗證金鑰可用性

如要驗證金鑰是否可用,請執行下列指令來列出所有金鑰:

gcloud kms keys list \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING

這個指令會以表格格式傳回每個金鑰的相關資訊。輸出內容的第一行是資料欄名稱清單:

NAME PURPOSE ...

確認指令輸出內容中列出 Cloud KMS 金鑰 (如 ENABLED),且金鑰用途為對稱加密:PURPOSE 欄必須包含 ENCRYPT_DECRYPT,且 PRIMARY_STATE 欄必須包含 ENABLED

視需要建立新金鑰

確認權限設定

與機構的 CMEK 設定相關聯的服務帳戶,必須具備所設定金鑰的「Cloud KMS CryptoKey Encrypter/Decrypter」角色。

如要列出金鑰的 IAM 政策,請執行下列指令:

gcloud kms keys get-iam-policy KMS_KEY_NAME

如有需要,請將包含 Cloud KMS CryptoKey Encrypter/Decrypter 角色的服務帳戶新增至金鑰。