Ergon Informatik Airlock IAM ログを収集する

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

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

Airlock IAM は、認証、認可、ユーザー セルフサービス機能を提供する Identity and Access Management ソリューションです。Loginapp、Adminapp、Transaction Approval、Service Container、API Policy Service の各モジュールで、認証イベント、ユーザー トレイル アクティビティ、監査ログ、管理アクションの構造化された JSON ログを生成します。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • Bindplane エージェントと Airlock IAM サーバー間のネットワーク接続
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Airlock IAM インスタンスに対する管理者権限
  • 構成ファイルを編集するための Airlock IAM サーバーへの SSH またはコンソール アクセス

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
    
  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 /etc/bindplane-agent/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/airlock_iam:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: production
                source: airlock_iam
    
    service:
        pipelines:
            logs/airlock_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam
    
  2. 各プレースホルダを次のように置き換えます。

    • レシーバーの構成:

      • listen_address: ポート 51 のすべてのインターフェースでリッスンするには、0.0.0.0:514 に設定します。root 以外のユーザーとして実行されている Linux システムの場合は、ポート 1514 以降を使用します。
    • エクスポータの構成:

      • creds_file_path: 取り込み認証ファイルのフルパス:

        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: 前の手順で取得した Google SecOps のお客様 ID に置き換えます。

      • endpoint: リージョン エンドポイント URL:

        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
      • ingestion_labels: ログを分類するオプションのラベル(必要に応じて変更)

Windows の構成例

  • receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/airlock_iam:
            compression: gzip
            creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
            customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: production
                source: airlock_iam
    
    service:
        pipelines:
            logs/airlock_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam
    

構成ファイルを保存する

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

  • Linux: Ctrl+OEnterCtrl+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"
      

Airlock IAM syslog 転送を構成する

  1. SSH またはコンソール アクセスを使用して Airlock IAM サーバーに接続します。
  2. インスタンス ディレクトリに移動します。

    cd /opt/airlock/iam/instances/<instance_name>/
    
  3. すべてのモジュールの Log4j 構成ファイルを編集します。

    nano log4j/all-modules.xml
    
  4. <Appenders> セクションに Syslog アペンダーの構成を追加します。

    <Syslog name="SYSLOG" 
            facility="LOCAL1" 
            host="BINDPLANE_AGENT_IP" 
            port="514" 
            protocol="UDP" 
            format="RFC5424" 
            includeMDC="true" 
            mdcId="mdc" 
            newLine="true">
        <ExceptionPattern>%ex{full}</ExceptionPattern>
        <ThresholdFilter level="INFO"/>
    </Syslog>
    
  5. Syslog アペンダーのパラメータを構成します。

    • host: BINDPLANE_AGENT_IP は、Bindplane エージェント ホストの IP アドレス(192.168.1.100 など)に置き換えます。
    • port: 514 に設定します(Bindplane エージェントが非特権ポート用に構成されている場合は 1514)。
    • protocol: UDP に設定します(Bindplane で tcplog レシーバを構成した場合は TCP)。
    • format: 構造化 syslog 形式の場合は RFC5424 に設定します。
    • facility: LOCAL1 に設定します(必要に応じて、別のファシリティ コード(LOCAL0LOCAL7)に設定します)。
    • ThresholdFilter レベル: INFO 以上の重大度のログを送信する場合は INFO、すべてのログを送信する場合は DEBUG に設定します。
  6. <Root> ロガー セクション内にアペンダー参照を追加します。

    <Loggers>
      <Root level="${sys:iam.log.level}">
        <AppenderRef ref="SYSLOG"/>
      </Root>
    </Loggers>
    
  7. 構成の完全な例:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration name="Custom Log4j 2 Configuration for All IAM Modules">
      <Appenders>
        <Syslog name="SYSLOG" 
                facility="LOCAL1" 
                host="192.168.1.100" 
                port="514" 
                protocol="UDP" 
                format="RFC5424" 
                includeMDC="true" 
                mdcId="mdc" 
                newLine="true">
          <ExceptionPattern>%ex{full}</ExceptionPattern>
          <ThresholdFilter level="INFO"/>
        </Syslog>
      </Appenders>
      <Loggers>
        <Root level="${sys:iam.log.level}">
          <AppenderRef ref="SYSLOG"/>
        </Root>
      </Loggers>
    </Configuration>
    
  8. 構成ファイルを保存します。

    Ctrl+OEnterCtrl+X の順に押します。

  9. デフォルトでは、Log4j 構成の変更は 60 秒ごとにモニタリングされます。新しい syslog 転送は、再起動を必要とせずに自動的に有効になります。

  10. ログが Bindplane エージェントに送信されていることを確認します。

    sudo journalctl -u observiq-otel-collector -f
    
  11. ログが Google SecOps に届いていることを確認します。

    1. Google SecOps コンソールにログインします。
    2. [SIEM>検索] に移動します。
    3. 検索クエリを実行します。

      metadata.log_type = "ERGON_INFORMATIK_AIRLOCK_IAM"
      
    4. Airlock IAM ログが検索結果に表示されることを確認します。

追加の構成オプション

