監査ログについて

このページでは、監査ログエントリの構造、読み取り方法、解釈方法など、監査ログエントリの詳細について説明します。

Cloud Audit Logging では、GCP のプロジェクト、フォルダ、組織ごとに次の 3 つの監査ログが維持されます。

  • システム イベント監査ログ
  • 管理アクティビティ監査ログ
  • データアクセス監査ログ

Cloud Audit Logging の概要については、Cloud Audit Logging をご覧ください。

監査ログの表示

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

基本ビューア

GCP Console でログビューアの基本的なインターフェースを使用して、監査ログエントリを取得できます。次の操作を行います。

  1. GCP Console の [Stackdriver Logging] > [ログ](ログビューア)ページに移動します。

    ログビューア ページに移動

  2. ページの上部で既存の GCP プロジェクトを選択するか、新しいプロジェクトを作成します。

  3. 最初のプルダウン メニューで、監査ログを表示するリソースタイプを選択します。特定のリソースを選択するか、Global を指定してすべてのリソースを選択できます。

  4. 2 番目のプルダウン メニューで、表示するログタイプを選択します(管理アクティビティの監査ログの場合は activity、データアクセス監査ログの場合は data_access、システム イベント ログの場合は system_events)。

    これらのオプションのいずれかが表示されない場合は、そのタイプの監査ログはプロジェクトで使用できません。

高度なビューア

