Integra OpenSearch con Google SecOps

Versione integrazione: 1.0

Questo documento spiega come integrare OpenSearch con Google Security Operations.

Casi d'uso

L'integrazione di OpenSearch riguarda i seguenti casi d'uso di orchestrazione e indagine sulla sicurezza:

  • Ricerca automatica delle minacce: esegui periodicamente ricerche in tutti gli indici OpenSearch per indicatori di compromissione (IoC) specifici o pattern sospetti utilizzando query Lucene e DSL.

  • Importazione centralizzata degli avvisi: importa i documenti da OpenSearch come avvisi azionabili in Google SecOps, assicurandoti che gli eventi di sicurezza del tuo data lake vengano assegnati in ordine di priorità e analizzati.

  • Recupero dei dati contestuali: arricchisci i casi di sicurezza esistenti estraendo automaticamente i log o i dati storici correlati da OpenSearch per fornire agli analisti un contesto più approfondito durante un'indagine.

  • Mappatura flessibile dei dati: mappa dinamicamente i livelli di gravità e i tag dell'ambiente dai documenti OpenSearch agli standard Google SecOps per mantenere la coerenza tra le diverse origini log.

Prima di iniziare

Prima di configurare l'integrazione nella piattaforma Google SecOps, verifica di disporre di quanto segue:

  • File del certificato CA: un file dell'autorità di certificazione valido per proteggere la connessione.

  • Ultima versione dell'integrazione: assicurati di utilizzare la versione più recente dell'integrazione OpenSearch.

  • Certificato con codifica Base64: il contenuto del file del certificato CA deve essere convertito in una stringa Base64 prima della configurazione.

Per configurare l'integrazione con un certificato CA, completa i seguenti passaggi:

  1. Apri la pagina dei parametri di configurazione dell'integrazione.
  2. Incolla la stringa con codifica Base64 nel campo File certificato CA.
  3. Seleziona la casella di controllo Verifica SSL.
  4. Fai clic su Test per verificare che l'integrazione sia configurata correttamente.

Parametri di integrazione

L'integrazione di OpenSearch richiede i seguenti parametri:

Parametro Descrizione
Server Address

Obbligatorio.

L'URL dell'endpoint dell'istanza OpenSearch, inclusi il protocollo e la porta (ad esempio, https://10.0.0.1:9200).

Username

Facoltativo.

Il nome utente utilizzato per l'autenticazione con l'istanza OpenSearch.

Password

Facoltativo.

La password associata al nome utente specificato.

API Token

Facoltativo.

Il token API utilizzato per l'autenticazione in alternativa a un nome utente e una password.

Authenticate

Facoltativo.

Se selezionata, l'integrazione autentica la connessione al server OpenSearch utilizzando le credenziali fornite.

Verify SSL

Facoltativo.

Se selezionata, l'integrazione convalida il certificato SSL quando si connette al server OpenSearch.

CA Certificate File

Facoltativo.

Il contenuto del file del certificato dell'autorità di certificazione (CA) in formato PEM, utilizzato per verificare il certificato SSL del server.

Per istruzioni su come configurare un'integrazione in Google SecOps, consulta Configurare le integrazioni.

Se necessario, potrai apportare modifiche in un secondo momento. Dopo aver configurato un'istanza di integrazione, puoi utilizzarla nei playbook. Per saperne di più su come configurare e supportare più istanze, consulta Supportare più istanze.

Azioni

Per ulteriori informazioni sulle azioni, vedi Rispondere alle azioni in attesa dalla tua scrivania e Eseguire un'azione manuale.

Utilizza l'azione Ricerca avanzata ES per eseguire una query di ricerca preconfigurata sul server OpenSearch e recuperare i risultati in formato dizionario.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

L'azione Ricerca avanzata ES richiede i seguenti parametri:

Parametro Descrizione
Index

Facoltativo.

Il pattern di ricerca per l'indice OpenSearch (ad esempio, smp_playbooks-2019.06.13). Puoi utilizzare i caratteri jolly per cercare più indici (ad esempio, smp_playbooks-*).

