Compute Engine の監査ロギング情報

このページでは、Cloud Audit Logs の一部として Compute Engine によって作成される監査ログについて説明します。

概要

Google Cloud サービスは、「誰がいつどこで何をしたか」の確認に役立つ監査ログを記録します。Cloud プロジェクトで記録されるのは、そのプロジェクト内に直接存在するリソースの監査ログのみです。フォルダ、組織、Cloud 請求先アカウントなどの他のエンティティでは、そのエンティティ自体の監査ログが記録されます。

Cloud Audit Logs の概要については、Cloud Audit Logs をご覧ください。Cloud Audit Logs の詳細については、監査ログについてをご覧ください。

Compute Engine では、次の種類の監査ログを使用できます。

  • 管理アクティビティ監査ログ

    メタデータまたは構成情報を書き込む「管理書き込み」オペレーションが含まれます。

    管理アクティビティ監査ログは無効にできません。

  • データアクセス監査ログ

    メタデータまたは構成情報を読み取る「管理者読み取り」オペレーションが含まれます。ユーザー提供データの読み取りまたは書き込みを行う「データ読み取り」オペレーションと「データ書き込み」オペレーションも含まれます。

    データアクセス監査ログを受信するには、監査ログを明示的に有効にする必要があります。

  • システム イベント監査ログ

    リソースの構成を変更する自動化された Google Cloud アクションを特定します。

    システム イベント監査ログは無効にできません。

監査対象のオペレーション

次の表は、Compute Engine の各監査ログタイプに対応する API オペレーションをまとめたものです。

監査ログのカテゴリ サブタイプ Compute Engine オペレーション
管理アクティビティ監査ログ 該当なし
  • リソースの作成
  • リソースの更新 / パッチ適用
  • メタデータの設定 / 変更
  • タグの設定 / 変更
  • ラベルの設定 / 変更
  • 権限の設定 / 変更
  • リソースのプロパティの設定 / 変更(カスタム動詞を含む)
  • compute.instances.insert
  • compute.instanceGroups.removeInstances
  • compute.instances.setMetadata
  • compute.instances.setLabels
  • compute.instances.setTags
  • compute.instances.setIamPolicy
データアクセス監査ログ ADMIN_READ
  • リソースに関する情報の取得
  • リソースの一覧表示
  • スコープ全体でのリソースの一覧表示(集約リスト リクエスト)
  • compute.instances.list
  • compute.images.get
  • compute.interconnectAttachments.aggregatedList
DATA_READ シリアルポート コンソールの内容の取得 compute.instance.getSerialPortOutput
システム イベント監査ログ 該当なし
  • ホスト メンテナンス時
  • インスタンスのプリエンプション
  • 自動再起動
  • インスタンスのリセット
  • シリアルポートの接続 / 切断
  • compute.instances.migrateOnHostMaintenance
  • compute.instances.automaticRestart
  • compute.instanceGroupManagers.resizeAdvanced
  • google.ssh-serialport.v1.connect

データアクセス監査ログ: 他のサービスの監査ログとは異なり、Compute Engine は ADMIN_READ データアクセス ログのみを提供し、通常は DATA_READ ログと DATA_WRITE ログを提供しません。これは、DATA_READ ログと DATA_WRITE ログが Cloud Storage、Cloud Spanner、Cloud SQL などのユーザーデータを保存して管理するサービスにのみ使用され、Compute Engine には適用されないためです。ただし、instance.getSerialPortOutput メソッドは VM インスタンスから直接データを読み取り、DATA_READ ログを生成するため、上記のルールの例外となります。

監査ログでのデータ削除

監査ログには、実行された API アクションのリクエスト データとレスポンス データが記録されます。ただし、次のような場合には、リクエスト情報やレスポンス情報が利用できなくなるか、削除されます。

  • instance.setMetadataproject.setCommonInstanceMetadata API リクエストの場合、リクエスト本文のメタデータで送信された機密情報がログに記録されないように、そのメタデータ部分が削除されます。
  • SSL 証明書の秘密鍵やディスクに対する顧客指定の暗号鍵など、機密性の高い項目はリクエストから削除されます。
  • 取得と一覧表示のレスポンスの場合、個人情報がログに記録されないように、レスポンス本文が削除されます。

監査ログ形式

