Atlassian Confluence のログを収集する

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

このドキュメントでは、Atlassian Confluence ログを Google Security Operations に取り込む方法について説明します。パーサーは、まず Atlassian Confluence ログ用に設計された正規表現(grok パターン)を使用して、未加工のログ メッセージからフィールドを抽出します。grok 解析が失敗した場合、またはログが JSON 形式の場合、コードはメッセージを JSON として解析しようとします。最後に、抽出されたフィールドは Google SecOps UDM スキーマにマッピングされ、追加のコンテキストで拡充されます。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • 監査ログへのアクセス権を持つ Atlassian Confluence Cloud アカウント、または管理者権限を持つ Confluence Data Center/Server
  • AWS ベースの方法の場合: AWS(S3、IAM、Lambda、EventBridge)への特権アクセス
  • Bindplane メソッドの場合: Windows 2016 以降、または systemd を使用する Linux ホスト

統合オプションの概要

このガイドでは、2 つの統合パスについて説明します。

  • オプション 1: BindPlane + Syslog 経由の Confluence Data Center/Server
  • オプション 2: AWS Lambda + S3 経由の Confluence Cloud 監査ログ(JSON 形式)

Confluence のデプロイタイプとインフラストラクチャに最適なオプションを選択します。

オプション 1: Bindplane + Syslog 経由の Confluence Data Center/Server

このオプションは、syslog 経由でログを Bindplane エージェントに送信するように Confluence Data Center または Server を構成します。Bindplane エージェントは、ログを Google SecOps に転送します。

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows のインストール

  1. 管理者として コマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

その他のインストール リソース

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

  1. 構成ファイルにアクセスします。

    1. config.yaml ファイルを見つけます。通常、Linux では /etc/bindplane-agent/ ディレクトリに、Windows ではインストール ディレクトリにあります。
    2. テキスト エディタ(nanovi、メモ帳など)を使用してファイルを開きます。
  2. config.yaml ファイルを次のように編集します。

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'ATLASSIAN_CONFLUENCE'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/confluence:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
    • <YOUR_CUSTOMER_ID_HERE> は、実際の顧客 ID に置き換えます。
    • /path/to/ingestion-authentication-file.json の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart bindplane-agent
    
  • Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Confluence Data Center/Server で Syslog 転送を構成する

  1. SSH または RDP を使用して Confluence サーバーにログインします。
  2. Log4j 構成ファイルを見つけます。
    • Log4j2 の場合: <confluence-install>/confluence/WEB-INF/classes/log4j2.xml
  3. 構成ファイルを編集して SyslogAppender を追加します。

    <Configuration>
      <Appenders>
        <!-- Existing appenders -->
    
        <Syslog name="SyslogAppender" 
                host="BINDPLANE_AGENT_IP" 
                port="514" 
                protocol="UDP"
                facility="LOCAL0"
                format="RFC5424">
          <PatternLayout pattern="%d{ISO8601} %p [%t] [%c{1}] %m%n"/>
        </Syslog>
      </Appenders>
    
      <Loggers>
        <Root level="info">
          <AppenderRef ref="SyslogAppender"/>
          <!-- Other appender refs -->
        </Root>
    
        <!-- Audit logger -->
        <Logger name="com.atlassian.confluence.event.events.security.AuditEvent" level="info" additivity="false">
          <AppenderRef ref="SyslogAppender"/>
        </Logger>
      </Loggers>
    </Configuration>
    
    • BINDPLANE_AGENT_IP は、BindPlane エージェントの IP アドレスに置き換えます。
  4. Confluence を再起動して変更を適用します。

    sudo systemctl restart confluence
    

