IBM Informix ログを収集する

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

このドキュメントでは、Bindplane エージェントを使用して IBM Informix ログを Google Security Operations に取り込む方法について説明します。

IBM Informix は、安全な監査機能を通じて包括的な監査ロギング機能を提供する、高性能なリレーショナル データベース管理システムです。Audit to Syslog(ASL)機能を使用すると、監査レコードを syslog デーモンに送信して、一元的なログ収集と SIEM 統合を行うことができます。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • Bindplane エージェントと IBM Informix サーバー間のネットワーク接続
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • AAO(監査管理者)ロールを持つ IBM Informix サーバーへの管理者アクセス権
  • IBM Informix 12.10 以降(ASL 機能はバージョン 12.10 で導入されました)
  • モニタリングするユーザーまたはイベント用に構成された監査マスク

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新規デプロイ: Chronicle API を使用します(オプション 1)。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  7. [続行] をクリックして [完了] をクリックします。
  8. 作成したサービス アカウントをクリックし、[キー] タブに移動します。
  9. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  10. [JSON] を選択し、[作成] をクリックします。キーファイルがパソコンにダウンロードされます。
  11. 鍵ファイルを ingestion-auth.json として Bindplane コレクタ ディレクトリ(Linux の場合は /opt/observiq-otel-collector/ingestion-auth.json、Windows の場合は C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)に保存するか、config.yaml の creds_file_path を更新して、保存先のパスと一致させます。
  12. [IAM と管理] > [設定] に移動し、[プロジェクト番号] をコピーします。これはエクスポータの構成に必要です。

オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。
  4. 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
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

    サービスが RUNNING と表示されます。

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
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

    サービスが active (running) と表示されます。

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

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

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

構成ファイルを探す

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  1. config.yaml の内容全体を次の構成に置き換えます。

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/informix:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: INFORMIX
        raw_log_field: body
        ingestion_labels:
          env: production
          source: informix_audit
    
    service:
      pipelines:
        logs/informix_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/informix
    
  2. 各プレースホルダを次のように置き換えます。

    • レシーバーの構成:

      • listen_address: リッスンする IP アドレスとポート。

        • 0.0.0.0:514: ポート 514(標準の syslog ポート)のすべてのインターフェースでリッスンします。
        • Linux で root 以外のユーザーとして実行する場合は、ポート 1514 以上を使用する
        • Informix syslog 構成に合わせてポート番号を調整する
    • エクスポータの構成:

      • creds_file_path: サービス アカウントの JSON キーファイルのフルパス(オプション 1)。認証情報ファイルを ingestion-auth.json として次のいずれかの場所に保存します。

        • Linux: /opt/observiq-otel-collector/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: YOUR_CUSTOMER_ID は、前の手順のお客様 ID に置き換えます。

      • location: <LOCATION> を Google SecOps インスタンスのリージョン(us、europe、asia-southeast1 など)に置き換えます。エクスポートでは、この値が chronicle.googleapis.com の前に付加されます。完全なリストについては、リージョン エンドポイントをご覧ください。

      • project: <PROJECT_NUMBER> を [IAM と管理] > [設定] のプロジェクト番号に置き換えます。

      • endpoint: chronicle.googleapis.com に設定したままにします。

      • log_type: INFORMIX に設定します。

      • ingestion_labels: ログを分類するためのオプションのラベル(必要に応じてカスタマイズ)

TCP syslog の構成例

  • 信頼性の高い配信のために TCP を使用する場合は、代わりに次の構成を使用します。

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/informix:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: INFORMIX
        raw_log_field: body
    
    service:
      pipelines:
        logs/informix_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/informix
    

以前の Ingestion API エクスポータ

  • オプション 2 の取り込み認証ファイルを使用する場合は、exporters ブロックを次のように置き換えます。creds_file_path を取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.com をリージョン エンドポイント(例: europe-malachiteingestion-pa.googleapis.com)に置き換えます。

    exporters:
      chronicle/informix:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: INFORMIX
        raw_log_field: body
        ingestion_labels:
          env: production
          source: informix_audit
    

構成ファイルを保存する

編集が完了したら、ファイルを保存します。

  • Linux: Ctrl+O、Enter、Ctrl+X の順に押します。
  • Windows: [ファイル> 保存] をクリックします。

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

  • Linux で Bindplane エージェントを再起動するには:

    1. 次のコマンドを実行します。

      sudo systemctl restart observiq-otel-collector
      
    2. サービスが実行されていることを確認します。

      sudo systemctl status observiq-otel-collector
      
    3. ログでエラーを確認します。

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには:

    1. 次のいずれかのオプションを選択します。

      • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • サービス コンソール:

        1. Win+R キーを押し、「services.msc」と入力して Enter キーを押します。
        2. observIQ OpenTelemetry Collector を見つけます。
        3. 右クリックして [再起動] を選択します。
    2. サービスが実行されていることを確認します。

      sc query observiq-otel-collector
      
    3. ログでエラーを確認します。

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