Cloud Logging でログビューア、Cloud Logging API、gcloud コマンドライン ツールを使用して表示できる監査ログエントリには、次のオブジェクトがあります。

  • ログエントリ自体。LogEntry 型のオブジェクトです。よく使用されるフィールドは次のとおりです。

    • logName: プロジェクト ID と監査ログタイプが格納されます。
    • resource: 監査対象オペレーションのターゲットが格納されます。
    • timeStamp: 監査対象オペレーションの時間が格納されます。
    • protoPayload: 監査対象の情報が格納されます。
  • 監査ロギングデータ。ログエントリの protoPayload フィールドに保持される AuditLog オブジェクトです。

  • サービス固有の監査情報(省略可)。サービス固有のオブジェクトです。古い統合では、このオブジェクトは AuditLog オブジェクトの serviceData フィールドに保持されます。新しい統合では、metadata フィールドを使用します。

これらのオブジェクトのその他のフィールドと、それらを解釈する方法については、監査ログについてをご覧ください。

ログ名

Cloud 監査ログのリソース名は、監査ログを所有する Cloud プロジェクトまたは他の Google Cloud エンティティを表します。この名前を見ると、ログに管理アクティビティ、データアクセス、システム イベントの監査ロギングデータが含まれているかどうかがわかります。たとえば次のログ名は、プロジェクトの管理アクティビティ監査ログと組織のデータアクセス監査ログを表しています。変数は、プロジェクトと組織の識別子を表します。

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

サービス名

Compute Engine 監査ログでは、サービス名に compute.googleapis.comssh-serialport.googleapis.com が使用されます。

すべてのロギング サービスについては、サービスとリソースのマッピングをご覧ください。

リソースタイプ

Compute Engine 監査ログには次のリソースタイプが使用されます。

