Netwrix Auditor ログを収集する

以下でサポートされています。

このドキュメントでは、Google Cloud Storage V2 を使用して Netwrix Auditor ログを Google Security Operations に取り込む方法について説明します。

Netwrix Auditor は、ユーザーの行動分析とリスク軽減のための可視性プラットフォームです。ハイブリッド IT 環境での変更、構成、アクセスを制御できます。このプラットフォームは、データ侵害が発生する前にユーザーの行動の異常を検出し、脅威パターンを調査するためのセキュリティ分析を提供します。RESTful 統合 API を搭載したこのプラットフォームは、オンプレミスまたはクラウドベースのすべての IT システムを統合的に可視化し、制御します。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス
  • Cloud Storage、Cloud Run、Pub/Sub、Cloud Scheduler API が有効になっている GCP プロジェクト
  • GCS バケットを作成および管理する権限
  • GCS バケットの IAM ポリシーを管理する権限
  • Cloud Run サービス、Pub/Sub トピック、Cloud Scheduler ジョブを作成する権限
  • Netwrix Auditor Server への管理者アクセス
  • API アクセスに必要な権限を持つ Windows ドメイン アカウント
  • 統合 API が有効になっている Netwrix Auditor Server(デフォルトで有効)
  • Netwrix Auditor で構成された監査データベース
  • Cloud Run functions からポート 9699(デフォルト)の Netwrix Auditor Server へのネットワーク接続

Netwrix Auditor API アクセスを構成する

Cloud Run 関数がアクティビティ レコードを取得できるようにするには、Integration API が有効になっていることを確認し、Netwrix Auditor で適切なロールを持つ Windows ドメイン アカウントを作成する必要があります。

Integration API が有効になっていることを確認する

  1. Netwrix Auditor Server がインストールされているコンピュータで、Netwrix Auditor を起動します。
  2. [設定> 統合] に移動します。
  3. [Leverage Integration API] オプションが有効になっていることを確認します。
  4. ポート番号(デフォルトは 9699)をメモします。
  5. ポートを変更する必要がある場合:

    1. [API 設定] セクションで [変更] をクリックします。
    2. 新しいポート番号を指定します。
    3. [OK] をクリックします。

API アクセス用のサービス アカウントを作成する

  1. Windows ドメイン コントローラで、[Active Directory ユーザーとコンピュータ] を開きます。
  2. サービス アカウントを作成する組織部門に移動します。
  3. 組織単位を右クリック > [新規作成> ユーザー] を選択します。
  4. [] フィールドに「Chronicle Integration」と入力します。
  5. [ユーザー ログオン名] フィールドに「chronicle-api」(または任意のユーザー名)を入力します。
  6. [次へ] をクリックします。
  7. 安全なパスワードを入力し、組織のポリシーに沿ってパスワード設定を行います。
  8. [ユーザーは次回のログオン時にパスワード変更が必要] チェックボックスをオフにします。
  9. [パスワードを無期限にする] を選択します(サービス アカウントにおすすめ)。
  10. [次へ] > [完了] をクリックします。

グローバル レビュー担当者のロールを割り当てる

  1. Netwrix Auditor のメイン ウィンドウで、[Monitoring Plans] に移動します。
  2. モニタリング プランのツリーで、[すべてのモニタリング プラン](ルートフォルダ)を選択します。
  3. [委任] をクリックします。
  4. [Delegation] ダイアログで、[Add User] をクリックします。
  5. [ユーザーまたはグループの選択] ダイアログで、次の操作を行います。
    1. [参照] をクリックします。
    2. [割り当てるオブジェクト名を入力] フィールドに、ユーザー名「chronicle-api」を入力します。
    3. [名前を確認] をクリックしてアカウントを確認します。
    4. [OK] をクリックします。
  6. [ロール] プルダウンで、[グローバル レビュー担当者] を選択します。
  7. [OK] をクリックします。
  8. [保存] をクリックします。

API 認証情報を記録する

