Raccogli i log del database Imperva

Supportato in:

Questo documento spiega come importare i log del database Imperva in Google Security Operations utilizzando l'agente Bindplane.

Il parser estrae i campi dai log formattati syslog del database Imperva. Utilizza grok e/o kv per analizzare il messaggio di log e poi mappa questi valori al modello UDM (Unified Data Model). Inoltre, imposta i valori predefiniti dei metadati per l'origine e il tipo di evento. Imperva Database Security offre funzionalità complete di monitoraggio, controllo e protezione delle attività del database.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un host Windows 2016 o versioni successive o Linux con systemd
  • Se l'esecuzione avviene dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso con privilegi alla console di gestione Imperva SecureSphere

Ottieni le credenziali di Google SecOps per l'agente Bindplane

Per autenticare l'agente Bindplane in Google SecOps, scegli uno dei seguenti metodi:

  • Nuove implementazioni: utilizza l'API Chronicle (opzione 1).
  • Deployment legacy: continua a utilizzare il file di autenticazione dell'acquisizione (Opzione 2) fino alla dismissione dell'API Ingestion il 20 luglio 2027.
  1. Accedi alla consoleGoogle Cloud e seleziona il progetto Google Cloud collegato alla tua istanza Google SecOps.
  2. Vai a IAM e amministrazione > Service account.
  3. Fai clic su Crea service account.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome service account: inserisci un nome per l'account (ad esempio bindplane-ingest).
    • Descrizione service account: inserisci una descrizione (ad esempio Bindplane agent log ingestion).
  5. Fai clic su Crea e continua.
  6. Nella sezione Concedi a questo account di servizio l'accesso al progetto, fai clic su Seleziona un ruolo e seleziona Chronicle Editor.
  7. Fai clic su Continua, quindi su Fine.
  8. Fai clic sul account di servizio che hai creato, quindi vai alla scheda Chiavi.
  9. Fai clic su Aggiungi chiave > Crea nuova chiave.
  10. Seleziona JSON e fai clic su Crea. Il file della chiave viene scaricato sul tuo computer.
  11. Salva il file della chiave come ingestion-auth.json nella directory del raccoglitore Bindplane (/opt/observiq-otel-collector/ingestion-auth.json su Linux o C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json su Windows) oppure aggiorna creds_file_path in config.yaml in modo che corrisponda al percorso in cui lo salvi.
  12. Vai a IAM e amministrazione > Impostazioni e copia il Numero progetto. Ti servirà per la configurazione dell'esportatore.

Opzione 2: scarica il file di autenticazione dell'acquisizione (legacy)

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione.
  4. Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.

Ottieni l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul tuo sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di finestre

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installazione di Linux

  1. Apri un terminale con privilegi root o sudo.
  2. Esegui questo comando:

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

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione, consulta la guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps

  1. Accedi al file di configurazione:

    • Individua il file config.yaml. In genere, si trova nella directory /opt/observiq-otel-collector/ su Linux o nella directory di installazione su Windows.
    • Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. Modifica il file config.yaml come segue:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        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
        # 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: chronicle.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
    
    • Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
    • Sostituisci <LOCATION> con la regione della tua istanza Google SecOps (ad esempio us, europe o asia-southeast1). L'esportatore antepone chronicle.googleapis.com a questo valore.
    • Sostituisci <PROJECT_NUMBER> con il numero di progetto in IAM e amministrazione > Impostazioni.
    • Sostituisci <CUSTOMER_ID> con l'ID cliente effettivo.
    • Aggiorna /path/to/ingestion-authentication-file.json con il percorso del file in cui è stato salvato il file della chiave del account di servizio (Opzione 1) nel Passaggio 1.

Esportatore API di importazione legacy

  • Se utilizzi il file di autenticazione dell'acquisizione dell'Opzione 2, sostituisci il blocco exporters con il seguente. Imposta creds_file_path sul percorso del file di autenticazione dell'importazione e, se la tua istanza si trova al di fuori degli Stati Uniti, sostituisci malachiteingestion-pa.googleapis.com con l'endpoint regionale (ad esempio, europe-malachiteingestion-pa.googleapis.com).

    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:
    

Riavvia l'agente Bindplane per applicare le modifiche

  1. Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
  2. Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:

    net stop observiq-otel-collector && net start observiq-otel-collector
    