オプション B: ローカルログファイルを転送するように rsyslog を構成する

  1. ファイルをログに書き込むように Confluence を構成します(デフォルトの動作)。
  2. rsyslog が存在しない場合はインストールします。

    sudo apt-get install rsyslog  # Debian/Ubuntu
    sudo yum install rsyslog      # RHEL/CentOS
    
  3. rsyslog 構成ファイル /etc/rsyslog.d/confluence.conf を作成します。

    # Forward Confluence logs to BindPlane
    $ModLoad imfile
    
    # Application logs
    $InputFileName /opt/atlassian/confluence/logs/atlassian-confluence.log
    $InputFileTag confluence-app:
    $InputFileStateFile stat-confluence-app
    $InputFileSeverity info
    $InputFileFacility local0
    $InputRunFileMonitor
    
    # Audit logs (JSON format in DC/Server)
    $InputFileName /var/atlassian/application-data/confluence/log/audit/*.json
    $InputFileTag confluence-audit:
    $InputFileStateFile stat-confluence-audit
    $InputFileSeverity info
    $InputFileFacility local1
    $InputRunFileMonitor
    
    # Forward to BindPlane agent
    *.* @@BINDPLANE_AGENT_IP:514
    
    • BINDPLANE_AGENT_IP は、Bindplane エージェントの IP アドレスに置き換えます。
    • Confluence のインストールに基づいてログファイルのパスを調整します。
      • 通常、アプリケーション ログは <confluence-install>/logs/ または <local-home>/logs/ です。
      • 監査ログ: <confluence-home>/log/audit/*.json
  4. rsyslog を再起動します。

    sudo systemctl restart rsyslog
    

オプション 2: AWS Lambda + S3 経由の Confluence Cloud 監査ログ

Confluence Cloud API 認証情報を収集する

  1. Atlassian アカウントにログインします。
  2. https://id.atlassian.com/manage-profile/security/api-tokens にアクセスします。
  3. [Create API Token] をクリックします。
  4. トークンのラベルを入力します(例: Google Security Operations Integration)。
  5. [作成] をクリックします。
  6. API トークンをコピーして安全に保存します。
  7. Confluence Cloud サイトの URL(例: https://yoursite.atlassian.net)をメモします。
  8. Atlassian アカウントのメールアドレス(認証に使用)をメモします。

Google SecOps 用に AWS S3 バケットと IAM を構成する

  1. バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
  2. 後で参照できるように、バケットの名前リージョンを保存します(例: confluence-audit-logs)。
  3. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  4. 作成したユーザーを選択します。
  5. [セキュリティ認証情報] タブを選択します。
  6. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  7. [ユースケース] で [サードパーティ サービス] を選択します。
  8. [次へ] をクリックします。
  9. 省略可: 説明タグを追加します。
  10. [アクセスキーを作成] をクリックします。
  11. [CSV ファイルをダウンロード] をクリックし、[アクセスキー] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
  12. [完了] をクリックします。
  13. [権限] タブを選択します。
  14. [権限ポリシー] セクションで [権限を追加] をクリックします。
  15. [権限を追加] を選択します。
  16. [ポリシーを直接アタッチする] を選択します。
  17. AmazonS3FullAccess ポリシーを検索します。
  18. ポリシーを選択します。
  19. [次へ] をクリックします。
  20. [権限を追加] をクリックします。

S3 アップロードの IAM ポリシーとロールを構成する

  1. AWS コンソールで、[IAM] > [ポリシー] > [ポリシーの作成] > [JSON] タブに移動します。
  2. 次のポリシーを入力します。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowPutObjects",
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::confluence-audit-logs/*"
        },
        {
          "Sid": "AllowGetStateObject",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::confluence-audit-logs/confluence-audit/state.json"
        }
      ]
    }
    
    • 別のバケット名を入力した場合は、confluence-audit-logs を置き換えます。
  3. [次へ] > [ポリシーを作成] をクリックします。

  4. ポリシーに ConfluenceAuditToS3Policy という名前を付けます。

  5. [IAM] > [ロール] > [ロールの作成] > [AWS サービス] > [Lambda] に移動します。

  6. 新しく作成したポリシー ConfluenceAuditToS3Policy を関連付けます。

  7. ロールに「ConfluenceAuditLambdaRole」という名前を付けて、[ロールを作成] をクリックします。

Lambda 関数を作成する

  1. AWS コンソールで、[Lambda] > [Functions] に移動します。
  2. [関数を作成> 一から作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定
    名前 ConfluenceAuditToS3
    ランタイム Python 3.13
    アーキテクチャ x86_64
    実行ロール ConfluenceAuditLambdaRole
  4. 関数を作成したら、[コード] タブを開き、スタブを削除して次のコードを入力します。

    import json
    import os
    import boto3
    from datetime import datetime, timezone, timedelta
    from urllib import request, parse, error
    from base64 import b64encode
    
    # Environment variables
    S3_BUCKET = os.environ['S3_BUCKET']
    S3_PREFIX = os.environ.get('S3_PREFIX', 'confluence-audit/')
    STATE_KEY = os.environ.get('STATE_KEY', 'confluence-audit/state.json')
    CONFLUENCE_URL = os.environ['CONFLUENCE_URL']  # e.g., https://yoursite.atlassian.net
    CONFLUENCE_EMAIL = os.environ['CONFLUENCE_EMAIL']
    CONFLUENCE_API_TOKEN = os.environ['CONFLUENCE_API_TOKEN']
    MAX_RECORDS = int(os.environ.get('MAX_RECORDS', '1000'))
    
    s3_client = boto3.client('s3')
    
    def lambda_handler(event, context):
        """Fetch Confluence Cloud audit logs and write to S3."""
    
        # Read last execution state
        start_date = get_last_execution_time()
        end_date = datetime.now(timezone.utc)
    
        print(f"Fetching audit logs from {start_date} to {end_date}")
    
        # Fetch audit records
        records = fetch_audit_logs(start_date, end_date)
    
        if not records:
            print("No new audit records found.")
            save_state(end_date)
            return {'statusCode': 200, 'body': 'No new records'}
    
        # Write to S3
        timestamp = end_date.strftime('%Y%m%d_%H%M%S')
        object_key = f"{S3_PREFIX}audit_{timestamp}.json"
    
        s3_client.put_object(
            Bucket=S3_BUCKET,
            Key=object_key,
            Body='\n'.join(json.dumps(record) for record in records),
            ContentType='application/json'
        )
    
        print(f"Wrote {len(records)} records to s3://{S3_BUCKET}/{object_key}")
    
        # Update state
        save_state(end_date)
    
        return {
            'statusCode': 200,
            'body': f"Processed {len(records)} records"
        }
    
    def get_last_execution_time():
        """Retrieve the last execution timestamp from S3 state file."""
        try:
            response = s3_client.get_object(Bucket=S3_BUCKET, Key=STATE_KEY)
            state = json.loads(response['Body'].read())
            return datetime.fromisoformat(state['last_execution'])
        except s3_client.exceptions.NoSuchKey:
            # First run: fetch logs from last 24 hours
            return datetime.now(timezone.utc) - timedelta(hours=24)
        except Exception as e:
            print(f"Error reading state: {e}")
            return datetime.now(timezone.utc) - timedelta(hours=24)
    
    def save_state(execution_time):
        """Save the execution timestamp to S3 state file."""
        state = {'last_execution': execution_time.isoformat()}
        s3_client.put_object(
            Bucket=S3_BUCKET,
            Key=STATE_KEY,
            Body=json.dumps(state),
            ContentType='application/json'
        )
    
    def fetch_audit_logs(start_date, end_date):
        """Fetch audit logs from Confluence Cloud REST API."""
        records = []
        start_param = int(start_date.timestamp() * 1000)  # milliseconds
        end_param = int(end_date.timestamp() * 1000)
    
        # Build authentication header
        auth_string = f"{CONFLUENCE_EMAIL}:{CONFLUENCE_API_TOKEN}"
        auth_bytes = auth_string.encode('ascii')
        auth_b64 = b64encode(auth_bytes).decode('ascii')
    
        headers = {
            'Authorization': f'Basic {auth_b64}',
            'Accept': 'application/json'
        }
    
        # Confluence Cloud Audit API endpoint
        url = f"{CONFLUENCE_URL}/wiki/rest/api/audit?startDate={start_param}&endDate={end_param}&limit=1000"
    
        try:
            req = request.Request(url, headers=headers)
            with request.urlopen(req) as response:
                data = json.loads(response.read())
                records = data.get('results', [])
                print(f"Retrieved {len(records)} audit records")
        except error.HTTPError as e:
            print(f"HTTP Error: {e.code} - {e.reason}")
            print(e.read().decode())
        except Exception as e:
            print(f"Error fetching audit logs: {e}")
    
        return records[:MAX_RECORDS]
    
  5. [構成] > [環境変数] に移動します。

  6. [編集>新しい環境変数を追加] をクリックします。

  7. 次の環境変数を入力し、実際の値に置き換えます。

    キー 値の例
    S3_BUCKET confluence-audit-logs
    S3_PREFIX confluence-audit/
    STATE_KEY confluence-audit/state.json
    CONFLUENCE_URL https://yoursite.atlassian.net
    CONFLUENCE_EMAIL your-email@example.com
    CONFLUENCE_API_TOKEN your-api-token-here
    MAX_RECORDS 1000
  8. [CONFIGURATION] タブを選択します。

  9. [全般設定] パネルで、[編集] をクリックします。

  10. [Timeout] を [5 minutes (300 seconds)] に変更し、[Save] をクリックします。

EventBridge スケジュールを作成する

  1. [Amazon EventBridge] > [Scheduler] > [スケジュールの作成] に移動します。
  2. 次の構成の詳細を入力します。
    • 定期的なスケジュール: レート1 hour)。
    • ターゲット: Lambda 関数 ConfluenceAuditToS3
    • 名前: ConfluenceAuditToS3-1h
  3. [スケジュールを作成] をクリックします。

省略可: Google SecOps 用の読み取り専用の IAM ユーザーと鍵を作成する

  1. AWS コンソール > IAM > [Users] に移動します。
  2. [ユーザーを追加] をクリックします。
  3. 次の構成の詳細を入力します。
    • ユーザー: 「secops-confluence-reader」と入力します。
    • アクセスの種類: [アクセスキー - プログラムによるアクセス] を選択します。
  4. [次へ] をクリックします。
  5. [ポリシーを直接アタッチする>ポリシーを作成] をクリックします。
  6. JSON エディタで、次のポリシーを入力します。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::confluence-audit-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::confluence-audit-logs"
        }
      ]
    }
    
  7. 名前を secops-reader-policy に設定します。

  8. [Create policy] > を検索して選択 > [Next] > [Add permissions] に移動します。

  9. [セキュリティ認証情報] > [アクセスキー] > [アクセスキーを作成] に移動します。

  10. CSV をダウンロードします(これらの値はフィードに入力されます)。

Confluence のログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Confluence Cloud Audit Logs)。
  4. [ソースタイプ] として [Amazon S3 V2] を選択します。
  5. [Log type] で [Atlassian Confluence] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。
    • S3 URI: s3://confluence-audit-logs/confluence-audit/
    • Source deletion options: 必要に応じて削除オプションを選択します。
    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
    • アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
    • シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
エージェント read_only_udm.network.http.user_agent 「agent」フィールドから取得された値。
app_protocol read_only_udm.network.application_protocol 「app_protocol」フィールドから派生します。「app_protocol」に「HTTPS」、「HTTP」、「SSH」、「RDP」が含まれている場合は、対応するプロトコルが使用されます。それ以外の場合は、デフォルトで「UNKNOWN_APPLICATION_PROTOCOL」になります。
app_protocol read_only_udm.network.application_protocol_version 「app_protocol」フィールドから取得された値。
auditType.action read_only_udm.security_result.action 「auditType.action」フィールドから派生します。「auditType.action」に「successful」が含まれている場合、値は「ALLOW」に設定されます。「restricted」が含まれている場合、値は「BLOCK」に設定されます。
auditType.action read_only_udm.security_result.summary 「auditType」が空でなく、「auditType_area」が「SECURITY」の場合、「auditType.action」フィールドから取得された値。
auditType.actionI18nKey read_only_udm.metadata.product_event_type 「auditType」が空でない場合、「auditType.actionI18nKey」フィールドから取得された値。
auditType.area read_only_udm.security_result.detection_fields.value 「auditType.area」フィールドから取得された値が、検出フィールドの「value」フィールドに割り当てられます。この検出フィールドの「key」フィールドは「auditType area」に設定されています。このマッピングは、「auditType」が空でない場合に実行されます。
auditType.category read_only_udm.security_result.category_details 「auditType」が空でない場合、「auditType.category」フィールドから取得された値。
auditType.categoryI18nKey read_only_udm.security_result.detection_fields.value 「auditType.categoryI18nKey」フィールドから取得された値が、検出フィールドの「value」フィールドに割り当てられます。この検出フィールドの「key」フィールドは「auditType categoryI18nKey」に設定されています。このマッピングは、「auditType」が空でない場合に実行されます。
auditType.level read_only_udm.security_result.detection_fields.value 「auditType.level」フィールドから取得された値が、検出フィールドの「value」フィールドに割り当てられます。この検出フィールドの「key」フィールドは「auditType level」に設定されています。このマッピングは、「auditType」が空でない場合に実行されます。
author.displayName read_only_udm.principal.user.user_display_name 「author.displayName」フィールドから取得された値。
author.externalCollaborator read_only_udm.security_result.about.resource.attribute.labels.value 「author.externalCollaborator」フィールドから取得された値が、「key」フィールドが「externalCollaborator」に設定されたラベルの「value」フィールドに割り当てられます。
author.id read_only_udm.principal.user.userid 「author.type」が「user」で、「principal_user_present」が「false」の場合、「author.id」フィールドから取得された値。
author.isExternalCollaborator read_only_udm.security_result.about.resource.attribute.labels.value 「author.isExternalCollaborator」フィールドから取得された値が、ラベルの「value」フィールドに割り当てられます。このラベルの「key」フィールドは「isExternalCollaborator」に設定されています。
author.name read_only_udm.principal.user.user_display_name 「author.type」が「user」で、「principal_user_present」が「false」の場合、「author.name」フィールドから取得された値。
bytes_in read_only_udm.network.received_bytes 「bytes_in」フィールドに数字が含まれている場合は、その値が使用されます。それ以外の場合は、デフォルトの 0 になります。
category read_only_udm.security_result.category_details 「category」フィールドから取得された値。
changedValues read_only_udm.principal.resource.attribute.labels changedValues の各要素を反復処理し、キーが changedValue[index][key] のようなラベルと、changedValues 配列の対応する値から値を作成します。
作成日 read_only_udm.metadata.event_timestamp 「creationDate」フィールドから取得された値。UNIX または UNIX_MS タイムスタンプとして解析されます。
extraAttributes read_only_udm.principal.resource.attribute.labels 「extraAttributes」の各要素を反復処理し、「name」フィールドと「nameI18nKey」フィールドに基づいてキーを持つラベルと、対応する「value」フィールドの値を作成します。
http_verb read_only_udm.network.http.method 「http_verb」フィールドから取得された値。
ip read_only_udm.target.ip 「ip」フィールドから取得された値。
principal_host read_only_udm.principal.hostname 「principal_host」フィールドから取得された値。
referral_url read_only_udm.network.http.referral_url 「referral_url」フィールドから取得された値。
remoteAddress read_only_udm.principal.ip 「remoteAddress」フィールドから取得された値。IP アドレスとして解析されます。
response_code read_only_udm.network.http.response_code 「response_code」フィールドから取得された値。
session_duration read_only_udm.additional.fields.value.string_value 「session_duration」フィールドから取得した値が、ラベルの「string_value」フィールドに割り当てられます。このラベルの「key」フィールドは「Session Duration」に設定されています。
ソース read_only_udm.principal.ip 「source」フィールドから取得された値。IP アドレスとして解析されます。
src_ip read_only_udm.principal.ip 「remoteAddress」が空の場合、「src_ip」フィールドから取得された値。
概要 read_only_udm.security_result.summary 「summary」フィールドから取得された値。
sysAdmin read_only_udm.security_result.about.resource.attribute.labels.value 「sysAdmin」フィールドから取得された値が、ラベルの「value」フィールドに割り当てられます。このラベルの「key」フィールドは「sysAdmin」に設定されています。
superAdmin read_only_udm.security_result.about.resource.attribute.labels.value 「superAdmin」フィールドから取得された値が、ラベルの「value」フィールドに割り当てられます。このラベルの「key」フィールドは「superAdmin」に設定されています。
target_url read_only_udm.target.url 「target_url」フィールドから取得された値。
timestamp read_only_udm.metadata.event_timestamp 「timestamp」フィールドから取得された値。日付と時刻の文字列として解析されます。
user_id read_only_udm.principal.user.userid 「user_id」フィールドから取得された値。
read_only_udm.metadata.event_type このフィールドの値は一連のチェックによって決定され、デフォルトは「GENERIC_EVENT」です。「principal_host」、「user_id」、「has_principal」、「author.type」などの他のフィールドの有無と内容に基づいて、「NETWORK_HTTP」、「USER_UNCATEGORIZED」、「STATUS_UPDATE」などの特定の値に設定されます。
read_only_udm.metadata.vendor_name 「ATLASSIAN」に設定します。
read_only_udm.metadata.product_name 「CONFLUENCE」に設定します。
read_only_udm.metadata.log_type 「ATLASSIAN_CONFLUENCE」に設定します。
read_only_udm.principal.user.user_display_name このフィールドの値は、コンテキストに応じて「author.displayName」または「affectedObject.name」のいずれかから取得できます。
read_only_udm.target.process.pid このフィールドの値は、コンテキストに応じて「principal_host」または「pid」のいずれかから取得できます。
read_only_udm.principal.resource.attribute.labels このフィールドには、「affectedObjects」、「changedValues」、「extraAttributes」などのフィールドから派生したさまざまなラベルが入力されます。これらのラベルのキーと値は、これらのフィールドの特定のコンテンツに基づいて動的に生成されます。

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