Il valore predefinito è *.

Query

Facoltativo.

La query di ricerca da eseguire utilizzando la sintassi di Lucene (ad esempio, level:error OR level:warning).

Il valore predefinito è *.

Limit

Facoltativo.

Il numero massimo di documenti da restituire. Imposta questo valore su 0 per non specificare un limite.

Il valore predefinito è 100.

Display Field

Facoltativo.

Un elenco separato da virgole di campi specifici da restituire.

Il valore predefinito è * e restituisce tutti i campi.

Search Field

Facoltativo.

Il campo specifico in cui eseguire la ricerca quando Query non include un nome del campo di destinazione. Questo funge da target di ricerca predefinito per le query di testo libero.

Il valore predefinito è _all, che esegue la ricerca in tutti i campi indicizzati.

Timestamp Field

Facoltativo.

Il nome del campo utilizzato per il filtro basato sul tempo.

Se sia Earliest Date che Oldest Date sono vuoti, l'azione non esegue il filtraggio in base al tempo.

Il valore predefinito è @timestamp.

Oldest Date

Facoltativo.

La data di inizio della ricerca. L'azione restituisce i record che si sono verificati in questa data e ora o dopo.

Puoi fornire un timestamp UTC esatto (YYYY-MM-DDTHH:MM:SSZ) o una data relativa (ad esempio, now-1d).

Il valore predefinito è now-1d.

Earliest Date

Facoltativo.

La data di fine della ricerca. L'azione restituisce record che si sono verificati in data o prima di questo timestamp.

Puoi fornire un timestamp UTC esatto (YYYY-MM-DDTHH:MM:SSZ) o una data relativa (ad esempio, now).

Il valore predefinito è now.

Output dell'azione

L'azione Ricerca avanzata ES fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca casi Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Non disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato dello script

La tabella seguente elenca il valore dell'output del risultato dello script quando utilizzi l'azione Ricerca ES avanzata:

Nome del risultato dello script Valore
results RESULTS

Utilizza l'azione DSL Search per eseguire una ricerca completa in tutti gli indici OpenSearch e recuperare i risultati in formato dizionario.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

L'azione Ricerca DSL richiede i seguenti parametri:

Parametro Descrizione
Index

Facoltativo.

Il pattern di ricerca per l'indice OpenSearch (ad esempio, smp_playbooks-2019.06.13). Puoi utilizzare i caratteri jolly per cercare più indici (ad esempio, smp_playbooks-*).

Il valore predefinito è *.

Query

Facoltativo.

La query di ricerca da eseguire utilizzando la sintassi di Lucene (ad esempio, level:error OR level:warning).

Il valore predefinito è *.

Limit

Facoltativo.

Il numero massimo di documenti da restituire. Imposta questo valore su 0 per non specificare un limite.

Il valore predefinito è 100.

Output dell'azione

L'azione Ricerca DSL fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca casi Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato JSON

L'esempio seguente mostra l'output del risultato JSON ricevuto quando si utilizza l'azione DSL Search:

[
    {
        "_score": 0.2876821,
        "_type": "person",
        "_id": "2",
        "_source": {
            "lastname": "Smith",
            "name": "John",
            "job_description": "Systems administrator"
        },
        "_index": "accounts"
    }, {
        "_score": 0.28582606,
        "_type": "person",
        "_id": "1",
        "_source":
        {
            "lastname": "Doe",
            "name": "John",
            "job_description": "Systems administrator and Linux specialist"
        },
        "_index": "accounts"
    }
]
Risultato dello script

La seguente tabella elenca il valore dell'output del risultato dello script quando utilizzi l'azione Ricerca DSL:

Nome del risultato dello script Valore
results RESULTS

Dindin

Utilizza l'azione Ping per testare la connettività a OpenSearch.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

Nessuno.

Output dell'azione

L'azione Ping fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca casi Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Non disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato dello script

La seguente tabella elenca il valore dell'output del risultato dello script quando utilizzi l'azione Ping:

