Integra OpenSearch con Google SecOps

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 della sicurezza:

  • Caccia alle minacce automatizzata: esegui ricerche periodiche in tutti gli indici OpenSearch per individuare indicatori di compromissione (IoC) specifici o pattern sospetti utilizzando query Lucene e DSL.

  • Importazione centralizzata degli avvisi: importa i documenti da OpenSearch come avvisi utilizzabili in Google SecOps, assicurandoti che gli eventi di sicurezza del tuo data lake vengano classificati in ordine di priorità ed esaminati.

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

  • Mappatura dei dati flessibile: mappa dinamicamente i livelli di gravità e i tag dell'ambiente dai documenti OpenSearch agli standard di Google SecOps per mantenere la coerenza tra le diverse origini dei 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 di OpenSearch.

  • Certificato con codifica Base64: i contenuti del file del certificato CA devono essere convertiti 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 CA Certificate File (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 durante la connessione 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 Configura le integrazioni.

Se necessario, puoi 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 Supporto di più istanze.

Azioni

Per saperne di più sulle azioni, consulta Rispondi alle azioni in attesa dalla scrivania di lavoro ed Esegui un'azione manuale nel tuo caso.

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

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

L'azione Advanced ES Search 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 eseguire ricerche in più indici (ad esempio, smp_playbooks-*).

Il valore predefinito è *.

Query

Facoltativo.

La query di ricerca da eseguire utilizzando la sintassi 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 impostare alcun 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 da cercare quando Query non include un nome di 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 i filtri basati sul tempo.

Se sia Earliest Date che Oldest Date sono vuoti, l'azione non esegue il filtro basato sul tempo.

Il valore predefinito è @timestamp.

Oldest Date

Facoltativo.

La data di inizio della ricerca. L'azione restituisce i record che si sono verificati in corrispondenza o dopo questo timestamp.

Puoi fornire un timestamp UTC esatto (YYYY-MM-DDTHH:MM:SSZ) o un calcolo con le date relativo (ad esempio, now-1d).

Il valore predefinito è now-1d.

Earliest Date

Facoltativo.

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

Puoi fornire un timestamp UTC esatto (YYYY-MM-DDTHH:MM:SSZ) o un calcolo con le date relativo (ad esempio, now).

Il valore predefinito è now.

Output azione

L'azione Ricerca ES avanzata fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca richieste 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 per l'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 un formato dizionario.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

L'azione DSL Search 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 eseguire ricerche in più indici (ad esempio, smp_playbooks-*).

Il valore predefinito è *.

Query

Facoltativo.

La query di ricerca da eseguire utilizzando la sintassi 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 impostare alcun limite.

Il valore predefinito è 100.

Output azione

L'azione DSL Search fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca richieste 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 utilizzi 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 tabella seguente elenca il valore per l'output del risultato dello script quando utilizzi l'azione DSL Search:

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 azione

L'azione Ping fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca richieste 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 per l'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 un 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 eseguire ricerche in più indici (ad esempio, smp_playbooks-*).

Il valore predefinito è *.

Query

Facoltativo.

La query di ricerca da eseguire utilizzando la sintassi 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 impostare alcun limite.

Il valore predefinito è 100.

Output azione

L'azione Ricerca ES semplice fornisce i seguenti output:

Tipo di output dell'azione Disponibilità
Allegato della bacheca richieste 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 utilizzi 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 per l'output del risultato dello script quando utilizzi l'azione Ricerca ES semplice:

Nome del risultato dello script Valore
results RESULTS

Connettori

Per scoprire di più sulla configurazione dei connettori in Google SecOps, consulta Importa i dati (connettori).

Connettore OpenSearch

Utilizza il connettore OpenSearch per eseguire ricerche negli indici OpenSearch specificati con una query Lucene fornita e importare 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 il processo di mappatura per il connettore, il valore predefinito viene risolto in un valore di riserva a cui viene fatto riferimento dal codice. Qualsiasi input non valido per questo parametro viene risolto in un valore di riserva per impostazione predefinita.

Il valore predefinito è Product Name.

Event Field Name

Obbligatorio.

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

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 durante la connessione 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 dell'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 estrarre 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 della gravità per l'avviso.

Se il campo contiene valori numerici (numeri interi o con virgola mobile), il connettore li mappa automaticamente ai livelli di gravità di Google SecOps (ad esempio, 100 è Critical). Se il campo contiene valori di 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 consente di manipolare il campo dell'ambiente utilizzando la logica delle espressioni regolari.

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

Se il pattern dell'espressione regolare è nullo o vuoto o se 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 OpenSearch DSL 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 il processo di mappatura per il connettore, il valore predefinito viene risolto in un valore di riserva a cui viene fatto riferimento dal codice. Qualsiasi input non valido per questo parametro viene risolto in un valore di riserva per impostazione predefinita.

Il valore predefinito è Product Name.

Il valore predefinito è device_product.

Event Field Name

Obbligatorio.

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

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, è consigliabile includere una chiave di timestamp di ordinamento in ordine crescente nella 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 con Severity Field Name, lascia vuoto questo campo.

Severity Field Name

Facoltativo.

Il nome del campo utilizzato per estrarre il valore della gravità per l'avviso.

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

Alerts Count Limit

Facoltativo.

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

Il valore predefinito è 100.

Authenticate

Facoltativo.

Se questa opzione è selezionata, 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 selezionata, 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 dell'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 consente di manipolare il campo dell'ambiente utilizzando la logica delle espressioni regolari.

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

Se il pattern dell'espressione regolare è nullo o vuoto o se 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.

Questo vale per i 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 (numeri interi o con virgola mobile), il connettore li mappa come segue:

  • Critica: 100
  • Alta: 80 ≤ x < 100
  • Medio: 60 ≤ x < 80
  • Basso: 40 ≤ x < 60
  • Informative: x < 40

Per i valori di 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. Aggiorna 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.