Imperva Database のログを収集する

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

このドキュメントでは、Bindplane を使用して Imperva データベースのログを Google Security Operations に取り込む方法について説明します。パーサーは、まず CEF、LEEF、JSON などのさまざまな構造化ログ形式からフィールドを抽出します。これらの形式が見つからない場合は、grok パターンを使用して非構造化 syslog メッセージからフィールドを抽出し、最終的に抽出されたデータを統合データモデル(UDM)にマッピングします。Imperva Database Security は、包括的なデータベース アクティビティのモニタリング、監査、保護機能を提供します。

始める前に

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

  • Google SecOps インスタンス
  • Windows 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します
  • Imperva SecureSphere 管理コンソールへの特権アクセス

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

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

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

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

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 in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_DB'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
    • <customer_id> は、実際の顧客 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
    

Imperva Database で Syslog 転送を構成する

  1. Imperva SecureSphere Management Console にログインします。
  2. [構成> アクション セット] に移動します。
  3. [追加] をクリックして新しいアクション セットを作成するか、既存のアクション セットを編集します。
  4. [アクションを追加] をクリックし、次の構成の詳細を指定します。
    • 名前: わかりやすい名前を入力します(例: Google SecOps Syslog)。
    • アクション タイプ: [GW Syslog] を選択します。
    • ホスト: BindPlane エージェントの IP アドレスを入力します。
    • ポート: BindPlane Agent のポート番号(デフォルトは 514)を入力します。
    • プロトコル: BindPlane エージェントの構成に応じて、[UDP] または [TCP] を選択します。
    • Syslog Log Level: 包括的なロギングを行うには、[DEBUG] を選択します。
    • Syslog Facility: LOCAL0 または適切なファシリティを選択します。
    • アクション インターフェース: SYSLOG+JSON 形式の場合は [Gateway Log - Security Event - System Log (syslog) - JSON format (Extended)] を選択し、標準の SYSLOG 形式の場合は [Gateway Log - Security Event - System Log (syslog)] を選択します。
  5. アクション構成を保存します。
  6. [ポリシー] > [セキュリティ ポリシー] または [ポリシー] > [データベース監査ポリシー] に移動します。
  7. 関連するポリシーを編集し、syslog アクションを含むアクション セットを追加して、イベントが Google SecOps に転送されるようにします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