UDP ではなく TCP syslog を構成する

UDP ではなく TCP 配信を希望する場合:

  1. Bindplane エージェントの config.yaml ファイルで、レシーバを tcplog に変更します。

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
  2. Airlock IAM の log4j/all-modules.xml ファイルで、プロトコルを TCP に変更します。

    <Syslog name="SYSLOG" 
            facility="LOCAL1" 
            host="192.168.1.100" 
            port="514" 
            protocol="TCP" 
            format="RFC5424" 
            includeMDC="true" 
            mdcId="mdc" 
            newLine="true">
      <ExceptionPattern>%ex{full}</ExceptionPattern>
      <ThresholdFilter level="INFO"/>
    </Syslog>
    
  3. Bindplane エージェントを再起動して、レシーバーの変更を適用します。

さまざまなログレベルを構成する

  • 重大度が WARNING 以上のログのみを送信するには:

    <ThresholdFilter level="WARN"/>
    
  • DEBUG を含むすべてのログを送信するには:

    <ThresholdFilter level="DEBUG"/>
    

使用可能なログレベル(重大度が低い順):

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL

複数の Airlock IAM インスタンスを構成する

  • 複数の Airlock IAM インスタンスが同じ Bindplane エージェントに送信する場合は、取り込みラベルを使用して区別します。

    exporters:
        chronicle/airlock_iam_prod:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: production
                instance: prod-iam-01
    
        chronicle/airlock_iam_dev:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: development
                instance: dev-iam-01
    
    service:
        pipelines:
            logs/airlock_prod:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam_prod
    
            logs/airlock_dev:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam_dev
    

トラブルシューティング

ログが Google SecOps に表示されない

  1. Bindplane エージェントがログを受信していることを確認します。

    sudo journalctl -u observiq-otel-collector -f
    
  2. Airlock IAM から Bindplane エージェントへのネットワーク接続を確認します。

    telnet BINDPLANE_AGENT_IP 514
    
  3. Log4j 構成が有効であることを確認します。

    cat /opt/airlock/iam/instances/<instance_name>/log4j/all-modules.xml
    
  4. Airlock IAM ログでエラーを確認します。

    tail -f /opt/airlock/iam/instances/<instance_name>/logs/loginapp.log
    

Bindplane エージェントのエラー

  1. Bindplane エージェント ログでエラーを確認します。

    sudo journalctl -u observiq-otel-collector -n 100
    
  2. config.yaml の構文が正しいことを確認します。YAML ではインデントが重要です。

  3. 取り込み認証ファイルのパスが正しく、ファイルが存在することを確認します。

  4. Google SecOps エンドポイントへのネットワーク接続をテストします。

    curl -v https://malachiteingestion-pa.googleapis.com
    

ファイアウォール構成

次のファイアウォール ルールが構成されていることを確認します。

Bindplane エージェントへのインバウンド:

  • プロトコル: UDP(tcplog を使用している場合は TCP)
  • ポート: 514(または構成したポート)
  • 送信元: Airlock IAM サーバーの IP アドレス