Configura l'inoltro di Syslog sul database Imperva

  1. Accedi alla console di gestione Imperva SecureSphere.
  2. Vai a Configuration (Configurazione) > Action Sets (Set di azioni).
  3. Fai clic su Aggiungi per creare un nuovo insieme di azioni o modificarne uno esistente.
  4. Fai clic su Aggiungi azione e fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome descrittivo (ad esempio Google SecOps Syslog).
    • Action Type (Tipo di azione): seleziona GW Syslog.
    • Host: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci il numero di porta dell'agente Bindplane (il valore predefinito è 514).
    • Protocollo: seleziona UDP o TCP, a seconda della configurazione dell'agente Bindplane.
    • Livello di log Syslog: seleziona DEBUG per la registrazione completa.
    • Syslog Facility (Funzione Syslog): seleziona LOCAL0 o la funzione appropriata.
    • Interfaccia azione: seleziona Log gateway - Evento di sicurezza - Log di sistema (syslog) - Formato JSON (esteso) per il formato SYSLOG+JSON o Log gateway - Evento di sicurezza - Log di sistema (syslog) per il formato SYSLOG standard.
  5. Salva la configurazione dell'azione.
  6. Vai a Policy > Policy di sicurezza o Policy > Policy di controllo del database.
  7. Modifica le policy pertinenti e aggiungi il set di azioni contenente l'azione syslog per assicurarti che gli eventi vengano inoltrati a Google SecOps.

Tabella di mappatura UDM