IBM Informix syslog 転送を構成する

監査マスクを作成する

監査を有効にする前に、監査マスクを作成して、どのユーザーに対してどのイベントを監査するかを定義する必要があります。

  1. AAO ロールを持つユーザーとして IBM Informix サーバーに接続します。

  2. すべてのユーザーにデフォルトの監査マスクを作成して、一般的なデータベース イベントを監査します。

    onaudit -a -u _default -e +OPDB,GRDB,CRTB,ALTB,DRTB
    

    このコマンドは、_default マスクを作成し、次のイベントを監査します。

    • OPDB: Open Database
    • GRDB: データベース アクセスを許可する
    • CRTB: テーブルを作成
    • ALTB: Alter Table
    • DRTB: テーブルを削除
  3. データ変更の行レベルの監査を有効にするには、行レベルのイベントを含むマスクを作成します。

    onaudit -a -u _require -e +DLRW,INRW,UPRW,RDRW
    

    このコマンドは、_require マスクを作成し、次の監査を行います。

    • DLRW: 行を削除
    • INRW: 行を挿入
    • UPRW: 行を更新する
    • RDRW: 行の読み取り
  4. 特定のユーザーのマスクを作成するには、_default をユーザー名に置き換えます。

    onaudit -a -u username -e +OPDB,GRDB,CRTB,ALTB,DRTB,DLRW,INRW,UPRW
    
  5. 監査マスクが作成されたことを確認します。

    onaudit -o
    

監査から Syslog(ASL)への転送を有効にする

  1. ASL 監査を有効にして、syslog パラメータを構成します。

    onaudit -E on -F LOG_LOCAL0 -I informix_audit -P LOG_INFO
    

    このコマンドは以下を行います。

    • -E on: Audit to Syslog 機能を有効にします
    • -F LOG_LOCAL0: syslog ファシリティを LOG_LOCAL0 に設定します(フィルタリングに推奨)。
    • -I informix_audit: syslog 識別子を informix_audit に設定します(syslog メッセージに表示されます)。
    • -P LOG_INFO: Syslog の優先度を LOG_INFO に設定します
  2. データベース管理者の必須監査を有効にします。

    onaudit -A on -S on
    

    このコマンドは以下を行います。

    • -A on: DBSA(データベース サーバー管理者)グループの必須監査を有効にします
    • -S on: DBSSO(データベース セキュリティ オフィサー)グループの必須監査を有効にします。
  3. AUDIT フラグが設定されたテーブルで行レベルの監査を有効にする場合は、次の操作を行います。

    onaudit -R 1
    

    これにより、ADTROWS パラメータが 1 に設定され、選択的な行レベルの監査が有効になります。

  4. 監査構成を確認します。

    onaudit -c
    

    出力で以下が表示されるはずです。

    • ADT_SYSLOG_ENABLED = 1
    • ADT_SYSLOG_FACILITY = LOG_LOCAL0
    • ADT_SYSLOG_IDENTIFIER = informix_audit
    • ADT_SYSLOG_PRIORITY = LOG_INFO
    • ADT_DBSA = 1(有効の場合)
    • ADT_DBSSO = 1(有効の場合)

Bindplane エージェントに転送するように syslog デーモンを構成する

Informix ASL 機能は、監査レコードをローカルの syslog デーモンに送信します。これらのメッセージを Bindplane エージェントに転送するように syslog デーモンを構成する必要があります。

rsyslog の場合(Linux で最も一般的):

  1. 新しい rsyslog 構成ファイルを作成します。

    sudo nano /etc/rsyslog.d/30-informix-audit.conf
    
  2. Informix 監査ログを転送するには、次の構成を追加します。

    # Forward Informix audit logs to Bindplane agent
    local0.* @127.0.0.1:514
    

    onaudit -F コマンドで別のファシリティを構成した場合は、local0 をファシリティ(local1、local2 など)に置き換えます。

    Bindplane エージェントが別のサーバーにある場合は、127.0.0.1 を Bindplane エージェントの IP アドレスに置き換えます。

    TCP 転送(より信頼性が高い)の場合は、@ ではなく @@ を使用します。

    local0.* @@127.0.0.1:514
    
  3. ファイルを保存して、rsyslog を再起動します。

    sudo systemctl restart rsyslog
    
  4. rsyslog が実行されていることを確認します。

    sudo systemctl status rsyslog
    

