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 暗号鍵の暗号化/復号ロールが付与されていない場合、または鍵へのアクセスが無効になっている場合、更新が失敗します。

CMEK を構成すると、少なくとも次のいずれかが発生します。

  • CMEK アクセスの問題について Cloud Logging から通知を受け取る。

  • 組織またはフォルダに新しい Trusted Cloud プロジェクトを作成するときに、_Default ログバケットと _Required ログバケットで CMEK が有効になっていない。

  • CMEK が有効になっているログバケットから読み取るか、ログバケットを作成または更新しようとすると、エラーが発生する。

通知には失敗に関する情報と、問題を軽減するための手順が記載されています。

エラー 推奨
暗号鍵に対するアクセスが拒否された

Trusted Cloud プロジェクトに関連付けられる Logging サービス アカウントに、指定した Cloud KMS 鍵の操作に十分な IAM 権限がありません。エラーの手順に沿って対応するか、次のドキュメントをご覧ください。

暗号鍵が無効になっている 指定された 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 の暗号化 / 復号ロールが必要です。

鍵の Cloud IAM ポリシーを一覧表示するには、次のコマンドを実行します。

gcloud kms keys get-iam-policy KMS_KEY_NAME

必要に応じて、Cloud KMS CryptoKey の暗号化 / 復号ロールを含むサービス アカウントを鍵に追加します。