Campo log mappatura UDM Logica
acct principal.user.userid Se acct è "admin", esegui la mappatura a target.user.userid, altrimenti esegui la mappatura a principal.user.userid. Rimuovi le virgolette e gli spazi da acct prima della mappatura.
azione security_result.action_details Valore del campo action dal log non elaborato
alertSev security_result.severity Se alertSev è "Informativo", mappalo come "INFORMATIONAL", altrimenti mappalo come versione in maiuscolo di alertSev
applicazione principal.application Se application è "pam_unix(sudo:session)" o description contiene "pam_unix", esegui il mapping come "pam_unix". Se message contiene "run-parts", mappa come "run-parts". Se message contiene "audispd", mappalo come "audispd". Se message contiene "FSS audit", mappa come "FSS audit". Altrimenti, mappa come campo application dal log non elaborato
application-name target.application Valore del campo application-name dal log non elaborato
audit-policy security_result.category_details Valore del campo audit-policy dal log non elaborato
bind-variables additional.fields.bind_variables_label.value.string_value Valore del campo bind-variables dal log non elaborato
categoria security_result.category_details Valore del campo category dal log non elaborato
COMANDO target.process.command_line Se exe non è vuoto, mappalo come campo exe dal log non elaborato. Altrimenti, mappa come campo COMMAND dal log non elaborato
Ora di creazione Non mappato
db-schema-pair additional.fields.DB Name_{index}.value.string_value, additional.fields.Schema Name_{index}.value.string_value Per ogni oggetto db-schema-pair nel log non elaborato, estrai i campi db-name e schema-name e mappali rispettivamente a DB Name_{index} e Schema Name_{index} nell'UDM, dove index è l'indice dell'oggetto nell'array.
db-user principal.user.userid Se db-user non è vuoto, esegui la mappatura come campo db-user dal log non elaborato. Else if os-user is not empty and db-user is empty then map as os-user field from raw log
dbName target.resource.name Valore del campo dbName dal log non elaborato
dest-ip target.ip, target.asset.ip Valore del campo dest-ip dal log non elaborato
dest-port target.port Valore del campo dest-port dal log non elaborato
descrizione metadata.description Se description contiene "user:", estrai l'ID utente da description e mappalo a userid. Se userid non è vuoto e description contiene "Invalid" o "invalid", sostituisci "Invalid user" con "Invalid". Se application è "sshd", rimuovi "da" e "da" da description. Altrimenti, mappa come campo description dal log non elaborato
dst target.ip, target.asset.ip Valore del campo dst dal log non elaborato
dstIP target.ip, target.asset.ip Valore del campo dstIP dal log non elaborato
dstPort target.port Valore del campo dstPort dal log non elaborato
event-type metadata.product_event_type Valore del campo event-type dal log non elaborato
eventType metadata.product_event_type, metadata.event_type Se eventType non è vuoto e srcIP e dstIP non sono vuoti, mappa eventType a metadata.product_event_type e mappa "NETWORK_CONNECTION" a metadata.event_type
evntDesc security_result.description Valore del campo evntDesc dal log non elaborato
exe target.process.command_line Valore del campo exe dal log non elaborato
da network.email.from Rimuovi "<" e ">" da from e mappalo su network.email.from
gruppo target.user.group_identifiers Valore del campo group dal log non elaborato
gw-ip intermediary.ip, intermediary.asset.ip Valore del campo gw-ip dal log non elaborato
host target.hostname, target.asset.hostname Valore del campo host dal log non elaborato
host-name principal.hostname, principal.asset.hostname Valore del campo host-name dal log non elaborato
nome host principal.hostname, principal.asset.hostname Valore del campo hostname dal log non elaborato
ip target.ip, target.asset.ip Valore del campo ip dal log non elaborato
mx-ip intermediary.ip, intermediary.asset.ip Valore del campo mx-ip dal log non elaborato
objects-list additional.fields.Object_{index}.value.string_value Per ogni oggetto objects-list nel log non elaborato, estrai l'oggetto e mappalo a Object_{index} nell'UDM, dove index è l'indice dell'oggetto nell'array.
Operazione about.labels.Operation.value Valore del campo Operation dal log non elaborato
Operation type about.labels.Operation Type.value Valore del campo Operation type dal log non elaborato
os-user principal.user.userid, additional.fields.OS User.value.string_value Se os-user non è vuoto e db-user è vuoto, esegui la mappatura come campo os-user dal log non elaborato. Altrimenti, mappa come campo OS User dal log non elaborato
Query analizzata target.process.command_line Valore del campo Parsed Query dal log non elaborato
parsed-query additional.fields.Parsed Query.value.string_value Valore del campo parsed-query dal log non elaborato
pid target.process.pid Valore del campo pid dal log non elaborato
policy-id security_result.detection_fields.Policy_ID_{index}.value Per ogni oggetto policy-id nel log non elaborato, estrai la policy e mappala a Policy_ID_{index} nell'UDM, dove index è l'indice dell'oggetto nell'array.
policyName security_result.detection_fields.policyName_label.value Valore del campo policyName dal log non elaborato
porta target.port Valore del campo port dal log non elaborato
Con privilegi about.labels.Privileged.value Se Privileged è true, esegui il mapping come "True", altrimenti come "False"
proto network.ip_protocol Valore del campo proto dal log non elaborato
protocollo network.ip_protocol Se protocol è "TCP" o "UDP", esegui la mappatura come campo protocol dal log non elaborato
PWD target.file.full_path Valore del campo PWD dal log non elaborato
Raw Data target.resource.attribute.labels.raw_Data.value Valore del campo Raw Data dal log non elaborato
raw-query additional.fields.Raw Query.value.string_value Valore del campo raw-query dal log non elaborato
ruleName security_result.rule_name Valore del campo ruleName dal log non elaborato
server-group additional.fields.serve_group_label.value.string_value Valore del campo server-group dal log non elaborato
service-name additional.fields.service_name_label.value.string_value Valore del campo service-name dal log non elaborato
Service Type additional.fields.Service Type.value.string_value Valore del campo Service Type dal log non elaborato
dimensioni network.received_bytes Valore del campo size dal log non elaborato
Stored Proc about.labels.Stored_Proc.value Se Stored Proc è true, mappa come "True", altrimenti mappa come "False"
Table Group target.group.group_display_name Valore del campo Table Group dal log non elaborato
timestamp metadata.event_timestamp Valore del campo timestamp dal log non elaborato
a network.email.to Rimuovi "<" e ">" da to e mappalo su network.email.to
UTENTE principal.user.userid, target.user.userid Se USER non è vuoto e USER è "admin", esegui la mappatura come campo USER dal log non elaborato a target.user.userid. Else if USER is not empty then map as USER field from raw log to principal.user.userid
autenticato dall'utente security_result.detection_fields.user_authenticated.value Valore del campo user-authenticated dal log non elaborato
user-group additional.fields.user_group_label.value.string_value Valore del campo user-group dal log non elaborato
nome utente principal.user.user_display_name Valore del campo username dal log non elaborato
usrName principal.user.userid Valore del campo usrName dal log non elaborato
extensions.auth.mechanism Impostato come hardcoded su "USERNAME_PASSWORD" se description contiene "authentication failure" o "check pass; user unknown" o "Invalid user" o "invalid user" o se error non è vuoto
extensions.auth.type Impostato come hardcoded su "AUTHTYPE_UNSPECIFIED" se has_principal è "true", has_target è "true" e event-type è "Login"
metadata.event_type Impostato come hardcoded su "PROCESS_OPEN" se PWD non è vuoto. Codificato in modo permanente su "PROCESS_OPEN" se message contiene "starting" o application è "pman" o "CROND" o "run-parts" e event_type è vuoto. Impostato come hardcoded su "NETWORK_CONNECTION" se description è "Syslog connection established" o "Syslog connection broken" o "Syslog connection failed". Impostato come hardcoded su "EMAIL_UNCATEGORIZED" se application è "postfix/qmgr", "postfix/local" o "postfix/pickup". Codificato in modo permanente su "EMAIL_TRANSACTION" se application è "postfix/local" o "postfix/pickup" e status è "sent (delivered to mailbox)". Codificato in modo permanente su "NETWORK_HTTP" se application è "sshd" e description non contiene "check pass; user unknown" e description non contiene "authentication failure" e description non contiene "invalid". Codificato come "USER_LOGIN" se description contiene "authentication failure" (errore di autenticazione) o "check pass; user unknown" (verifica pass; utente sconosciuto) o "Invalid user" (utente non valido) o "invalid user" (utente non valido) o se error non è vuoto. Codificato in modo permanente su "FILE_SYNC" se file_path non è vuoto. Impostato come hardcoded su "PROCESS_UNCATEGORIZED" se message contiene "reconfigure" e application è "pman". Impostato come hardcoded su "PROCESS_TERMINATION" se message contiene "exit code 1" e application è "pman". Codificato in modo permanente su "NETWORK_CONNECTION" se eventType non è vuoto e srcIP e dstIP non sono vuoti. Codificato in modo permanente su "USER_LOGIN" se has_principal è "true", has_target è "true" e event-type è "Login". Impostato come hardcoded su "NETWORK_CONNECTION" se has_principal è "true", has_target è "true" e protocol non è vuoto. Codificato in modo permanente su "STATUS_UPDATE" se has_principal è "true". Impostato come hardcoded su "GENERIC_EVENT" se event_type è vuoto o "GENERIC_EVENT"
metadata.log_type Impostato come hardcoded su "IMPERVA_DB"
metadata.product_name Impostato come hardcoded su "IMPERVA DB"
metadata.vendor_name Impostato come hardcoded su "IMPERVA DB"
security_result.action Impostato come hardcoded su "ALLOW" se description non contiene "authentication failure" o "check pass; user unknown" o "Invalid user" o "invalid user" e error è vuoto. Impostato come hardcoded su "BLOCK" se description contiene "authentication failure" o "check pass; user unknown" o "Invalid user" o "invalid user" o error non è vuoto
security_result.rule_id Se description contiene "alert_score" o "new_alert_score", estrai il ruleid da description e mappalo a security_result.rule_id
version metadata.product_version Mappato dal log delle modifiche
source-ip principal.ip Mappato dal log delle modifiche
source-port principal.port Mappato dal log delle modifiche
server-group", "service-name", "user-group", "raw-query", "parsed-query", "bind-variables", "sql-error", "db-schema-pair.db-name", "db-schema-pair.schema-name", and "objects-list additional.fields Mappato dal log delle modifiche
source-application principal.application Mappato dal log delle modifiche
event-id metadata.product_log_id Mappato dal log delle modifiche
application-user principal.user.user_display_name Mappato dal log delle modifiche
mx-ip", "gw-ip intermediary.ip Mappato dal log delle modifiche
policy-id" and "user-authenticated security_result.detection_fields Mappato dal log delle modifiche
srcPort principal.port Mappato dal log delle modifiche
srcIP principal.ip Mappato dal log delle modifiche
event_name metadata.product_event_type Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.