本文說明如何找出並減輕常見的 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 角色的服務帳戶新增至金鑰。