Nome del risultato dello script Valore
is_success true o false

Utilizza l'azione Ricerca ES semplice per eseguire una ricerca di base in tutti i campi indicizzati in OpenSearch e recuperare i risultati in formato dizionario.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

L'azione Ricerca ES semplice richiede i seguenti parametri:

Parametro Descrizione
Index

Facoltativo.

Il pattern di ricerca per l'indice OpenSearch (ad esempio, smp_playbooks-2019.06.13). Puoi utilizzare i caratteri jolly per cercare più indici (ad esempio, smp_playbooks-*).

Il valore predefinito è *.

Query

Facoltativo.

La query di ricerca da eseguire utilizzando la sintassi di Lucene (ad esempio, level:error OR level:warning).

Il valore predefinito è *.

Limit

Facoltativo.

Il numero massimo di documenti da restituire. Imposta questo valore su 0 per non specificare un limite.

Il valore predefinito è 100.

Output dell'azione

L'azione Ricerca ES semplice fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca casi Non disponibile
Link alla bacheca casi Non disponibile
Tabella della bacheca casi Non disponibile
Tabella di arricchimento Non disponibile
Risultato JSON Disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato JSON

Il seguente esempio mostra l'output del risultato JSON ricevuto quando si utilizza l'azione Ricerca ES semplice:

[{
    "_score": 0.2876821,
    "_type": "person",
    "_id": "2",
    "_source":
        {
          "lastname": "Smith",
          "name": "John",
          "job_description": "Systems administrator"
         },
     "_index": "accounts"
 },
 {
     "_score": 0.28582606,
     "_type": "person",
     "_id": "1",
     "_source":
       {
         "lastname": "Doe",
         "name": "John",
         "job_description": "Systems administrator and Linux specialist"
       },
    "_index": "accounts"
  }
 ]
Risultato dello script

La tabella seguente elenca il valore dell'output del risultato dello script quando utilizzi l'azione Ricerca ES semplice:

Nome del risultato dello script Valore
results RESULTS

Connettori

Per saperne di più su come configurare i connettori in Google SecOps, consulta Importare i dati (connettori).

Connettore OpenSearch

Utilizza il connettore OpenSearch per cercare indici OpenSearch specifici con una query Lucene fornita e inserire i documenti come avvisi in Google SecOps.

Input del connettore

Il connettore OpenSearch richiede i seguenti parametri:

Parametro Descrizione
Product Field Name

Obbligatorio.

Il nome del campo in cui è memorizzato il nome del prodotto.

Il nome del prodotto influisce principalmente sulla mappatura. Per semplificare e migliorare la procedura di mappatura per il connettore, il valore predefinito viene risolto in un valore di riserva a cui viene fatto riferimento dal codice. Per impostazione predefinita, qualsiasi input non valido per questo parametro viene risolto in un valore di riserva.

Il valore predefinito è Product Name.

Event Field Name

Obbligatorio.

Il nome del campo che determina il nome (sottotipo) dell'evento.

Il valore predefinito è name.

Script Timeout (Seconds)

Obbligatorio.

Il limite di timeout, in secondi, per il processo Python che esegue lo script corrente.

Il valore predefinito è 180.

Server Address

Obbligatorio.

L'URL dell'endpoint dell'istanza OpenSearch, inclusi il protocollo e la porta (ad esempio, https://10.0.0.1:9200).

Username

Facoltativo.

Il nome utente utilizzato per l'autenticazione con l'istanza OpenSearch.

Password

Facoltativo.

La password associata al nome utente specificato.

Authenticate

Facoltativo.

Se selezionata, l'integrazione autentica la connessione al server OpenSearch utilizzando le credenziali fornite.

API Token

Facoltativo.

Il token API utilizzato per l'autenticazione in alternativa a un nome utente e una password.

Verify SSL

Facoltativo.

Se selezionata, l'integrazione convalida il certificato SSL quando si connette al server OpenSearch.

Alert Name Field

Obbligatorio.

Il nome del campo che contiene il nome dell'avviso (ad esempio, _source_alert_info_alert).