acct principal.user.userid acct が「admin」の場合は target.user.userid にマッピングし、それ以外の場合は principal.user.userid にマッピングします。マッピングの前に、acct から引用符とスペースを削除します。
アクション security_result.action_details 未加工ログの action フィールドの値
alertSev security_result.severity alertSev が「Informative」の場合は「INFORMATIONAL」としてマッピングし、それ以外の場合は alertSev の大文字としてマッピングします。
アプリケーション principal.application application が「pam_unix(sudo:session)」または description に「pam_unix」が含まれている場合は、「pam_unix」としてマッピングします。message に「run-parts」が含まれている場合は、「run-parts」としてマッピングします。message に「audispd」が含まれている場合は、「audispd」としてマッピングします。message に「FSS audit」が含まれている場合は、「FSS audit」としてマッピングします。それ以外の場合は、未加工ログの application フィールドとしてマッピングします。
application-name target.application 未加工ログの application-name フィールドの値
audit-policy security_result.category_details 未加工ログの audit-policy フィールドの値
bind-variables additional.fields.bind_variables_label.value.string_value 未加工ログの bind-variables フィールドの値
category security_result.category_details 未加工ログの category フィールドの値
COMMAND target.process.command_line exe が空でない場合は、未加工ログの exe フィールドとしてマッピングします。それ以外の場合は、未加工ログの COMMAND フィールドとしてマッピングします。
createTime マッピングされません
db-schema-pair additional.fields.DB Name_{index}.value.string_value、additional.fields.Schema Name_{index}.value.string_value 未加工ログ内の各 db-schema-pair オブジェクトについて、db-name フィールドと schema-name フィールドを抽出し、UDM の DB Name_{index}Schema Name_{index} にそれぞれマッピングします。ここで、index は配列内のオブジェクトのインデックスです。
db-user principal.user.userid db-user が空でない場合は、未加工ログの db-user フィールドとしてマッピングします。それ以外の場合(os-user が空ではなく、db-user が空の場合)、未加工ログの os-user フィールドとしてマッピングします。
dbName target.resource.name 未加工ログの dbName フィールドの値
dest-ip target.ip、target.asset.ip 未加工ログの dest-ip フィールドの値
dest-port target.port 未加工ログの dest-port フィールドの値
説明 metadata.description description に「user:」が含まれている場合は、description から userid を抽出し、userid にマッピングします。userid が空ではなく、description に「Invalid」または「invalid」が含まれている場合は、「Invalid user」を「Invalid」に置き換えます。application が「sshd」の場合、description から「from」と「by」を削除します。それ以外の場合は、未加工ログの description フィールドとしてマッピングします。
dst target.ip、target.asset.ip 未加工ログの dst フィールドの値
dstIP target.ip、target.asset.ip 未加工ログの dstIP フィールドの値
dstPort target.port 未加工ログの dstPort フィールドの値
event-type metadata.product_event_type 未加工ログの event-type フィールドの値
eventType metadata.product_event_type、metadata.event_type eventType が空でなく、srcIPdstIP が空でない場合、eventTypemetadata.product_event_type にマッピングし、「NETWORK_CONNECTION」を metadata.event_type にマッピングします。
evntDesc security_result.description 未加工ログの evntDesc フィールドの値
exe target.process.command_line 未加工ログの exe フィールドの値
ソース: network.email.from from から「<」と「>」を削除して network.email.from にマッピングします
グループ target.user.group_identifiers 未加工ログの group フィールドの値
gw-ip intermediary.ip、intermediary.asset.ip 未加工ログの gw-ip フィールドの値
ホスト target.hostname、target.asset.hostname 未加工ログの host フィールドの値
host-name principal.hostname、principal.asset.hostname 未加工ログの host-name フィールドの値
hostname principal.hostname、principal.asset.hostname 未加工ログの hostname フィールドの値
ip target.ip、target.asset.ip 未加工ログの ip フィールドの値
mx-ip intermediary.ip、intermediary.asset.ip 未加工ログの mx-ip フィールドの値
objects-list additional.fields.Object_{index}.value.string_value 未加工ログ内の各 objects-list オブジェクトについて、オブジェクトを抽出し、UDM の Object_{index} にマッピングします。ここで、index は配列内のオブジェクトのインデックスです。
オペレーション about.labels.Operation.value 未加工ログの Operation フィールドの値
Operation type about.labels.Operation Type.value 未加工ログの Operation type フィールドの値
os-user principal.user.userid、additional.fields.OS User.value.string_value os-user が空ではなく、db-user が空の場合は、未加工ログから os-user フィールドとしてマッピングします。それ以外の場合は、未加工ログの OS User フィールドとしてマッピングします。
解析されたクエリ target.process.command_line 未加工ログの Parsed Query フィールドの値
parsed-query additional.fields.Parsed Query.value.string_value 未加工ログの parsed-query フィールドの値
pid target.process.pid 未加工ログの pid フィールドの値
policy-id security_result.detection_fields.Policy_ID_{index}.value 未加工ログ内の各 policy-id オブジェクトについて、ポリシーを抽出し、UDM の Policy_ID_{index} にマッピングします。ここで、index は配列内のオブジェクトのインデックスです。
policyName security_result.detection_fields.policyName_label.value 未加工ログの policyName フィールドの値
ポート target.port 未加工ログの port フィールドの値
特権付き about.labels.Privileged.value Privileged が true の場合は「True」にマッピングし、それ以外の場合は「False」にマッピングします。
proto network.ip_protocol 未加工ログの proto フィールドの値
プロトコル network.ip_protocol protocol が「TCP」または「UDP」の場合、未加工ログの protocol フィールドとしてマッピングします。
PWD target.file.full_path 未加工ログの PWD フィールドの値
Raw Data target.resource.attribute.labels.raw_Data.value 未加工ログの Raw Data フィールドの値
raw-query additional.fields.Raw Query.value.string_value 未加工ログの raw-query フィールドの値
ruleName security_result.rule_name 未加工ログの ruleName フィールドの値
server-group additional.fields.serve_group_label.value.string_value 未加工ログの server-group フィールドの値
service-name additional.fields.service_name_label.value.string_value 未加工ログの service-name フィールドの値
Service Type additional.fields.Service Type.value.string_value 未加工ログの Service Type フィールドの値
サイズ network.received_bytes 未加工ログの size フィールドの値
Stored Proc about.labels.Stored_Proc.value Stored Proc が true の場合は「True」にマッピングし、それ以外の場合は「False」にマッピングします。
Table Group target.group.group_display_name 未加工ログの Table Group フィールドの値
timestamp metadata.event_timestamp 未加工ログの timestamp フィールドの値
network.email.to to から「<」と「>」を削除して network.email.to にマッピングします
USER principal.user.userid、target.user.userid USER が空でなく、USER が「admin」の場合、未加工ログの USER フィールドを target.user.userid にマッピングします。それ以外の場合、USER が空でなければ、未加工ログの USER フィールドを principal.user.userid にマッピングします。
user-authenticated security_result.detection_fields.user_authenticated.value 未加工ログの user-authenticated フィールドの値
user-group additional.fields.user_group_label.value.string_value 未加工ログの user-group フィールドの値
ユーザー名 principal.user.user_display_name 未加工ログの username フィールドの値
usrName principal.user.userid 未加工ログの usrName フィールドの値
extensions.auth.mechanism description に「authentication failure」、「check pass; user unknown」、「Invalid user」、「invalid user」が含まれている場合、または error が空でない場合は、「USERNAME_PASSWORD」にハードコードされます。
extensions.auth.type has_principal が「true」、has_target が「true」、event-type が「Login」の場合、「AUTHTYPE_UNSPECIFIED」にハードコードされます。
metadata.event_type PWD が空でない場合は「PROCESS_OPEN」にハードコードされます。message に「starting」が含まれている場合、または application が「pman」、「CROND」、「run-parts」のいずれかで、event_type が空の場合、「PROCESS_OPEN」にハードコードされます。description が「Syslog connection established」、「Syslog connection broken」、「Syslog connection failed」の場合、「NETWORK_CONNECTION」にハードコードされます。application が「postfix/qmgr」、「postfix/local」、「postfix/pickup」の場合、「EMAIL_UNCATEGORIZED」にハードコードされます。application が「postfix/local」または「postfix/pickup」で、status が「sent (delivered to mailbox)」の場合、「EMAIL_TRANSACTION」にハードコードされます。application が「sshd」で、description に「check pass; user unknown」が含まれておらず、description に「authentication failure」が含まれておらず、description に「invalid」が含まれていない場合は、「NETWORK_HTTP」にハードコードされます。description に「authentication failure」、「check pass; user unknown」、「Invalid user」、「invalid user」が含まれている場合、または error が空でない場合、「USER_LOGIN」にハードコードされます。file_path が空でない場合は「FILE_SYNC」にハードコードされます。message に「reconfigure」が含まれており、application が「pman」の場合は、「PROCESS_UNCATEGORIZED」にハードコードされます。message に「exit code 1」が含まれていて、application が「pman」の場合、「PROCESS_TERMINATION」にハードコードされます。eventType が空でなく、srcIPdstIP が空でない場合、「NETWORK_CONNECTION」にハードコードされます。has_principal が「true」で、has_target が「true」で、event-type が「Login」の場合、「USER_LOGIN」にハードコードされます。has_principal が「true」で、has_target が「true」で、protocol が空でない場合、「NETWORK_CONNECTION」にハードコードされます。has_principal が「true」の場合は「STATUS_UPDATE」にハードコードされます。event_type が空の場合、または「GENERIC_EVENT」の場合は、「GENERIC_EVENT」にハードコードされます。
metadata.log_type 「IMPERVA_DB」にハードコードされています
metadata.product_name 「IMPERVA DB」にハードコードされています
metadata.vendor_name 「IMPERVA DB」にハードコードされています
security_result.action description に「authentication failure」、「check pass; user unknown」、「Invalid user」、「invalid user」が含まれておらず、error が空の場合、「ALLOW」にハードコードされます。description に「authentication failure」、「check pass; user unknown」、「Invalid user」、「invalid user」のいずれかが含まれている場合、または error が空でない場合は、「BLOCK」にハードコードされます。
security_result.rule_id description に「alert_score」または「new_alert_score」が含まれている場合は、description から ruleid を抽出し、security_result.rule_id にマッピングします。

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