リソースタイプ 説明
API リソース このリソースは API オペレーションをログに記録します。 api
監査対象リソース このリソースは Google Cloud オペレーションをログに記録します。監査対象リソースタイプは、ほとんどの場合、他のカテゴリに該当しない新しいオペレーションに使用されます。 audited_resource
Deployment リソース このリソースはデプロイ オペレーションをログに記録します。 deployment
Cloud Deployment Manager リソース(deployment_manager_*

このリソースは Cloud Deployment Manager オペレーションをログに記録します。

deployment_manager_* リソースタイプは、Cloud Deployment Manager リソースにマッピングされます。Cloud Deployment Manager リソースの完全な一覧については、Cloud Deployment Manager API の概要をご覧ください。

  • deployment_manager_manifest
  • deployment_manager_operation
  • deployment_manager_resource
  • deployment_manager_type
Compute Engine リソース(gce_*

このリソースは Compute Engine オペレーションをログに記録します。

gce_* リソースタイプは、Compute Engine リソースにマッピングされます。Compute Engine リソースの完全な一覧については、Compute Engine API の概要をご覧ください。

  • gce_instance
  • gce_backend_service
  • gce_operation
  • gce_instance_group
  • gce_firewall_rule
  • gce_snapshot
  • gce_route
  • gce_disk
  • gce_health_check
ネットワーク セキュリティ リソース このリソースはネットワーク セキュリティ ポリシー オペレーションをログに記録します。 network_security_policy
Cloud VPN リソース(vpn_* このリソースは Cloud VPN オペレーションをログに記録します。
  • vpn_gateway
  • vpn_tunnel

他のリソースタイプの一覧については、モニタリング対象リソースタイプをご覧ください。

監査ロギングの有効化

システム イベント監査ログは常に有効になっています。無効にすることはできません。

管理アクティビティ監査ログは常に有効になっています。無効にすることはできません。

データアクセス監査ログはデフォルトで無効になっており、明示的に有効にしない限り書き込まれません(例外は BigQuery のデータアクセス監査ログで、これは無効にすることができません)。

データアクセス監査ログの一部またはすべてを有効にする手順については、データアクセス ログの構成をご覧ください。

監査ログに関する権限

どの監査ログを表示またはエクスポートできるかは、Identity and Access Management の権限とロールによって決まります。ログは、Cloud プロジェクトの中、および組織、フォルダ、Cloud 請求先アカウントなど他のいくつかのエンティティの中に存在します。詳しくは、ロールについてをご覧ください。

管理アクティビティ監査ログまたはシステム イベント監査ログを表示するには、その監査ログが存在するプロジェクト内で次のいずれかの IAM ロールが付与されている必要があります。

データアクセス監査ログを表示するには、監査ログを含むプロジェクト内でユーザーが次のいずれかのロールを持っている必要があります。

組織などのプロジェクト以外のエンティティからの監査ログを使用する場合は、Cloud プロジェクト ロールを適切な組織ロールに変更します。

ログの表示

監査ログを検索して表示するには、監査ロギング情報を表示する対象の Cloud プロジェクト、フォルダ、または組織の識別子を把握している必要があります。resource.type などの他のインデックス付き LogEntry フィールドをさらに指定できます。詳しくは、ログエントリの迅速な検索をご覧ください。

監査ログ名は次のようになります。名前には、Cloud プロジェクト、フォルダ、または組織の識別子の変数が含まれています。

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

監査ログエントリを表示する方法はいくつかあります。

Console

Cloud Console のログ エクスプローラを使用して、Cloud プロジェクトの監査ログエントリを取得できます。

  1. Cloud Console で、[ロギング] > [ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] ページに移動

  2. [ログ エクスプローラ] ページで、既存の Cloud プロジェクトを選択します。

  3. [クエリビルダー] ペインで、次の操作を行います。

    • [リソース] で、監査ログを表示する対象の Google Cloud リソースタイプを選択します。

    • [ログ名] で、表示する監査ログタイプを選択します。

      • 管理アクティビティ監査ログの場合は、[activity] を選択します。
      • データアクセス監査ログの場合は、[data_access] を選択します。
      • システム イベント監査ログの場合は、[system_event] を選択します。
      • ポリシー拒否監査ログの場合は、[policy] を選択します。

    これらのオプションが表示されない場合、Cloud プロジェクトにそのタイプの監査ログが存在しないことを意味します。

    新しいログ エクスプローラを使用したクエリの詳細については、ログクエリの作成をご覧ください。

gcloud

gcloud コマンドライン ツールは、Cloud Logging API へのコマンドライン インターフェースを提供します。それぞれのログ名の中で有効な PROJECT_IDFOLDER_ID または ORGANIZATION_ID を指定します。

Google Cloud プロジェクト レベルの監査ログエントリを読み取るには、次のコマンドを実行します。

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

フォルダレベルの監査ログエントリを読み取るには、次のコマンドを実行します。

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

組織レベルの監査ログエントリを読み取るには、次のコマンドを実行します。

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

gcloud ツールの使用の詳細については、ログエントリの読み取りをご覧ください。

API

クエリを作成する場合は、変数を有効な値に置き換え、適切なプロジェクトレベル、フォルダレベル、または監査ログ名に表示されている組織レベルの監査ログ名もしくは ID を代わりに使用します。たとえば、クエリに PROJECT_ID が含まれている場合、指定するプロジェクト識別子は、現在選択された Cloud プロジェクトを参照している必要があります。

Logging API を使用して監査ログエントリを確認する手順は次のとおりです。

  1. entries.list メソッドのドキュメント内の [Try this API] セクションに移動します。

  2. [Try this API] フォームのリクエストの本文に、次のコードを入力します。この事前入力されたフォームをクリックすると、リクエストの本文が自動的に入力されますが、それぞれのログ名に有効な PROJECT_ID を指定する必要があります。

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. [実行] をクリックします。

クエリの詳細については、Logging のクエリ言語をご覧ください。

監査ログエントリの例と、その中に記録されている最も重要な情報を見つける方法については、監査ログエントリの例をご覧ください。

監査ログのエクスポート

監査ログは、他の種類のログをエクスポートする場合と同じ方法でエクスポートできます。ログのエクスポート方法の詳細については、ログのエクスポートをご覧ください。監査ログのエクスポートに関する応用例の一部を以下に示します。

  • 監査ログを長期間保持する、またはより強力な検索機能を使用するには、監査ログのコピーを Cloud Storage、BigQuery、または Pub/Sub にエクスポートします。Pub/Sub を使用すると、他のアプリケーション、他のリポジトリ、サードパーティ製品にエクスポートできます。

  • 組織全体の監査ログを管理するには、組織内の一部または全部のプロジェクトからログをエクスポートできる集約シンクを作成します。

  • 有効にしたデータアクセス監査ログが原因で Cloud プロジェクトのログ割り当て量を超過した場合は、データアクセス監査ログをエクスポートして Logging から除外できます。詳細については、ログの除外をご覧ください。

料金

管理アクティビティ監査ログシステム イベント監査ログは無料です。

データアクセス監査ログポリシー拒否監査ログは課金対象です。

Cloud Logging の料金については、Google Cloud のオペレーション スイートの料金: Cloud Logging をご覧ください。