Timestamp Field

Obbligatorio.

Il nome del campo che contiene il timestamp (ad esempio, _source_@timestamp).

Environment Field Name

Facoltativo.

Il nome del campo in cui è memorizzato il nome dell'ambiente.

Se il campo ambiente non è presente, il connettore utilizza il valore predefinito.

Il valore predefinito è "".

Indexes

Facoltativo.

Il pattern di indice da cercare. Utilizza * per eseguire ricerche in tutti gli indici.

Query

Facoltativo.

La query di ricerca da eseguire utilizzando la sintassi Lucene.

Alerts Count Limit

Obbligatorio.

Il numero massimo di avvisi da recuperare in un singolo ciclo.

Il valore predefinito è 20.

Max Days Backwards

Obbligatorio.

Il numero di giorni precedenti a oggi per recuperare gli avvisi.

Questo parametro può essere applicato all'iterazione iniziale del connettore dopo l'attivazione del connettore per la prima volta o al valore di riserva per un timestamp del connettore scaduto.

Il valore predefinito è 1.

Severity Field Name

Facoltativo.

Il nome del campo utilizzato per estrarre il valore di gravità dell'avviso.

Se il campo contiene valori numerici (numeri interi o in virgola mobile), il connettore li mappa automaticamente ai livelli di gravità di Google SecOps (ad esempio, 100 è Critical). Se il campo contiene valori stringa, devi definire le regole di mappatura nel file severity_map_config.json.

Proxy Server Address

Facoltativo.

L'indirizzo del server proxy da utilizzare.

Proxy Username

Facoltativo.

Il nome utente utilizzato per l'autenticazione con il server proxy.

Proxy Password

Facoltativo.

La password utilizzata per l'autenticazione con il server proxy.

Environment Regex Pattern

Facoltativo.

Un pattern di espressione regolare da eseguire sul valore trovato nel campo Environment Field Name. Questo parametro ti consente di manipolare il campo dell'ambiente utilizzando la logica delle espressioni regolari.

Utilizza il valore predefinito .* per recuperare il valore Environment Field Name grezzo richiesto.

Se il pattern dell'espressione regolare è nullo o vuoto oppure il valore dell'ambiente è nullo, il risultato finale dell'ambiente è l'ambiente predefinito.

Connettore OpenSearch DSL

Utilizza il connettore OpenSearch DSL per importare i documenti come avvisi in Google SecOps effettuando chiamate API REST utilizzando query DSL (Domain Specific Language).

Input del connettore

Il connettore DSL OpenSearch richiede i seguenti parametri:

Parametro Descrizione
Product Field Name

Obbligatorio.

Il nome del campo in cui è memorizzato il nome del prodotto.

Il nome del prodotto influisce principalmente sulla mappatura. Per semplificare e migliorare la procedura di mappatura per il connettore, il valore predefinito viene risolto in un valore di riserva a cui viene fatto riferimento dal codice. Per impostazione predefinita, qualsiasi input non valido per questo parametro viene risolto in un valore di riserva.

Il valore predefinito è Product Name.

Il valore predefinito è device_product.

Event Field Name

Obbligatorio.

Il nome del campo che determina il nome (sottotipo) dell'evento.

Il valore predefinito è name.

Script Timeout (Seconds)

Obbligatorio.

Il limite di timeout, in secondi, per il processo Python che esegue lo script corrente.

Il valore predefinito è 60.

Server Address

Obbligatorio.

L'URL dell'endpoint dell'istanza OpenSearch, incluso il protocollo (ad esempio https://10.0.0.1).

Port

Obbligatorio.

La porta utilizzata per connettersi al server API OpenSearch.

Query

Obbligatorio.

La query DSL utilizzata per la ricerca in formato JSON.

Per migliorare la stabilità del connettore, ti consigliamo di includere una chiave timestamp di ordinamento in ordine crescente all'interno della query.

Index

Obbligatorio.

L'indice utilizzato per la ricerca. Utilizza _all per eseguire ricerche in tutti gli indici.

Timestamp Field

