Oracle DB ログを収集する

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

このドキュメントでは、Bindplane を使用して Oracle DB ログを Google Security Operations に取り込む方法について説明します。このパーサーは、SYSLOG メッセージからフィールドを抽出し、grok パターンと Key-Value 解析を使用して複数の形式を処理します。次に、抽出されたフィールドを統合データモデル(UDM)にマッピングし、ベンダー名やプロダクト名などの静的メタデータでデータを拡充し、ACTIONUSERID などの特定のフィールド値に基づいてイベントタイプを動的に設定します。また、文字の置換やデータ型の変換など、さまざまなデータ クリーニング オペレーションも処理します。

始める前に

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

  • Google SecOps インスタンス
  • Windows 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
  • Oracle データベースへの特権アクセス(AUDIT_SYSTEM ロール)

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. 構成ファイルにアクセスします。
    • config.yaml ファイルを見つけます。通常、Linux では /etc/bindplane-agent/ ディレクトリ、Windows ではインストール ディレクトリにあります。
    • テキスト エディタ(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
            ingestion_labels:
                log_type: 'ORACLE_DB'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。

  4. <customer_id> は、実際のお客様 ID に置き換えます。

  5. /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
    

Oracle Database の監査を有効にする

  1. SQLplus を使用して Oracle データベースに接続します。
  2. 次のコマンドを使用してデータベースをシャットダウンします。

    shutdown immediate
    
  3. 次のコマンドを入力して、Oracle リスナー サービスを停止します。

    lsnrctl stop
    
  4. 省略可: 該当する場合のみ、次のコマンドを使用して Enterprise Manager を停止します。

    cd /u01/app/oracle/product/middleware/oms
    
    export OMS_HOME=/u01/app/oracle/product/middleware/oms
    
    $OMS_HOME/bin/emctl stop oms
    
  5. 次のコマンドを使用して、Oracle DB を uniaud オプションにリンクします。

    cd $ORACLE_HOME/rdbms/lib
    
    make -f ins_rdbms.mk uniaud_on ioracle
    
  6. SQLplus を使用して Oracle データベースに接続します。

  7. 次のコマンドを使用してデータベースを再起動します。

    startup
    
  8. 次のコマンドを使用して Oracle リスナー サービスを再起動します。

    lsnrctl start
    
  9. 省略可: 該当する場合のみ、次のコマンドを使用して Enterprise Manager を再起動します。

    cd /u01/app/oracle/product/middleware/oms
    
    export OMS_HOME=/u01/app/oracle/product/middleware/oms
    
    $OMS_HOME/bin/emctl start oms
    
  10. 統合監査が有効になっていることを確認して、SQLplus で Oracle データベースに接続し、次のコマンドを入力します。

    select * from v$option where PARAMETER = 'Unified Auditing';
    
  11. コマンドから VALUE が「TRUE」の 1 行が返されることを確認します。

Oracle Database の Syslog を構成する

  1. Oracle インスタンスにログインします。
  2. vi を使用して次のファイルを開きます。

    vi ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
    
  3. syslog 構成に次のコマンドを入力します。

    *.audit_trail='os'
    *.audit_syslog_level='local0.info'
    
  4. Oracle ホストの syslog デーモンが監査ログを転送するように構成されていることを確認します。

  5. Red Hat Enterprise では、vi を使用して次のファイル /etc/syslog.conf を開き、次の行を入力します。

    local0.info @ <bindplane-ip>:514
    
  6. ファイルを保存して終了します。

    :wq
    
  7. Red Hat Enterprise で、次のコマンドを入力して syslog 構成を再読み込みします。

    kill -HUP /var/run/syslogd.pid
    
  8. SQLplus に接続し、sysdba としてログインして再起動します。

    sys as sysdba
    
  9. 次のコマンドを使用してデータベースをシャットダウンします。

    shutdown immediate
    
  10. 次のコマンドを使用してデータベースを再起動します。

    startup
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
ACTION security_result.action_details 未加工ログの ACTION の値は、この UDM フィールドに直接マッピングされます。追加のロジックが適用され、ACTION の値に基づいて security_result.actionsecurity_result.description が決定されます(例: 100 は ALLOW と Success にマッピングされます)。
ACTION_NAME metadata.product_event_type 直接マッピングされます。
ACTION_NUMBER additional.fields[action_number].value.string_value キー Source Event に直接マッピングされます。他のフィールドと組み合わせて metadata.event_typemetadata.product_event_type を導出するためにも使用されます。
APPLICATION_CONTEXTS additional.fields[application_contexts_label].value.string_value キー APPLICATION_CONTEXTS に直接マッピングされます。
AUDIT_POLICY additional.fields[audit_policy_label].value.string_value または additional.fields[AUDIT_POLICY_#].value.string_value AUDIT_POLICY にカンマが含まれている場合は、AUDIT_POLICY_0AUDIT_POLICY_1 などのキーを持つ複数のラベルに分割されます。それ以外の場合は、キー AUDIT_POLICY に直接マッピングされます。
AUDIT_TYPE additional.fields[audit_type_label].value.string_value キー AUDIT_TYPE に直接マッピングされます。
AUTHENTICATION_TYPE metadata.event_typeextensions.auth.type auth_typeAUTHENTICATION_TYPE から抽出)が空でない場合、およびその他の条件が満たされている場合に、metadata.event_type を USER_LOGIN として導出するために使用されます。extensions.auth.type は AUTHTYPE_UNSPECIFIED に設定されています。
CLIENT_ADDRESS principal.ipprincipal.portnetwork.ip_protocolintermediary[host].user.userid IP、ポート、プロトコルは、grok パターンを使用して抽出されます。CLIENT_ADDRESS フィールドにユーザー名が存在する場合、そのユーザー名は intermediary[host].user.userid にマッピングされます。
CLIENT_ID target.user.userid 直接マッピングされます。
CLIENT_PROGRAM_NAME additional.fields[client_program_name_label].value.string_value キー CLIENT_PROGRAM_NAME に直接マッピングされます。
CLIENT_TERMINAL additional.fields[CLIENT_TERMINAL_label].value キー CLIENT_TERMINAL に直接マッピングされます。
CLIENT_USER target.user.user_display_name 直接マッピングされます。
COMMENT$TEXT additional.fields[comment_text_label].value.string_value 「+」を「:」に置き換えた後、キー comment_text に直接マッピングされます。
CURRENT_USER additional.fields[current_user_label].value.string_value キー current_user に直接マッピングされます。
CURUSER additional.fields[current_user_label].value.string_value キー current_user に直接マッピングされます。
DATABASE_USER principal.user.user_display_name 空でないか / でない場合、直接マッピングされます。
DBID metadata.product_log_id 一重引用符を削除した後、直接マッピングされます。
DBNAME target.resource.resource_typetarget.resource.resource_subtypetarget.resource.name resource_type を DATABASE、resource_subtypeOracle Database に設定し、DBNAMEname にマッピングします。
DBPROXY_USERRNAME intermediary[dbproxy].user.userid 直接マッピングされます。
DBUSERNAME target.user.user_display_name 直接マッピングされます。
ENTRYID target.resource.attribute.labels[entry_id_label].value キー Entry Id に直接マッピングされます。
EXTERNAL_USERID additional.fields[external_userid_label].value.string_value キー EXTERNAL_USERID に直接マッピングされます。
LENGTH additional.fields[length_label].value.string_value キー length に直接マッピングされます。
LOGOFF$DEAD target.resource.attribute.labels[LOGOFFDEAD_label].value キー LOGOFFDEAD に直接マッピングされます。
LOGOFF$LREAD target.resource.attribute.labels[LOGOFFLREAD_label].value キー LOGOFFLREAD に直接マッピングされます。
LOGOFF$LWRITE target.resource.attribute.labels[LOGOFFLWRITE_label].value キー LOGOFFLWRITE に直接マッピングされます。
LOGOFF$PREAD target.resource.attribute.labels[LOGOFFPREAD_label].value キー LOGOFFPREAD に直接マッピングされます。
NTIMESTAMP# metadata.event_timestamp 解析され、RFC 3339 形式または ISO8601 形式に変換されます。
OBJCREATOR target.resource.attribute.labels[obj_creator_label].value キー OBJ Creator に直接マッピングされます。
OBJNAME target.resource.attribute.labels[obj_name_label].value キー OBJ Name に直接マッピングされます。
OS_USERNAME principal.user.user_display_name 直接マッピングされます。
OSUSERID target.user.userid 直接マッピングされます。
PDB_GUID principal.resource.product_object_id 直接マッピングされます。
PRIV$USED additional.fields[privused_label].value.string_value キー privused に直接マッピングされます。
PRIVILEGE principal.user.attribute.permissions.name 直接マッピングされます。
RETURN_CODE security_result.summary 直接マッピングされます。ロジックが適用され、security_result.actionsecurity_result.description が導出されます。
RETURNCODE security_result.summary 直接マッピングされます。ロジックが適用され、security_result.actionsecurity_result.description が導出されます。
RLS_INFO additional.fields[rls_info_label].value.string_value キー RLS_INFO に直接マッピングされます。
SCHEMA additional.fields[schema_label].value.string_value キー schema に直接マッピングされます。
SESSIONCPU target.resource.attribute.labels[SESSIONCPU_label].value キー SESSIONCPU に直接マッピングされます。
SESSIONID network.session_id 直接マッピングされます。
SESID network.session_id 直接マッピングされます。
SQL_TEXT target.process.command_line 直接マッピングされます。
SQLTEXT target.process.command_line 直接マッピングされます。
STATEMENT target.resource.attribute.labels[statement_label].value キー STATEMENT に直接マッピングされます。
STATUS security_result.summary 直接マッピングされます。ロジックが適用され、security_result.actionsecurity_result.description が導出されます。
SYSTEM_PRIVILEGE_USED additional.fields[system_privilege_used_label].value.string_value キー SYSTEM_PRIVILEGE_USED に直接マッピングされます。
TARGET_USER additional.fields[target_user_label].value.string_value キー TARGET_USER に直接マッピングされます。
TERMINAL additional.fields[CLIENT_TERMINAL_label].value キー CLIENT_TERMINAL に直接マッピングされます。
TYPE additional.fields[type_label].value.string_value キー type に直接マッピングされます。
USERHOST principal.hostnameprincipal.administrative_domain ホスト名とドメインは Grok パターンを使用して抽出されます。
USERID principal.user.userid 直接マッピングされます。
device_host_name target.hostname 直接マッピングされます。
event_name metadata.product_event_type 大文字に変換した後、直接マッピングされます。
file_name target.file.full_path 直接マッピングされます。
hostname principal.hostname 直接マッピングされます。
length additional.fields[length_label].value.string_value キー length に直接マッピングされます。
log_source_name principal.application 直接マッピングされます。
message 各種 複数のフィールドを抽出する grok 解析に使用されます。
returncode RETURNCODE 直接マッピングされます。
src_ip principal.ip 直接マッピングされます。
t_hostname target.hostname 直接マッピングされます。
(パーサー ロジック) metadata.vendor_name Oracle にハードコードされています。
(パーサー ロジック) metadata.product_name Oracle DB にハードコードされています。
(パーサー ロジック) metadata.event_type ACTIONACTION_NUMBERsource_eventOSUSERIDUSERIDSQLTEXTAUTHENTICATION_TYPEDBUSERNAMEdevice_host_namedatabase_name の値に基づいて決定されます。特定の条件が満たされていない場合のデフォルトは USER_RESOURCE_ACCESS です。
(パーサー ロジック) metadata.product_event_type ACTIONACTION_NUMBERsource_eventp_event_typeACTION_NAME の値に基づいて決定されます。
(パーサー ロジック) metadata.log_type ORACLE_DB にハードコードされています。
(パーサー ロジック) extensions.auth.mechanism ACTIONACTION_NUMBERsource_eventOSUSERID に基づく特定の条件で USERNAME_PASSWORD に設定されます。
(パーサー ロジック) extensions.auth.type ACTIONACTION_NUMBERAUTHENTICATION_TYPE に基づく特定の条件で AUTHTYPE_UNSPECIFIED に設定されます。
(パーサー ロジック) security_result.description RETURNCODE または STATUS から取得されます。
(パーサー ロジック) security_result.action RETURNCODE または STATUS から取得されます。
(パーサー ロジック) target.resource.attribute.labels さまざまなログフィールドの存在と値に基づいて、複数のラベルが追加されます。
(パーサー ロジック) additional.fields さまざまなログフィールドの存在と値に基づいて、いくつかのフィールドが Key-Value ペアとして追加されます。
(パーサー ロジック) intermediary DBPROXY_USERRNAMECLIENT_ADDRESS の存在と値に基づいて作成され、入力されます。
(パーサー ロジック) network.ip_protocol インクルード ファイル parse_ip_protocol.include を使用して CLIENT_ADDRESS から抽出された protocol から派生。

変更点

2025-03-18

機能強化:

  • SYSLOG ログを解析するための Grok パターンを追加しました。
  • org_idcomp_idadditional.fields にマッピングしました。
  • host_addrprincipal.ipprincipal.asset.ip にマッピングしました。
  • host_idprincipal.hostnameprincipal.asset.hostname にマッピングしました。
  • levelsecurity_result.severity_details にマッピングしました。

2025-02-12

機能強化:

  • syslog ログの新しいパターンをサポートする日付フィルタを追加しました。

2025-01-15

機能強化:

  • IDmetadata.event_timestamp にマッピングしました。

2024-12-19

機能強化:

  • syslog ログの新しいパターンのサポートを追加しました。

2024-12-12

機能強化:

  • 新しい形式の KV ログを処理する gsub パターンを追加しました。
  • 新しい形式の KV ログを処理するための新しい Grok パターンを追加しました。
  • ORACLE_DBmetadata.log_type にマッピングしました。

2024-10-25

機能強化:

  • ACTIONGRANT の場合は、metadata.event_typeUSER_RESOURCE_UPDATE_PERMISSIONS に設定します。
  • ACTIONDROP または DELETE の場合は、metadata.event_typeUSER_RESOURCE_DELETION に設定します。
  • ACTIONCREATE の場合は、metadata.event_typeUSER_RESOURCE_CREATION に設定します。
  • ACTIONALTER または INSERT の場合は、metadata.event_typeUSER_RESOURCE_UPDATE_CONTENT に設定します。

2024-09-25

機能強化:

  • KV ログの新しいパターンのサポートを追加しました。

2024-07-24

機能強化:

  • AUDIT_POLICY を複数の値に分割するのではなく、単一の文字列として additional.fields にマッピングしました。

2024-06-06

機能強化:

  • principal.user.user_display_name のマイナーチェンジ。

2024-05-30

機能強化:

  • Exadata フィールドのサポートを追加しました。

2024-04-03

機能強化:

  • サポートされていなかった一部の属性のサポートを追加しました。

2023-10-25

機能強化:

  • LENGTHLOGOFFDEADLOGOFFLREADLOGOFFLWRITELOGOFFPREADSESSIONCPUCLIENT_TERMINALtarget.resource.attribute.labels にマッピングしました。
  • ACTIONsecurity_result.summary にマッピングしました。
  • RETURNCODE が 0 の場合、または STATUS が 0 の場合、security_result.descriptionSuccess に設定します。
  • RETURNCODE が 1 または -1 の場合、または STATUS が 1 または -1 の場合、security_result.descriptionFailure に設定します。
  • principal.ipprincipal.portCLIENT_ADDRESS からマッピングしました。

2022-10-13

機能強化:

  • SYSLOG ログと KV ログを処理するための Grok パターンを追加しました。

2022-08-01

機能強化:

  • 次のフィールドのマッピングを追加しました。
  • hostnameprincipal.hostname にマッピングされます。
  • returncode0 の場合、security_result.action は ALLOW にマッピングされ、それ以外の場合は -1 の場合は BLOCK にマッピングされます。
  • ACTIONmetadata.product_event_type にマッピングされます。
  • DATABASE USERprincipal.user.user_display_name にマッピングされます。
  • PRIVILEGEprincipal.user.attribute.permissions にマッピングされます。
  • CLIENT USERtarget.user.user_display_name にマッピングされます。
  • file_nametarget.file.full_path にマッピングされます。
  • event_namemetadata.product_event_type にマッピングされます。
  • ACTION_NUMBERevent.idm.read_only_udm.additional.fields にマッピングされます。
  • lengthevent.idm.read_only_udm.additional.fields にマッピングされます。
  • DBIDmetadata.product_log_id にマッピングされます。

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