本文將說明如何找出及減輕常見的 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_DECRYPT
,PRIMARY_STATE
欄則必須包含 ENABLED
。
如有需要,請建立新的金鑰。
驗證權限設定
與機構的 CMEK 設定相關聯的服務帳戶,必須具備已設定金鑰的 Cloud KMS CryptoKey Encrypter/Decrypter 角色。
如要列出金鑰的 IAM 政策,請執行下列指令:
gcloud kms keys get-iam-policy KMS_KEY_NAME
如有需要,請將含有 Cloud KMS CryptoKey 加密者/解密者角色的服務帳戶新增至金鑰。