Cloud Run functions の環境変数を構成するために、次の情報を記録します。

  • ユーザー名: DOMAIN\username 形式のドメイン アカウント(例: ENTERPRISE\chronicle-api
  • パスワード: サービス アカウントのパスワード
  • ホスト名: Netwrix Auditor Server の完全修飾ドメイン名(FQDN)または IP アドレス(例: auditor.enterprise.local または 172.28.6.15
  • ポート: Integration API ポート(デフォルトは 9699

権限を確認する

アカウントに必要な権限があることを確認するには:

  1. Netwrix Auditor で、[モニタリング プラン] に移動します。
  2. [すべてのモニタリング プラン] を選択します。
  3. [委任] をクリックします。
  4. chronicle-api アカウントに グローバル レビュー担当者のロールが割り当てられていることを確認します。
  5. アカウントが表示されない場合は、上記のグローバル レビュアーのロールを割り当てるの手順に沿って操作します。

テスト API へのアクセス

  • 統合に進む前に、認証情報をテストします。

    # Replace with your actual values
    NETWRIX_HOST="auditor.enterprise.local"
    NETWRIX_PORT="9699"
    NETWRIX_USER="ENTERPRISE\\chronicle-api"
    NETWRIX_PASS="your-password"
    
    # Test API access (retrieve first batch of activity records)
    curl -k --ntlm -u "${NETWRIX_USER}:${NETWRIX_PASS}" \
        "https://${NETWRIX_HOST}:${NETWRIX_PORT}/netwrix/api/v1/activity_records/enum" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json"
    

成功したレスポンスは、アクティビティ レコードの配列とページネーション用の ContinuationMark を含む JSON オブジェクトを返します。

Google Cloud Storage バケットを作成する

  1. Google Cloud Console に移動します。
  2. プロジェクトを選択するか、新しいプロジェクトを作成します。
  3. ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
  4. [バケットを作成] をクリックします。
  5. 次の構成情報を提供してください。

    設定
    バケットに名前を付ける グローバルに一意の名前を入力します(例: netwrix-auditor-logs)。
    ロケーション タイプ ニーズに基づいて選択します(リージョン、デュアルリージョン、マルチリージョン)。
    ロケーション ロケーションを選択します(例: us-central1)。
    ストレージ クラス Standard(アクセス頻度の高いログにおすすめ)
    アクセス制御 均一(推奨)
    保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする
  6. [作成] をクリックします。

Cloud Run functions のサービス アカウントを作成する

  1. GCP Console で、[IAM と管理>サービス アカウント] に移動します。
  2. [サービス アカウントを作成] をクリックします。
  3. 次の構成の詳細を入力します。
    • サービス アカウント名: 「netwrix-audit-collector-sa」と入力します。
    • サービス アカウントの説明: Service account for Cloud Run function to collect Netwrix Auditor logs と入力します。
  4. [作成して続行] をクリックします。
  5. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、次のロールを追加します。
    1. [ロールを選択] をクリックします。
    2. [ストレージ オブジェクト管理者] を検索して選択します。
    3. [+ 別のロールを追加] をクリックします。
    4. [Cloud Run 起動元] を検索して選択します。
    5. [+ 別のロールを追加] をクリックします。
    6. [Cloud Functions 起動元] を検索して選択します。
  6. [続行] をクリックします。
  7. [完了] をクリックします。

GCS バケットに対する IAM 権限を付与する

  1. [Cloud Storage] > [バケット] に移動します。
  2. バケット名(netwrix-auditor-logs)をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成の詳細を入力します。
    • プリンシパルの追加: サービス アカウントのメールアドレス(netwrix-audit-collector-sa@PROJECT_ID.iam.gserviceaccount.com)を入力します。
    • ロールを割り当てる: [ストレージ オブジェクト管理者] を選択します。
  6. [保存] をクリックします。

Pub/Sub トピックの作成

  1. GCP Console で、[Pub/Sub> トピック] に移動します。
  2. [トピックを作成] をクリックします。
  3. 次の構成の詳細を入力します。
    • トピック ID: 「netwrix-audit-trigger」と入力します。
    • その他の設定はデフォルトのままにします。
  4. [作成] をクリックします。

ログを収集する Cloud Run 関数を作成する

Cloud Run 関数は、Cloud Scheduler からの Pub/Sub メッセージによってトリガーされ、Netwrix Auditor Integration API からアクティビティ レコードを取得して GCS に書き込みます。

  1. GCP Console で、[Cloud Run] に移動します。
  2. [サービスを作成] をクリックします。
  3. [関数] を選択します(インライン エディタを使用して関数を作成します)。
  4. [構成] セクションで、次の構成の詳細を指定します。

    設定
    サービス名 netwrix-audit-collector
    リージョン GCS バケットと一致するリージョンを選択します(例: us-central1)。
    ランタイム [Python 3.12] 以降を選択します。
  5. [トリガー(省略可)] セクションで、次の操作を行います。

    1. [+ トリガーを追加] をクリックします。
    2. [Cloud Pub/Sub] を選択します。
    3. [Cloud Pub/Sub トピックを選択してください] で、[netwrix-audit-trigger] を選択します。
    4. [保存] をクリックします。
  6. [認証] セクションで次の操作を行います。

    1. [認証が必要] を選択します。
    2. Identity and Access Management(IAM)を確認します。
  7. 下にスクロールして、[コンテナ、ネットワーキング、セキュリティ] を開きます。

  8. [セキュリティ] タブに移動します。

    • サービス アカウント: netwrix-audit-collector-sa を選択します。
  9. [コンテナ] タブに移動します。

    1. [変数とシークレット] をクリックします。
    2. 環境変数ごとに [+ 変数を追加] をクリックします。
    変数名 値の例 説明
    GCS_BUCKET netwrix-auditor-logs GCS バケット名
    GCS_PREFIX netwrix-audit ログファイルの接頭辞
    STATE_KEY netwrix-audit/state.json 状態ファイルのパス
    NETWRIX_HOST auditor.enterprise.local Netwrix Auditor サーバーの FQDN または IP
    NETWRIX_PORT 9699 Integration API ポート
    NETWRIX_USER ENTERPRISE\chronicle-api DOMAIN\username 形式のドメイン アカウント
    NETWRIX_PASS your-password サービス アカウントのパスワード
    MAX_RECORDS 10000 実行あたりの最大レコード数
    LOOKBACK_HOURS 24 最初のルックバック期間
  10. [変数とシークレット] セクションで、[リクエスト] まで下にスクロールします。

    • リクエストのタイムアウト: 600 秒(10 分)を入力します。
  11. [設定] タブに移動します。

    • [リソース] セクションで次の操作を行います。
      • メモリ: 512 MiB 以上を選択します。
      • CPU: 1 を選択します。
  12. [リビジョン スケーリング] セクションで、次の操作を行います。

    • [インスタンスの最小数]: 「0」と入力します。
    • [インスタンスの最大数]: 「100」と入力します。
  13. [作成] をクリックします。

  14. サービスが作成されるまで待ちます(1 ~ 2 分)。

  15. サービスが作成されると、インライン コードエディタが自動的に開きます。

関数コードを追加する

  1. [エントリ ポイント] フィールドに「main」と入力します。
  2. インライン コードエディタで、次の 2 つのファイルを作成します。

    • main.py:
    import functions_framework
    from google.cloud import storage
    import json
    import os
    import requests
    from requests_ntlm import HttpNtlmAuth
    from datetime import datetime, timezone, timedelta
    import time
    import urllib3
    
    # Suppress insecure HTTPS warnings for self-signed certificates
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    
    # Initialize Storage client
    storage_client = storage.Client()
    
    # Environment variables
    GCS_BUCKET = os.environ.get('GCS_BUCKET')
    GCS_PREFIX = os.environ.get('GCS_PREFIX', 'netwrix-audit')
    STATE_KEY = os.environ.get('STATE_KEY', 'netwrix-audit/state.json')
    NETWRIX_HOST = os.environ.get('NETWRIX_HOST')
    NETWRIX_PORT = os.environ.get('NETWRIX_PORT', '9699')
    NETWRIX_USER = os.environ.get('NETWRIX_USER')
    NETWRIX_PASS = os.environ.get('NETWRIX_PASS')
    MAX_RECORDS = int(os.environ.get('MAX_RECORDS', '10000'))
    LOOKBACK_HOURS = int(os.environ.get('LOOKBACK_HOURS', '24'))
    
    def parse_datetime(value):
      """Parse ISO datetime string to datetime object."""
      if value.endswith("Z"):
        value = value[:-1] + "+00:00"
      return datetime.fromisoformat(value)
    
    @functions_framework.cloud_event
    def main(cloud_event):
      """
      Cloud Run function triggered by Pub/Sub to fetch Netwrix Auditor
      activity records and write to GCS.
    
      Args:
        cloud_event: CloudEvent object containing Pub/Sub message
      """
    
      if not all([GCS_BUCKET, NETWRIX_HOST, NETWRIX_USER, NETWRIX_PASS]):
        print('Error: Missing required environment variables')
        return
    
      try:
        bucket = storage_client.bucket(GCS_BUCKET)
        state = load_state(bucket)
        now = datetime.now(timezone.utc)
    
        if isinstance(state, dict) and state.get('last_event_time'):
          try:
            last_time = parse_datetime(state['last_event_time'])
            last_time = last_time - timedelta(minutes=2)
          except Exception as e:
            print(f"Warning: Could not parse last_event_time: {e}")
            last_time = now - timedelta(hours=LOOKBACK_HOURS)
        else:
          last_time = now - timedelta(hours=LOOKBACK_HOURS)
    
        print(f"Fetching activity records from {last_time.isoformat()} "
            f"to {now.isoformat()}")
    
        records, newest_event_time = fetch_activity_records(
          last_time, now
        )
    
        if not records:
          print("No new activity records found.")
          save_state(bucket, now.isoformat())
          return
    
        timestamp = now.strftime('%Y%m%d_%H%M%S')
        object_key = (
          f"{GCS_PREFIX}/netwrix_audit_{timestamp}.ndjson"
        )
        blob = bucket.blob(object_key)
    
        ndjson = '\n'.join(
          [json.dumps(r, ensure_ascii=False, default=str)
          for r in records]
        ) + '\n'
        blob.upload_from_string(
          ndjson, content_type='application/x-ndjson'
        )
    
        print(f"Wrote {len(records)} records to "
            f"gs://{GCS_BUCKET}/{object_key}")
    
        if newest_event_time:
          save_state(bucket, newest_event_time)
        else:
          save_state(bucket, now.isoformat())
    
        print(f"Successfully processed {len(records)} records")
    
      except Exception as e:
        print(f'Error processing activity records: {str(e)}')
        raise
    
    def load_state(bucket):
      """Load state from GCS."""
      try:
        blob = bucket.blob(STATE_KEY)
        if blob.exists():
          return json.loads(blob.download_as_text())
      except Exception as e:
        print(f"Warning: Could not load state: {e}")
      return {}
    
    def save_state(bucket, last_event_time_iso):
      """Save the last event timestamp to GCS state file."""
      try:
        state = {
          'last_event_time': last_event_time_iso,
          'last_run': datetime.now(timezone.utc).isoformat()
        }
        blob = bucket.blob(STATE_KEY)
        blob.upload_from_string(
          json.dumps(state, indent=2),
          content_type='application/json'
        )
        print(f"Saved state: last_event_time={last_event_time_iso}")
      except Exception as e:
        print(f"Warning: Could not save state: {e}")
    
    def fetch_activity_records(start_time, end_time):
      """
      Fetch activity records from Netwrix Auditor Integration API
      using the enum endpoint with continuation mark pagination.
    
      The API returns up to 1000 records per request. Subsequent
      requests include the ContinuationMark from the previous
      response to retrieve the next batch.
    
      Args:
        start_time: Start time for filtering records
        end_time: End time for filtering records
    
      Returns:
        Tuple of (records list, newest_event_time ISO string)
      """
      base_url = (
        f"https://{NETWRIX_HOST}:{NETWRIX_PORT}"
        f"/netwrix/api/v1/activity_records/enum"
      )
      auth = HttpNtlmAuth(NETWRIX_USER, NETWRIX_PASS)
      session = requests.Session()
      session.auth = auth
      session.verify = False
      session.headers.update({
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'User-Agent': 'GoogleSecOps-NetwrixCollector/1.0'
      })
    
      all_records = []
      newest_time = None
      continuation_mark = None
      page_num = 0
      backoff = 1.0
    
      while True:
        page_num += 1
    
        if len(all_records) >= MAX_RECORDS:
          print(f"Reached max_records limit ({MAX_RECORDS})")
          break
    
        try:
          if continuation_mark:
            response = session.post(
              base_url,
              json={"ContinuationMark": continuation_mark},
              timeout=(10, 60)
            )
          else:
            response = session.get(
              base_url,
              timeout=(10, 60)
            )
    
          if response.status_code == 429:
            retry_after = int(
              response.headers.get(
                'Retry-After', str(int(backoff))
              )
            )
            print(f"Rate limited (429). Retrying after "
                f"{retry_after}s...")
            time.sleep(retry_after)
            backoff = min(backoff * 2, 30.0)
            continue
    
          backoff = 1.0
    
          if response.status_code != 200:
            print(f"HTTP Error: {response.status_code}")
            print(f"Response body: {response.text}")
            return all_records, newest_time
    
          data = response.json()
    
          page_results = data.get('ActivityRecordList', [])
          continuation_mark = data.get('ContinuationMark')
    
          if not page_results:
            print("No more activity records (empty page)")
            break
    
          # Filter records by time window
          filtered = []
          for record in page_results:
            when = record.get('When')
            if when:
              try:
                record_time = parse_datetime(when)
                if start_time <= record_time <= end_time:
                  filtered.append(record)
                if (newest_time is None or
                    record_time >
                    parse_datetime(newest_time)):
                  newest_time = when
              except Exception as e:
                print(f"Warning: Could not parse "
                    f"record time: {e}")
                filtered.append(record)
            else:
              filtered.append(record)
    
          print(f"Page {page_num}: Retrieved "
              f"{len(page_results)} records, "
              f"{len(filtered)} within time window")
          all_records.extend(filtered)
    
          if not continuation_mark:
            print("No more pages (no ContinuationMark)")
            break
    
        except requests.exceptions.Timeout:
          print(f"Request timeout on page {page_num}")
          return all_records, newest_time
        except Exception as e:
          print(f"Error fetching activity records: {e}")
          return all_records, newest_time
    
      print(f"Retrieved {len(all_records)} total records "
          f"from {page_num} pages")
      return all_records, newest_time
    
    • requirements.txt:
    functions-framework==3.*
    google-cloud-storage==2.*
    requests>=2.31.0
    requests-ntlm>=1.2.0
    
  3. [デプロイ] をクリックして、関数を保存してデプロイします。

  4. デプロイが完了するまで待ちます(2 ~ 3 分)。

Cloud Scheduler ジョブの作成

  1. GCP Console で、[Cloud Scheduler] に移動します。
  2. [ジョブを作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定
    名前 netwrix-audit-collector-hourly
    リージョン Cloud Run functions と同じリージョンを選択する
    周波数 0 * * * *(1 時間ごとに正時)
    タイムゾーン タイムゾーンを選択します(UTC を推奨)
    ターゲット タイプ Pub/Sub
    トピック netwrix-audit-trigger を選択
    メッセージ本文 {}(空の JSON オブジェクト)
  4. [作成] をクリックします。

スケジュールの頻度のオプション

ログの量とレイテンシの要件に基づいて頻度を選択します。

頻度 CRON 式 ユースケース
5 分おき */5 * * * * 大容量、低レイテンシ
15 分ごと */15 * * * * 検索ボリュームが普通
1 時間ごと 0 * * * * 標準(推奨)
6 時間ごと 0 */6 * * * 少量、バッチ処理
毎日 0 0 * * * 過去のデータの収集

統合をテストする

  1. Cloud Scheduler コンソールで、ジョブ(netwrix-audit-collector-hourly)を見つけます。
  2. [強制実行] をクリックして、ジョブを手動でトリガーします。
  3. 数秒待ちます。
  4. Cloud Run > サービスに移動します。
  5. netwrix-audit-collector をクリックします。
  6. [Logs] タブをクリックします。
  7. 関数が正常に実行されたことを確認します。以下のものを探します。

    Fetching activity records from YYYY-MM-DDTHH:MM:SS+00:00 to YYYY-MM-DDTHH:MM:SS+00:00
    Page 1: Retrieved X records, X within time window
    Wrote X records to gs://netwrix-auditor-logs/netwrix-audit/netwrix_audit_YYYYMMDD_HHMMSS.ndjson
    Successfully processed X records
    
  8. [Cloud Storage] > [バケット] に移動します。

  9. netwrix-auditor-logs をクリックします。

  10. netwrix-audit/ フォルダに移動します。

  11. 現在のタイムスタンプで新しい .ndjson ファイルが作成されたことを確認します。

ログにエラーが表示された場合:

  • HTTP 401: NETWRIX_USER 環境変数と NETWRIX_PASS 環境変数が正しく、DOMAIN\username 形式を使用していることを確認します。
  • HTTP 403: Netwrix Auditor でサービス アカウントにグローバル レビュー担当者ロールが付与されていることを確認します。
  • HTTP 429: レート制限 - 関数は指数バックオフで自動的に再試行されます
  • 接続タイムアウト: Cloud Run からポート 9691 の Netwrix Auditor Server へのネットワーク接続を確認します。サーバーがオンプレミスの場合、VPC コネクタまたは Cloud VPN が構成されていることを確認する
  • 環境変数が不足している: 必要な変数がすべて Cloud Run functions 構成で設定されていることを確認します。

Google SecOps サービス アカウントを取得する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Netwrix Auditor Activity Records)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [Netwrix] を選択します。
  7. [サービス アカウントを取得する] をクリックします。
  8. 一意のサービス アカウントのメールアドレスが表示されます。次に例を示します。

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. このメールアドレスをコピーして、次のステップで使用します。

  10. [次へ] をクリックします。

  11. 次の入力パラメータの値を指定します。

    • ストレージ バケットの URL: 接頭辞パスを含む GCS バケット URI を入力します。

      gs://netwrix-auditor-logs/netwrix-audit/
      
    • Source deletion option: 必要に応じて削除オプションを選択します。
      • なし: 転送後にファイルを削除しません(テストにおすすめ)。
      • 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
      • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。
    • ファイルの最大経過日数: 過去の日数内に変更されたファイルを含めます(デフォルトは 180 日)。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル
  12. [次へ] をクリックします。

  13. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

Google SecOps サービス アカウントに IAM 権限を付与する

  1. [Cloud Storage] > [バケット] に移動します。
  2. netwrix-auditor-logs をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成の詳細を入力します。
    • プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
    • ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
  6. [保存] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
オペコード about.labels 概要情報に関連付けられているラベル
キャプション about.resource.attribute.labels 概要セクションのリソースの属性ラベル
タスク additional.fields イベントに関する追加情報を含む追加フィールド
What additional.fields
通知 additional.fields
説明 additional.fields
追加 additional.fields
削除済み additional.fields
service_type additional.fields
詳細 additional.fields
extensions.auth.type extensions.auth.type 使用された認証の種類
EventReceivedTime metadata.collected_timestamp システムがイベントを収集したときのタイムスタンプ
メッセージ metadata.description イベントの説明
event_type metadata.event_type イベントのタイプ
EventType metadata.product_event_type プロダクト固有のイベントタイプ
EventID metadata.product_log_id プロダクト固有のログ識別子
SourceModuleType observer.application イベントをモニタリングしたアプリケーション
ホスト名 principal.asset.hostname プリンシパルに関連付けられたアセットのホスト名
場所 principal.asset.hostname
ワークステーション principal.asset.hostname
device_name principal.asset.hostname
ワークステーション principal.hostname プリンシパルのホスト名
device_name principal.hostname
ProcessID principal.process.pid プリンシパルのプロセス ID
名前 principal.resource.name プリンシパルに関連付けられているリソースの名前
対象 principal.user.user_display_name ユーザーの表示名
SourceName security_result.about.resource.attribute.labels セキュリティ結果の概要のリソース属性ラベル
アクション security_result.action セキュリティ結果で実行されたアクション
action_details security_result.action_details セキュリティ結果のアクションの詳細
backup_name security_result.description セキュリティ結果の説明
service_failed security_result.description
キーワード security_result.detection_fields セキュリティ結果の検出に使用されるフィールド
RecordNumber security_result.detection_fields
session_ID security_result.detection_fields
allow_connection_with_desktop security_result.detection_fields
service_account security_result.detection_fields
重大度 security_result.severity セキュリティ結果の重大度レベル
SeverityValue security_result.severity
概要 security_result.summary セキュリティ結果の概要
application_name target.application ターゲット上のアプリケーション
ホスト名 target.asset.hostname ターゲットに関連付けられているアセットのホスト名
場所 target.asset.hostname
file_path target.file.full_path ターゲット ファイルのフルパス
サイズ target.file.size ターゲット ファイルのサイズ
ホスト名 target.hostname ターゲットのホスト名
場所 target.hostname
タイプ target.resource.attribute.labels ターゲット リソースの属性ラベル
SourceModuleName target.resource.name ターゲット リソースの名前
DataSource metadata.product_name イベントを生成したプロダクトの名称
metadata.vendor_name metadata.vendor_name ベンダー名

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。