排解 CMEK 和預設設定錯誤

本文將說明如何找出及減輕常見的 CMEK 設定錯誤,並說明如何找出設定預設資源位置時發生的錯誤。

設定預設資源位置時的疑難排解

您嘗試更新機構或資料夾的預設儲存空間位置,但指令失敗,並顯示類似以下的錯誤訊息:

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 KMS 金鑰的 Trusted Cloud 專案有關問題。舉例來說,如果 KMS_KEY_NAME 無效、相關聯的服務帳戶沒有必要的 Cloud Key Management Service CryptoKey Encrypter/Decrypter 角色,或是金鑰的存取權遭到停用,更新作業就會失敗。

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

  • 您收到 Cloud Logging 發出的 CMEK 存取權問題通知。

  • 您會發現,在機構或資料夾中建立新 Trusted Cloud 專案時,系統並未為 _Default_Required 記錄檔值區啟用 CMEK。

  • 在啟用 CMEK 的情況下讀取記錄檔值區,或嘗試建立或更新記錄檔值區時,會收到錯誤訊息。

通知會提供失敗資訊,並包含可用來緩解問題的措施:

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

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

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

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

找出含有 Cloud KMS 金鑰的專案

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

專案

gcloud logging settings describe --project=PROJECT_ID

執行指令前,請將 PROJECT_ID 替換為包含記錄資料集的專案 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 欄位的值包含儲存鍵的 Trusted Cloud 專案。

驗證金鑰可用性

如要確認金鑰的可用性,請執行下列指令,列出所有金鑰:

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

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

NAME PURPOSE ...

請確認 Cloud KMS 金鑰在指令的輸出內容中列為 ENABLED,且金鑰的用途為對稱加密:PURPOSE 欄必須包含 ENCRYPT_DECRYPTPRIMARY_STATE 欄則必須包含 ENABLED

如有需要,請建立新的金鑰

驗證權限設定

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

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

gcloud kms keys get-iam-policy KMS_KEY_NAME

如有需要,請將含有 Cloud KMS CryptoKey 加密者/解密者角色的服務帳戶新增至金鑰。