syslog-ng の場合:

  1. syslog-ng 構成ファイルを編集します。

    sudo nano /etc/syslog-ng/syslog-ng.conf
    
  2. 次の構成を追加します。

    # Define destination for Bindplane agent
    destination d_bindplane {
        udp("127.0.0.1" port(514));
    };
    
    # Filter for Informix audit logs
    filter f_informix {
        facility(local0);
    };
    
    # Log path to forward Informix logs
    log {
        source(s_src);
        filter(f_informix);
        destination(d_bindplane);
    };
    
  3. ファイルを保存して、syslog-ng を再起動します。

    sudo systemctl restart syslog-ng
    

構成のテスト

  1. データベースに接続して、テスト監査イベントを生成します。

    dbaccess stores_demo
    

    次に、データベースを終了します。

  2. Bindplane エージェントのログを調べて、監査レコードが受信されていることを確認します。

    Linux:

    sudo journalctl -u observiq-otel-collector -f | grep informix
    

    Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr informix
    
  3. onshowaudit ユーティリティを使用して、syslog ファイルから監査レコードを表示することもできます。

    onshowaudit -f /var/log/syslog -u your_username
    

監査ログ形式

  • syslog 経由で送信される Informix 監査ログの形式は次のとおりです。

    Jan 12 11:59:21 hostname informix_audit: ONLN|2021-01-12 18:59:21.512|hostname|31055|servername|username|0:OPDB:stores_demo:0:-
    

    形式には次のものが含まれます。

    • Syslog のタイムスタンプとホスト名(Syslog デーモンによって追加)
    • Syslog 識別子(-I オプションで構成)
    • サーバー ステータス(ONLN = オンライン)
    • Informix タイムスタンプ
    • ホスト名
    • プロセス ID
    • サーバー名
    • ユーザー名
    • イベントコードと詳細(パイプ区切り)

追加の構成オプション

  • syslog オプションを設定するには:

    onaudit -O LOG_NDELAY,LOG_PID
    

    利用可能なオプション:

    • LOG_NDELAY: 接続をすぐに開く(デフォルト)
    • LOG_ODELAY: 接続のオープンを遅延させる(LOG_NDELAY と相互に排他的)
    • LOG_PID: メッセージにプロセス ID を含める
    • LOG_CONS: syslog が使用できない場合はコンソールに書き込む
    • LOG_PERROR: syslog だけでなく stderr にも書き込む
  • 監査ファイルパスを変更するには(従来の監査の場合):

    onaudit -p /path/to/audit/directory
    
  • 監査ファイルの最大サイズを設定するには:

    onaudit -s 50000000
    

    これにより、最大サイズが 50 MB(バイト単位の値)に設定されます。

  • 新しい監査ファイルを手動で開始するには:

    onaudit -n
    
  • エラー処理モードを設定するには:

    onaudit -e 1
    

エラーモード:

  • 0: 処理を続行してエラーをログに記録する(デフォルト)
  • 1: 監査レコードを書き込めるまでスレッドを一時停止
  • 3: サーバーをシャットダウンする

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
id、dequeue_count、RequestId about.labels 「メッセージ ID」、「デキュー数」、「リクエスト ID」のラベルと統合
timestamp metadata.event_timestamp 形式 yyyy-MM-dd HH:mm:ss.SSS を使用して変換されました
type metadata.event_type type == 'ERROR' の場合は 'GENERIC_EVENT'、それ以外の場合は 'SYSTEM_AUDIT_LOG_UNCATEGORIZED' に設定します。
serverName principal.asset.asset_id type != 'ERROR' の場合、「PRODUCT_SPECIFIC_ID: 」と serverName を連結したもの
hostName principal.hostname type != 'ERROR' の場合、値は直接コピーされます。
processId principal.process.pid type != 'ERROR' の場合、値は直接コピーされます。
eventOutput、eventName principal.resource.attribute.labels 「イベント出力」、「イベント名」のラベルと統合
dbName principal.resource.name data != "" の場合、値が直接コピーされます。
principal.resource.type data != "" の場合は「DATABASE」に設定されます。
userName principal.user.userid type != 'ERROR' の場合、値は直接コピーされます。
errorCode、type security_result.action type == 'ERROR' の場合は「BLOCK」に設定し、errorCode == '0' の場合は「ALLOW」に設定し、それ以外の場合は「BLOCK」に設定します。
例外 security_result.description kv_data_1 != "" の場合、値が直接コピーされます。
ErrorCode security_result.rule_name kv_data_1 != "" の場合、値は直接コピーされます
説明 security_result.summary description != "" の場合、値は直接コピーされます。
blob_name、file_name target.file.full_path type == 'ERROR' の場合は blob_name の値、それ以外の場合は file_name
metadata.product_name 「INFORMIX」に設定します。
metadata.vendor_name 「IBM」に設定

変更ログ

このパーサーの変更ログを表示する

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