鍵の使用状況を表示する

このページでは、Cloud KMS 鍵で保護されている組織内の Google Cloud リソースを表示する方法について説明します。鍵の使用状況の追跡は、組織リソース内でのみ使用できます。

鍵で保護されているリソースに関する情報は、次の 2 つのレベルで確認できます。

  • 各鍵の鍵の使用状況の概要には、鍵を使用する保護されたリソース、プロジェクト、固有の Google Cloud プロダクトの数が含まれます。この詳細レベルは、鍵に対する Cloud KMS 閲覧者のロールを持つユーザーが利用できます。
  • 鍵の使用状況の詳細情報には、この鍵で保護されているリソースと、この鍵に依存するリソースが示されます。この詳細レベルは特権であり、組織に対する Cloud KMS 保護リソース閲覧者のロールを持つアカウントでのみ使用できます。

始める前に

このページでは、Google Cloud 組織リソース内で Cloud KMS を使用していることを前提としています。

  1. 組織管理者に、組織リソースに対する Cloud KMS 組織のサービス エージェント(roles/cloudkms.orgServiceAgent)ロールを Cloud KMS サービス アカウントに付与してもらいます。このロールは Google Cloud コンソールでは使用できないため、gcloud CLI を使用してロールを付与する必要があります。

    gcloud CLI

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
        --member=serviceAccount:service-org-ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com \
        --role=roles/cloudkms.orgServiceAgent
    

    ORGANIZATION_ID は、組織の数値 ID に置き換えます。

  2. 鍵の使用状況の概要を表示する必要があるユーザーに、Cloud KMS 閲覧者(roles/cloudkms.viewer)ロールを付与します。ロールの付与については、アクセスの管理をご覧ください。

  3. 鍵の使用状況の詳細を表示する必要があるユーザーに、組織リソースに対する Cloud KMS 保護されたリソースの閲覧者(roles/cloudkms.protectedResourcesViewer)ロールを付与します。このロールは Google Cloud コンソールでは使用できないため、gcloud CLI を使用してロールを付与する必要があります。

    gcloud CLI

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
        --member=user:USER_EMAIL \
        --role=roles/cloudkms.protectedResourcesViewer
    

    次のように置き換えます。

    • ORGANIZATION_ID: 組織の数値 ID。
    • USER_EMAIL: ユーザーのメールアドレス。
  4. Cloud KMS Inventory API を有効にします。

    API の有効化

鍵の使用状況の情報を表示する

コンソール

  1. Google Cloud コンソールで、[主なインベントリ] ページに移動します。

    [鍵のインベントリ] に移動

  2. 省略可: キーのリストをフィルタリングするには、[filter_list] の [フィルタ] ボックスに検索キーワードを入力し、Enter キーを押します。たとえば、鍵のロケーション、キーリング、ステータス、その他のプロパティでフィルタできます。

  3. 使用状況情報を表示する鍵の名前をクリックします。

  4. [使用状況のトラッキング] タブをクリックします。

  5. 省略可: 保護されたリソースのリストをフィルタリングするには、[filter_list] の [フィルタ] ボックスに検索キーワードを入力し、Enter キーを押します。

選択した鍵の鍵使用状況の概要と詳細が表示されます。

gcloud CLI

コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします

鍵の使用状況の概要を表示するには、get-protected-resources-summary メソッドを使用します。

gcloud kms inventory get-protected-resources-summary \
    --keyname  projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME \

次のように置き換えます。

  • PROJECT_ID: キーリングを含むプロジェクトの ID。
  • LOCATION: キーリングの Cloud KMS のロケーション
  • KEY_RING: 鍵を含むキーリングの名前
  • KEY_NAME: 使用状況の概要を表示するキーの名前。

鍵の使用状況の詳細を表示するには、search-protected-resources メソッドを使用します。

gcloud kms inventory search-protected-resources \
    --keyname  projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME \
    --scope=organizations/ORGANIZATION_ID

次のように置き換えます。

  • PROJECT_ID: キーリングを含むプロジェクトの ID。
  • LOCATION: キーリングの Cloud KMS のロケーション
  • KEY_RING: 鍵を含むキーリングの名前
  • KEY_NAME: 使用状況の詳細を表示する鍵の名前。
  • ORGANIZATION_ID: 組織の数値 ID。

API

これらの例では、HTTP クライアントとして curl を使用して API の使用例を示しています。アクセス制御の詳細については、Cloud KMS API へのアクセスをご覧ください。

鍵の使用状況の概要を表示するには、cryptoKeys.getProtectedResourcesSummary メソッドを使用します。