Obbligatorio.

Il nome del campo che contiene il timestamp (ad esempio, _source_@timestamp).

Alert Field Name

Obbligatorio.

Il nome del campo che contiene il nome dell'avviso (ad esempio, _source_info_alertname).

Description Field

Facoltativo.

Il nome del campo che contiene la descrizione dell'avviso (ad esempio, _source_alert_info_description).

Severity

Obbligatorio.

Il livello di gravità statico da assegnare a tutti gli avvisi importati. Questo parametro viene utilizzato se Alert Severity e Severity Field Name sono vuoti.

Il valore predefinito è Medium.

Alert Severity

Facoltativo.

La gravità da assegnare agli avvisi. Questo parametro ha la priorità su Severity Field Name.

Se vuoi utilizzare la mappatura dinamica utilizzando Severity Field Name, lascia vuoto questo campo.

Severity Field Name

Facoltativo.

Il nome del campo utilizzato per estrarre il valore di gravità dell'avviso.

Se il campo contiene valori numerici (numeri interi o in virgola mobile), il connettore li mappa automaticamente ai livelli di gravità di Google SecOps (ad esempio, 100 è Critical). Se il campo contiene valori stringa, devi definire le regole di mappatura nel file severity_map_config.json.

Alerts Count Limit

Facoltativo.

Il numero massimo di avvisi da recuperare in un singolo ciclo.

Il valore predefinito è 100.

Authenticate

Facoltativo.

Se selezionato, il connettore autentica la connessione utilizzando le credenziali fornite.

Username

Facoltativo.

Il nome utente utilizzato per l'autenticazione con l'istanza OpenSearch.

Password

Facoltativo.

La password utilizzata per l'autenticazione con l'istanza OpenSearch.

Use SSL

Facoltativo.

Se selezionato, il connettore abilita una connessione SSL/TLS al server.

Proxy Server Address

Facoltativo.

L'indirizzo del server proxy da utilizzare per la connessione.

Proxy Username

Facoltativo.

Il nome utente utilizzato per l'autenticazione con il server proxy.

Proxy Password

Facoltativo.

La password utilizzata per l'autenticazione con il server proxy.

Environment Field Name

Facoltativo.

Il nome del campo in cui è memorizzato il nome dell'ambiente.

Se il campo ambiente non è presente, il connettore utilizza il valore predefinito.

Il valore predefinito è "".

Environment Regex Pattern

Facoltativo.

Un pattern di espressione regolare da eseguire sul valore trovato nel campo Environment Field Name. Questo parametro ti consente di manipolare il campo dell'ambiente utilizzando la logica delle espressioni regolari.

Utilizza il valore predefinito .* per recuperare il valore Environment Field Name grezzo richiesto.

Se il pattern dell'espressione regolare è nullo o vuoto oppure il valore dell'ambiente è nullo, il risultato finale dell'ambiente è l'ambiente predefinito.

Il valore predefinito è .*.

Supporto della notazione

Il connettore supporta tre diverse notazioni per la mappatura dei campi. Ad esempio, per mappare event.type, puoi fornire _source_event_type, event_type o event.type.

Ciò si applica ai seguenti parametri:

  • Product Field Name
  • Event Field Name
  • Severity Field Name
  • Environment Field Name
  • Timestamp Field
  • Alert Field Name
  • Description Field (solo connettore DSL)

Come mappare la gravità nel connettore

Se Severity Field Name contiene valori numerici (interi o numeri in virgola mobile), il connettore li mappa nel seguente modo:

  • Critica: 100
  • Alto: 80 ≤ x < 100
  • Medio: 60 ≤ x < 80
  • Basso: 40 ≤ x < 60
  • Informativo: x < 40

Per i valori stringa, devi aggiornare il file severity_map_config.json nella cartella degli script del connettore.

Configurazione di esempio

Per mappare un campo event.severity contenente "Malicious", "Unknown" o "Benign":

  1. Inserisci event.severity nel parametro Nome campo gravità.
  2. Aggiornamento severity_map_config.json:
{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

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