GCP Console でログビューアの高度なインターフェースを使用して、監査ログエントリを取得できます。次の手順に沿って操作します。

  1. GCP Console の [Stackdriver Logging] > [ログ](ログビューア)ページに移動します。

    ログビューア ページに移動

  2. ページの上部で既存の GCP プロジェクトを選択するか、新しいプロジェクトを作成します。

  3. 最初のプルダウン メニューで、監査ログを表示するリソースタイプを選択します。特定のリソースを選択するか、Global を指定してすべてのリソースを選択できます。

  4. 検索フィルタ ボックスの右端にあるプルダウン矢印(▾)をクリックして、[高度なフィルタに変換] を選択します。

  5. 表示するログエントリをさらに指定するフィルタを作成します。プロジェクト内のすべての監査ログを取得するには、次のフィルタを追加します。それぞれのログ名の中で有効な [PRODUCT_ID] を指定します。

      logName = ("projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    フィルタの詳細については、高度なログフィルタをご覧ください。

API

Stackdriver Logging API を使用して監査ログエントリを表示するには:

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

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

      {
        "resourceNames": [
          "projects/[PROJECT_ID]"
        ],
        "pageSize": 5,
        "filter": "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)"
      }
    
  3. [Execute] をクリックします。

フィルタの詳細については、高度なログフィルタをご覧ください。

SDK

Cloud SDK を使用してログエントリを読み取るには、次のコマンドを実行します。それぞれのログ名の中で有効な [PRODUCT_ID] を指定します。

gcloud logging read "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)

Cloud SDK の使用について詳しくは、ログエントリの読み取りをご覧ください。

監査ログエントリの形式

監査ログエントリは、Stackdriver Logging ログエントリの一種です。すべての Logging ログエントリと同様に、監査ログエントリは LogEntry オブジェクトに格納されます。監査ログエントリを他のログエントリと区別するのが protoPayload フィールドです。監査ログエントリでは、ログエントリの protoPayload フィールドに、監査ログデータを格納する AuditLog オブジェクトが含まれています。

AuditLog タイプは、監査ロギングに固有の一連のフィールド(serviceNameauthenticationInfo など)を定義します。また、一部の Google Cloud Platform サービスで監査ログエントリ内のサービス固有情報をリストするのに使用される、オプション フィールド serviceData も含まれています。このフィールドを使用する GCP サービスの一覧については、サービス固有の監査データをご覧ください。

監査ログエントリの例

ここではサンプルの監査ログエントリを使用して、監査ログエントリに記述されている最も重要な情報を見つける方法について説明します。

以下のサンプルは、Resource Manager によって書き込まれた管理アクティビティの監査ログエントリで、my-gcp-project-id という Google Cloud Platform プロジェクトの Cloud IAM ポリシーの変更内容が記録されています。わかりやすくするため、一部のログエントリは省略し、一部のフィールドはハイライト表示してあります。

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "cloudresourcemanager.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.iam.v1.logging.AuditData",
          policyDelta: { bindingDeltas: [
              action: "ADD",
              role: "roles/logging.privateLogViewer",
              member: "user:user@example.com"
          ], }
        },
        request: {
          resource: "my-gcp-project-id",
          policy: { bindings: [...], }
        },
        response: {
          bindings: [
            {
              role: "roles/logging.privateLogViewer",
              members: [ "user:user@example.com" ]
            }
          ],
        }
      },
      insertId: "53179D9A9B559.AD6ACC7.B40604EF",
      resource: {
        type: "project",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2016-04-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

次に、上記の監査ログエントリのサンプルを選択するために使用されたフィルタを示します。このフィルタは高度なビューア、Stackdriver Logging API、または Cloud SDK 内で使用できます。ログの名前にはプロジェクト ID が含まれています。また、logName フィールドにインデックスが設定されているため、フィルタは高速に処理されます。

resource.type = "project"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

gce_instance などのリソースタイプの単一インスタンスから監査ログを検索する場合は、インスタンス修飾子を追加します。

resource.type = "gce_instance"
resource.instance_id = "12345678901234567890"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

サンプル監査ログエントリの解釈

上記の監査ログエントリのサンプルに示されている protoPayloadinsertIdresourcetimestampseveritylogName の各フィールドは、LogEntry オブジェクトの一部です。protoPayload フィールドの値は AuditLog オブジェクトであり、監査ログデータをカプセル化しています。

上記の監査ログエントリのサンプルについて、次のような疑問が生じるかもしれません。

  • これは監査ログエントリですか? 次の 2 つのことから、監査ログエントリであることがわかります。

    • protoPayload.@type フィールドが type.googleapis.com/google.cloud.audit.AuditLog である。

    • logName フィールドにドメイン cloudaudit.googleapis.com が含まれている。

  • 監査ログを書き込んだサービスは何ですか? Resource Manager です。これは監査ログエントリの protoPayload.serviceName フィールドに記載されています。

  • 監査対象オペレーションは何ですか? 監査対象は protoPayload.methodName フィールドで指定されている SetIamPolicy です。監査対象オペレーションの詳細は、protoPayload.serviceDataAuditData オブジェクトに示されています。

  • 監査対象のリソースは何ですか? 監査対象は Google Cloud Platform プロジェクト my-gcp-project-id です。resource フィールドでリソースタイプ project とプロジェクト ID my-gcp-project-id を指定しています。projectモニタリング対象リソースタイプの一覧で検索すると、これが「Google プロジェクト」であることがわかります。

詳細については、LogEntry タイプAuditLog タイプIAM AuditData タイプをご覧ください。

監査ログエントリのサイズが大きい場合または処理に時間がかかる場合

オペレーションを非同期で実行したり、サイズの大きい AuditLog レコードが生成されたりすると、1 つの監査対象オペレーションが複数のログエントリに分割されます。同じオペレーションに複数のログエントリが存在する場合、LogEntry オブジェクトに operation フィールドが含まれ、同じオペレーションのエントリの LogEntry.operation.idLogEntry.operation.producer に同じ値が設定されます。

前の監査ログエントリのサンプルでは operation フィールドがありません。これは、すべての監査情報が 1 つのログエントリに記録されていることを意味します。

サービス固有の監査データ

一部のサービスでは、補足的なデータ構造を監査ログの serviceData フィールドに配置することで、AuditLog に格納される情報を拡張します。以下の表に、serviceData フィールドを使用するサービスと AuditData タイプへのリンクを示します。

サービス サービスのデータ型
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine(レガシー) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
Cloud Identity and Access Management type.googleapis.com/google.iam.v1.logging.AuditData
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。