curl  "https://kmsinventory.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/protectedResourcesSummary"
    --request "GET" \
    --header "x-goog-user-project: CALLING_PROJECT_ID"
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer TOKEN"

次のように置き換えます。

  • PROJECT_ID: キーリングを含むプロジェクトの ID。
  • LOCATION: キーリングの Cloud KMS のロケーション
  • KEY_RING: 鍵を含むキーリングの名前
  • KEY_NAME: 使用状況の概要を表示するキーの名前。
  • CALLING_PROJECT_ID: KMS Inventory API を呼び出すプロジェクトの ID。

鍵の使用状況の詳細を表示するには、protectedResources.search メソッドを使用します。

curl "https://kmsinventory.googleapis.com/v1/organizations/ORGANIZATION_ID/protectedResources:search?crypto_key=projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
    --request "GET" \
    --header "x-goog-user-project: CALLING_PROJECT_ID"
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer TOKEN"

次のように置き換えます。

  • ORGANIZATION_ID: 組織の数値 ID。
  • PROJECT_ID: キーリングを含むプロジェクトの ID。
  • LOCATION: キーリングの Cloud KMS のロケーション
  • KEY_RING: 鍵を含むキーリングの名前
  • KEY_NAME: 使用状況の詳細を表示する鍵の名前。
  • CALLING_PROJECT_ID: KMS Inventory API を呼び出すプロジェクトの ID。

鍵の用途の詳細

選択した鍵で暗号化された保護対象リソースの使用状況の詳細には、次の情報が含まれます。

  • 名前: 選択した鍵で保護されている Google Cloud リソースの名前。
  • プロジェクト: 保護されたリソースを含むプロジェクトの名前。
  • 暗号鍵バージョン: このリソースの暗号化に使用される鍵バージョン。一部の保護されたリソースは、暗号鍵バージョンを報告しません。
  • Cloud プロダクト: このリソースに関連付けられた Google Cloud プロダクト。
  • リソースタイプ: 保護されているリソースのタイプ(バケット(Cloud Storage)、ディスク(Compute Engine)など)。
  • Location: リソースに関連付けられた Google Cloud リージョン。
  • 作成日: リソースが作成された時刻。
  • ラベル: リソースに関連付けられた Key-Value ペアのセット。

リソースを保護する鍵バージョンを一覧表示する

リソースが複数の鍵バージョンで保護されている場合、[使用状況のトラッキング] タブに鍵バージョンの完全なリストが表示されないことがあります。

リソースを保護する鍵バージョンを一覧表示するには、gcloud CLI を使用して次のコマンドを実行します。

gcloud beta kms inventory search-protected-resources \
  --keyname=KEY_NAME \
  --scope=organizations/ORGANIZATION_ID \
  --filter="name:RESOURCE_NAME" \
  --flatten="cryptoKeyVersions" \
  --format="value(cryptoKeyVersions)"

次のように置き換えます。

  • KEY_NAME: 鍵バージョンを一覧表示する鍵の名前。
  • ORGANIZATION_ID: 組織の数値 ID。
  • RESOURCE_NAME: 鍵バージョンを一覧表示するリソースの名前。

制限事項

鍵の使用状況のトラッキングを使用する場合は、次の点に注意してください。

  • 鍵の使用状況の追跡は、CMEK 鍵の使用状況でのみ使用できます。 Google Cloudの内外のアプリケーションでキー バージョンを使用している場合、その使用状況は [使用状況のトラッキング] タブに表示されません。
  • 一部の CMEK リソースは追跡されません。トラッキング対象リソースタイプに記載されていないリソースタイプの場合、鍵の使用状況の詳細に鍵の使用状況情報が含まれないことがあります。たとえば、Datastream が ConnectionProfiledatastream.googleapis.com/ConnectionProfile)リソースの暗号化に使用する鍵の使用状況は、[使用状況のトラッキング] タブに表示されません。
  • データが遅延する可能性があります。たとえば、新しい保護リソースを作成しても、保護リソースと関連付けられた鍵バージョンは [使用状況の追跡] タブにすぐには追加されません。
  • Cloud Storage の鍵の使用状況データには、次の追加の制限が適用されます。
    • キーの使用状況データは、オブジェクトからバケットに集計されます。オブジェクト名は表示されません。バケットにその鍵を使用するオブジェクトが 1 つ以上ある場合、バケットは鍵を使用していると表示されます。
    • 4,000 を超える一意の鍵バージョンで保護されたオブジェクトを含むバケットでは、鍵の使用状況のトラッキングが完了しないことがあります。
  • 鍵の使用状況の追跡の詳細は、情報提供のみを目的としています。停止やデータ損失につながる可能性のある変更を行う前に、他のソースを使用して独自のデュー デリジェンスを実施してください。鍵の使用状況のトラッキング情報のみに基づいて、鍵バージョンを無効にしたり破棄したりしないでください。