Bindplane エージェントからのアウトバウンド:

  • プロトコル: HTTPS(TCP 443)
  • 宛先: Google SecOps リージョン エンドポイント
  • 目的: Google SecOps へのログ配信

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
expire_time additional.fields 空でない場合は、キー「expire_time」のラベルとして統合されます
モバイル additional.fields 空でない場合は、キー「mobile」のラベルとして統合されます。
sn additional.fields 空でない場合は、キー「sn」のラベルとして統合されます。
CONFIG_CONTEXT additional.fields 空でない場合は、キー「CONFIG_CONTEXT」のラベルとして統合されます
department additional.fields 空でない場合は、キー「department」のラベルとして統合されます
ctxData additional.fields 空でない場合は、キー「ctxData」のラベルとして統合されます。
displayLanguage additional.fields 空でない場合は、キー「displayLanguage」のラベルとして統合
nrPwdTrialsForUserDeletion additional.fields 空でない場合、キー「nrPwdTrialsForUserDeletion」のラベルとして統合されます
authInstant additional.fields 空でない場合は、キー「authInstant」のラベルとして統合されます
auditToken additional.fields 空でない場合は、キー「auditToken」のラベルとして統合されます
authPlugin additional.fields 空でない場合は、キー「authPlugin」のラベルとして統合されます
latestIdPropagation additional.fields 空でない場合は、キー「latestIdPropagation」のラベルとして統合されます。
サービス additional.fields 空でない場合は、キー「service」のラベルとして統合されます
ldap_type additional.fields 空でない場合は、キー「ldap_type」のラベルとして統合されます。
report_message additional.fields 空でない場合は、キー「report_message」のラベルとして統合
authenteeProvidedId additional.fields 空でない場合は、キー「authenteeProvidedId」のラベルとして統合されます
representerId additional.fields 空でない場合は、キー「representerId」のラベルとして統合されます。
エンジン additional.fields 空でない場合は、キー「engine」のラベルとして統合されます
channel additional.fields 空でない場合は、キー「channel」のラベルとして統合されます。
authnFactor additional.fields 空でない場合は、キー「authnFactor」のラベルとして統合されます
authnFactorDetail additional.fields 空でない場合は、キー「authnFactorDetail」のラベルとして統合されます
required_roles additional.fields 空でない場合は、キー「required_roles」のラベルとして統合されます
target_pattern additional.fields 空でない場合は、キー「target_pattern」のラベルとして統合されます
nameid additional.fields 空でない場合は、キー「nameid」のラベルとして統合されます
plugin_name additional.fields 空でない場合は、キー「plugin_name」のラベルとして統合されます。
mechanism additional.fields 空でない場合は、キー「mechanism」のラベルとして統合されます
new_session_id additional.fields 空でない場合は、キー「new_session_id」のラベルとして統合されます。
former_session_id additional.fields 空でない場合は、キー「former_session_id」のラベルとして統合されます。
req_id additional.fields 空でない場合は、キー「req_id」のラベルとして統合されます
auth_method additional.fields 空でない場合は、キー「auth_method」のラベルとして統合されます。
otp additional.fields 空でない場合は、キー「otp」のラベルとして統合されます
mob_num additional.fields 空でない場合は、キー「mob_num」のラベルとして統合されます
jsessionid additional.fields 空でない場合は、キー「jsessionid」のラベルとして統合されます
作成日 additional.fields 空でない場合は、キー「creationDate」のラベルとして統合されます
lastLogin additional.fields 空でない場合は、キー「lastLogin」のラベルとして統合されます
accountStatus additional.fields 空でない場合は、キー「accountStatus」のラベルとして統合されます
companyAdministrator additional.fields 空でない場合は、キー「companyAdministrator」のラベルとして統合されます。
companyCustomer additional.fields 空でない場合は、キー「companyCustomer」のラベルとして統合されます。
privateCustomer additional.fields 空でない場合は、キー「privateCustomer」のラベルとして統合されます
otpNotifyChannel additional.fields 空でない場合は、キー「otpNotifyChannel」のラベルとして統合されます
nas_identifier additional.fields 空でない場合は、キー「nas_identifier」のラベルとして統合されます
session_id additional.fields 空でない場合は、キー「session_id」のラベルとして統合されます
authPluginClassName extensions.auth.auth_details 存在する場合は値を直接コピー
authenticator_type extensions.auth.auth_details 値が存在し、authPluginClassName が空の場合、値は直接コピーされます
logon_type extensions.auth.mechanism 値を直接コピー
なし intermediary 中間オブジェクトから統合されました
FORWARD_LOCATION intermediary.url 値を直接コピー
metadata_description metadata.description 値を直接コピー
なし metadata.event_type イベント コンテキストに基づいて設定されます。パーサー ロジックによって決定されます。
REQUEST_ID metadata.product_log_id 値を直接コピー
airlock_version metadata.product_version 値を直接コピー
method network.http.method 値を直接コピー
user_agent network.http.user_agent 値を直接コピー
packet_size network.received_packets 整数に変換された値
GSID network.session_id 値を直接コピー
ホスト principal.hostname 値を直接コピー
CLIENT_IP principal.ip 値を直接コピー
UID principal.user.userid 値を直接コピー
role_name role.name 値を直接コピー
authenteeType role.type 値を直接コピー
なし security_result security_result オブジェクトから統合
アクション security_result.action_details 存在する場合は値を直接コピー
authMethodShortDesc security_result.action_details 値が存在する場合は統合されます
action_detail security_result.action_details 値が存在する場合は統合されます
category_value security_result.category 値を直接コピー
actionGroup security_result.category_details 値を直接コピー
result_description security_result.description 値を直接コピー
exception security_result.summary 存在する場合は値を直接コピー
STATLOG security_result.summary 値が存在し、例外が空の場合、値は直接コピーされます。
mob_num src.asset.type 値を直接コピー
mail src.email 存在する場合は値を直接コピー
メール src.email 値が存在し、メールが空の場合、値が直接コピーされます
src_ip src_ip 値を直接コピー
src_port src.port 整数に変換された値
ロール src.user.attribute.roles 値を直接コピー
会社 src.user.company_name 値を直接コピー
firstName src.user.first_name 値を直接コピー
lastName src.user.last_name 値を直接コピー
ステータス src.user.user_authentication_status 値を直接コピー
displayName src.user.user_display_name 存在する場合は値を直接コピー
ユーザー名 src.user.user_display_name 値が存在し、displayName が空の場合、値が直接コピーされます。
src_user src.user.user_display_name 値が存在し、displayName/username が空の場合、値が直接コピーされる
authenteeId src.user.userid 存在する場合は値を直接コピー
src_userid src.user.userid 値が存在し、authenteeId が空の場合、値は直接コピーされます。
UID src.user.userid 値が存在し、authenteeId/src_userid が空の場合、値は直接コピーされます
file_path target.file.full_path 値を直接コピー
target_hostname target.hostname 値を直接コピー
target_port target.port 整数に変換された値
task_name target.resource.name 値を直接コピー
target_url target.url 値を直接コピー
なし metadata.product_name 「Ergon Informatik Airlock IAM」に設定
なし metadata.vendor_name 「Ergon Informatik」に設定

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