收集 Oracle 資料庫記錄

支援的國家/地區:

本文說明如何使用 Bindplane,將 Oracle DB 記錄匯入 Google Security Operations。剖析器會從 SYSLOG 訊息中擷取欄位,並使用 grok 模式和鍵/值剖析處理多種格式。接著,系統會將這些擷取的欄位對應至整合式資料模型 (UDM),並使用供應商和產品名稱等靜態中繼資料來擴充資料,以及根據 ACTIONUSERID 等特定欄位值動態設定事件類型。剖析器也會處理各種資料清理作業,例如取代字元和轉換資料類型。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • Windows 2016 以上版本,或搭載 systemd 的 Linux 主機
  • 如果透過 Proxy 執行,防火牆通訊埠已開啟
  • Oracle 資料庫的特殊存取權 (AUDIT_SYSTEM 角色)

取得 Google SecOps 擷取驗證檔案

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」
  3. 下載擷取驗證檔案。將檔案安全地儲存在要安裝 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. 開啟具有根層級或 sudo 權限的終端機。
  2. 執行下列指令:

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

其他安裝資源

如需其他安裝選項,請參閱安裝指南

設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps

  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 代理程式,可以使用「服務」控制台,或輸入下列指令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

啟用 Oracle 資料庫的稽核功能

  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. 使用下列指令,透過 uniaud 選項連結 Oracle DB:

    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」

設定 Oracle 資料庫的系統記錄

  1. 登入 Oracle 執行個體。
  2. 使用 vi 開啟下列檔案:

    vi ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
    
  3. 輸入下列指令來設定系統記錄:

    *.audit_trail='os'
    *.audit_syslog_level='local0.info'
    
  4. 確認 Oracle 主機上的系統記錄精靈已設定為轉送稽核記錄。

  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_valueadditional.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_type (從 AUTHENTICATION_TYPE 擷取) 不為空白,且符合其他條件,則用於將 metadata.event_type 衍生為 USER_LOGIN。extensions.auth.type 設為 AUTHTYPE_UNSPECIFIED。
CLIENT_ADDRESS principal.ipprincipal.portnetwork.ip_protocolintermediary[host].user.userid 系統會使用 Grok 模式擷取 IP、通訊埠和通訊協定。如果 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_subtype 設為 Oracle Database,並將 DBNAME 對應至 name
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 衍生自 RETURNCODESTATUS
(剖析器邏輯) security_result.action 衍生自 RETURNCODESTATUS
(剖析器邏輯) target.resource.attribute.labels 系統會根據各種記錄欄位的存在與值,新增多個標籤。
(剖析器邏輯) additional.fields 系統會根據各種記錄檔欄位的存在與值,以鍵值組合的形式新增多個欄位。
(剖析器邏輯) intermediary 系統會根據 DBPROXY_USERRNAMECLIENT_ADDRESS 的存在與值建立並填入資料。
(剖析器邏輯) network.ip_protocol 衍生自使用 include 檔案 parse_ip_protocol.includeCLIENT_ADDRESS 擷取的 protocol

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。