追跡されるリソースタイプ

サポートされるリソースタイプは次のとおりです。

    サービス リソース
    AI Applications discoveryengine.googleapis.com/DataStore
    AlloyDB for PostgreSQL alloydb.googleapis.com/Backup
    AlloyDB for PostgreSQL alloydb.googleapis.com/Cluster
    Apigee API Hub apihub.googleapis.com/ApiHubInstance
    Artifact Registry artifactregistry.googleapis.com/Repository
    BigQuery bigquery.googleapis.com/Dataset
    BigQuery bigquery.googleapis.com/Model
    BigQuery bigquery.googleapis.com/Table
    BigQuery bigquerydatatransfer.googleapis.com/TransferConfig
    Bigtable bigtableadmin.googleapis.com/Backup
    Bigtable bigtableadmin.googleapis.com/Cluster
    Bigtable bigtableadmin.googleapis.com/Table
    Cloud Composer composer.googleapis.com/Environment
    Cloud Data Fusion datafusion.googleapis.com/Instance
    Cloud Healthcare API healthcare.googleapis.com/Dataset
    Cloud Logging logging.googleapis.com/LogBucket
    Cloud Run run.googleapis.com/Revision
    Cloud Run functions cloudfunctions.googleapis.com/CloudFunction
    Cloud Run functions cloudfunctions.googleapis.com/Function
    Cloud SQL sqladmin.googleapis.com/BackupRun
    Cloud SQL sqladmin.googleapis.com/Instance
    Cloud Storage storage.googleapis.com/Bucket
    Cloud Workstations workstations.googleapis.com/Workstation
    Cloud Workstations workstations.googleapis.com/WorkstationConfig
    Compute Engine compute.googleapis.com/Disk
    Compute Engine compute.googleapis.com/Image
    Compute Engine compute.googleapis.com/MachineImage
    Compute Engine compute.googleapis.com/Snapshot
    Database Migration Service datamigration.googleapis.com/MigrationJob
    Database Migration Service datamigration.googleapis.com/ConnectionProfile
    Dataflow dataflow.googleapis.com/Job
    Dataproc dataproc.googleapis.com/Cluster
    Dataproc dataproc.googleapis.com/Batch
    Dataproc Metastore metastore.googleapis.com/Service
    Datastream datastream.googleapis.com/Stream
    Document AI documentai.googleapis.com/HumanReviewConfig
    Document AI documentai.googleapis.com/Processor
    Document AI documentai.googleapis.com/ProcessorVersion
    Filestore file.googleapis.com/Instance
    Filestore file.googleapis.com/Backup
    Firestore firestore.googleapis.com/Database
    Firestore datastore.googleapis.com/Database
    Google Agentspace Enterprise discoveryengine.googleapis.com/DataStore
    Google Kubernetes Engine container.googleapis.com/Cluster
    Looker(Google Cloud コア) looker.googleapis.com/Instance
    Memorystore for Redis redis.googleapis.com/Instance
    Migrate to Virtual Machines vmmigration.googleapis.com/Source
    Pub/Sub pubsub.googleapis.com/Topic
    Secret Manager secretmanager.googleapis.com/Secret
    Secret Manager secretmanager.googleapis.com/SecretVersion
    Secure Source Manager securesourcemanager.googleapis.com/Instance
    Spanner spanner.googleapis.com/Database
    Vertex AI aiplatform.googleapis.com/Dataset
    Vertex AI aiplatform.googleapis.com/Featurestore
    Vertex AI aiplatform.googleapis.com/Tensorboard
    Vertex AI aiplatform.googleapis.com/BatchPredictionJob
    Vertex AI aiplatform.googleapis.com/CustomJob
    Vertex AI aiplatform.googleapis.com/Endpoint
    Vertex AI aiplatform.googleapis.com/Model
    Vertex AI aiplatform.googleapis.com/TrainingPipeline
    Vertex AI aiplatform.googleapis.com/PipelineJob
    Vertex AI aiplatform.googleapis.com/MetadataStore
    Vertex AI Workbench インスタンス notebooks.googleapis.com/Instance
    Workflows workflows.googleapis.com/Workflow