ElasticsearchV7

Versione integrazione: 17.0

Configurare ElasticsearchV7 in modo che funzioni con Google Security Operations

Come creare un token API

Per creare un nuovo token API, esegui la seguente richiesta:

curl --location --request POST 'http://<server address>:<port>/_security/api_key' \
--header 'Authorization: Basic Base64(username, password)' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "siemplify-integration",
    "role_descriptors": {}
}':

Esempio di risposta:

{
  "id": "G1NIWnI",
  "name": "siemplify-integration",
  "api_key": "dSwyjWJ_Ql"
}
  1. Prendiamo i parametri "id" e "api_key" dalla risposta.
  2. Utilizza la codifica Base64 di "id" e "api_key" uniti da due punti, ad esempio "id:api_key".
  3. Il risultato viene utilizzato come token API nell'integrazione.

Accedere a Elasticsearch

Google SecOps accede a Elasticsearch tramite l'API RESTful sulla porta TCP 9200 per impostazione predefinita. Il server Google SecOps dovrà accedere ai nodi Elasticsearch pertinenti sulla porta TCP 9200 (predefinita) o su una porta alternativa se la porta predefinita non è stata utilizzata durante il deployment di Elasticsearch.

Configurare l'integrazione di ElasticsearchV7 in Google SecOps

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

Configurare l'integrazione di Elasticsearch con un certificato CA

Se necessario, puoi verificare la connessione con un file del certificato CA.

Prima di iniziare, assicurati di avere quanto segue:

  • Il file del certificato CA
  • L'ultima versione dell'integrazione Elasticsearch

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

  1. Analizza il file del certificato CA in una stringa Base64.
  2. Apri la pagina dei parametri di configurazione dell'integrazione.
  3. Inserisci la stringa nel campo File certificato CA.
  4. Per verificare che l'integrazione sia configurata correttamente, seleziona la casella di controllo Verifica SSL e fai clic su Test.

Parametri di integrazione

Utilizza i seguenti parametri per configurare l'integrazione:

Nome visualizzato del parametro Tipo Valore predefinito È obbligatorio Descrizione
Nome istanza Stringa N/D No Nome dell'istanza per cui intendi configurare l'integrazione.
Descrizione Stringa N/D No Descrizione dell'istanza.
Indirizzo del server Stringa x.x.x.x Indirizzo IP del server Elasticsearch 7.0.0.
Nome utente Stringa N/D L'indirizzo email dell'utente da utilizzare per connettersi a Elasticsearch 7.0.0.
Password Password N/D La password dell'utente corrispondente.
Token API Password N/D No Token API XPack di Elasticsearch.
Autentica Casella di controllo Deselezionata No N/D
Verifica SSL Casella di controllo Deselezionata No Utilizza questa casella di controllo se la connessione Elasticsearch 7.0.0 richiede una verifica SSL (non selezionata per impostazione predefinita).
File del certificato CA Stringa N/D No File del certificato CA.
Esegui da remoto Casella di controllo Deselezionata No Seleziona il campo per eseguire l'integrazione configurata da remoto. Una volta selezionata, viene visualizzata l'opzione per selezionare l'utente remoto (agente).

Azioni

Descrizione

Un test Elasticsearch predefinito che restituisce un dizionario di parole.

Parametri

Parametri Tipo Valore predefinito Descrizione
Indice Stringa *

Pattern di ricerca per un indice Elasticsearch.

In Elastic, l'indice è come un nome di database e i dati vengono archiviati in vari indici.Questo parametro definisce in quali indici eseguire la ricerca. Può essere un nome esatto, ad esempio "smp_playbooks-2019.06.13", oppure puoi utilizzare un carattere jolly per eseguire la ricerca in base a un pattern, ad esempio "smp_playbooks-2019.06 "o "smp".

Per saperne di più sugli indici Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index

Query Stringa *

La query di ricerca da eseguire. È in sintassi Lucene.

IE1: "*" (questo è un carattere jolly che restituirà tutti i record)

IE2: "level:error"

IE3: "level:information"

IE4: "level:error OR level:warning"

Per scoprire di più sulla sintassi di Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

Limite Stringa 100

Limita il conteggio dei documenti restituiti, ad esempio 10.

0 = Nessun limite.

Campo visualizzato Stringa *

Limita i campi restituiti. Il valore predefinito "*" = Restituisce tutti i campi.

Puoi indicare un singolo campo, ad esempio "livello".

Campo di ricerca Stringa _all

Campo di ricerca per query di testo libero (quando la query non specifica un nome di campo).

Il valore predefinito è "_all", il che significa che la ricerca viene eseguita in tutti i campi. È consigliabile utilizzare la sintassi Lucene corretta nei campi "_all" o la ricerca testuale in un campo specifico.

Esempio 1: Campo di ricerca = "_all". Query = "level:error". La query restituirà tutti i record in cui il campo "level" è uguale a "error".

Esempio 2: Campo di ricerca = "Message", query = "Login Alarm". La query restituirà tutti i record il cui campo "Messaggio" contiene il testo "Login Alarm".

Campo timestamp Stringa @timestamp Il nome del campo su cui eseguire il filtro basato sul tempo. Il valore predefinito è @timestamp. Se sia la data meno recente che la data più recente sono vuote, non verrà applicato alcun filtro basato sul tempo.
Data meno recente Stringa now-1d

Data di inizio della ricerca. La ricerca restituirà solo i record uguali o successivi a questo punto nel tempo.

L'input può essere in UTC esatto:

Formato: AAAA-MM-GGTHH:MM:SSZ

ad es. 2019-06-04T10:00:00Z

L'input può anche essere in forma relativa (utilizzando la matematica delle date): tie: "now", "now-1d", "now-1d/d", "now-2h/h"

Per saperne di più sulla matematica delle date, visita la pagina https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

Data meno recente Stringa ora

Data di fine della ricerca. La ricerca restituirà solo i record uguali o precedenti a questo punto nel tempo.

L'input può essere in UTC esatto:

Formato: AAAA-MM-GGTHH:MM:SSZ

ad es. 2019-06-04T10:00:00Z

L'input può anche essere in forma relativa (utilizzando date-math):

ad esempio: "now", "now-1d", "now-1d/d", "now-2h/h"

Per saperne di più sulla matematica delle date, visita la pagina https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

Run On

Questa azione viene eseguita su tutte le entità.

Risultati dell'azione

Risultato script
Nome risultato script Opzioni di valore Esempio
risultati N/D N/D

Descrizione

Esegue ricerche in tutti i contenuti di Elasticsearch e restituisce i risultati in un formato di dizionario. Questa azione supporta solo le query senza intervallo di tempo. Se vuoi utilizzare l'intervallo di tempo nella query, utilizza l'azione Ricerca avanzata ES.

Parametri

Parametri Tipo Valore predefinito Descrizione
Indice Stringa *

Pattern di ricerca per un indice Elasticsearch.

In Elasticsearch, l'indice è come un DatabaseName e i dati vengono archiviati in vari indici.

Questo parametro definisce in quali indici eseguire la ricerca. Può essere un nome esatto, ad esempio "smp_playbooks-2019.06.13"\r\no puoi utilizzare un carattere jolly () per cercare in base a un pattern, ad esempio "smp_playbooks-2019.06" o "smp*".

Per saperne di più sugli indici Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index

Query Stringa *

La query di ricerca da eseguire. È in sintassi Lucene.

IE1: \"*\" (questo è un carattere jolly che restituirà tutti i record)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Per scoprire di più sulla sintassi di Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

Limite Stringa 100

Limita il conteggio dei documenti restituiti, ad esempio 10.

0 = Nessun limite

Run On

Questa azione viene eseguita su tutte le entità.

Risultati dell'azione

Risultato script
Nome risultato script Opzioni di valore Esempio
risultati N/D N/D
Risultato JSON
[
    {
        "_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"
    }
]

Dindin

Descrizione

Il test verifica la connettività al server Elasticsearch.

Parametri

N/D

Run On

Questa azione viene eseguita su tutte le entità.

Risultati dell'azione

Risultato script
Nome risultato script Opzioni di valore Esempio
is_success Vero/Falso is_success:False

Descrizione

Action esegue ricerche in tutti i contenuti di Elasticsearch e restituisce i risultati in un formato di dizionario.

Parametri

Parametri Tipo Valore predefinito Descrizione
Indice Stringa *

Pattern di ricerca per un indice Elasticsearch.

In Elasticsearch, l'indice è come un DatabaseName e i dati vengono archiviati in vari indici.

Questo parametro definisce in quali indici eseguire la ricerca. Può essere un nome esatto, ad esempio "smp_playbooks-2019.06.13", oppure puoi utilizzare un carattere jolly () per eseguire la ricerca in base a un pattern, ad esempio "smp_playbooks-2019.06" o "smp*".

Per saperne di più sugli indici Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index

Query Stringa *

La query di ricerca da eseguire. È in sintassi Lucene.

IE1: \"*\" (questo è un carattere jolly che restituirà tutti i record)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Per scoprire di più sulla sintassi di Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

Limite Stringa 100

Limita il conteggio dei documenti restituiti, ad esempio 10.

0 = Nessun limite.

Run On

Questa azione viene eseguita su tutte le entità.

Risultati dell'azione

Risultato script
Nome risultato script Opzioni di valore Esempio
risultati N/D N/D
Risultato JSON
[{
    "_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"
  }
 ]

Connettori

Configura i connettori Elasticsearch v7 in Google SecOps

Per istruzioni dettagliate su come configurare un connettore in Google SecOps, vedi Configurazione del connettore.

Per configurare il connettore selezionato, utilizza i parametri specifici del connettore elencati nelle tabelle seguenti:

Connettore Elasticsearch

Descrizione

Questo argomento mostra come Google SecOps integra Elasticsearch con il meccanismo e la configurazione per l'importazione e l'elaborazione.

Inoltro degli avvisi di Elasticsearch a Google SecOps

Google SecOps cercherà gli indici Elasticsearch specificati con una query fornita (utilizzando la sintassi di query Lucene) e restituirà i documenti Elasticsearch che verranno tradotti e contestualizzati come "avvisi" per i casi.

Parametri del connettore

Utilizza i seguenti parametri per configurare il connettore:

Nome visualizzato del parametro Tipo Valore predefinito È obbligatorio Descrizione
Ambiente predefinito Stringa N/D No Seleziona l'ambiente richiesto. Ad esempio, "Cliente 1".
Esegui ogni Numero intero 0:0:0:10 No Seleziona il periodo di tempo per l'esecuzione della connessione. Ad esempio, "tutti i giorni".
Nome campo prodotto Stringa device_product Il nome del campo utilizzato per determinare il prodotto del dispositivo. Esempio: _type.
Nome campo evento Stringa nome Il nome del campo utilizzato per determinare il nome dell'evento (sottotipo). Esempio: _source_match_event_id.
Timeout dello script (secondi) Stringa 60 Il limite di timeout (in secondi) per il processo Python che esegue lo script corrente.
Indirizzo del server Stringa N/D L'indirizzo del server Elasticsearch, ad esempio http://{ip_address}:{port}
Nome utente Stringa N/D Nome utente Elasticsearch.
Password Password N/D Password Elasticsearch.
Autentica Casella di controllo Deselezionata No Indica se eseguire o meno l'autenticazione durante la connessione.
Token API Password N/D No Token API XPack di Elasticsearch.
Verifica SSL Casella di controllo Deselezionata No Indica se utilizzare o meno SSL per la connessione.
Campo Nome avviso Stringa N/D Il nome del campo in cui si trova il nome dell'avviso (percorso del campo piatto). Esempio: _source_alert_info_alert
Campo timestamp Stringa N/D Il nome del campo in cui si trova il timestamp (percorso del campo piatto). Esempio: source@timestamp
Campo Ambiente Stringa N/D No Il nome del campo in cui si trova l'ambiente (percorso del campo piatto). Esempio: _source_environment
Indici Stringa N/D No Pattern di indice in base a cui eseguire la ricerca. Esempio: '*'
Query Stringa N/D No Query con pattern di ricerca (sintassi delle query Lucene). Esempio: '*'
Limite conteggio avvisi Numero intero 20 Numero massimo di avvisi da recuperare in un ciclo. Esempio: 20.
Max Days Backwards Numero intero 1 Numero massimo di giorni da cui recuperare gli avvisi. Esempio: 3.
Mappatura campo gravità Stringa N/D No Il nome del campo in cui è memorizzato il valore di gravità.
Indirizzo del server proxy Stringa N/D No L'indirizzo del server proxy da utilizzare.
Nome utente proxy Stringa N/D No Il nome utente del proxy con cui eseguire l'autenticazione.
Password proxy Password N/D No La password del proxy per l'autenticazione.
Nome campo gravità Stringa N/D No Se vuoi mappare la gravità in base al valore della stringa, devi creare un file di mappatura. Per ulteriori dettagli, consulta il portale della documentazione.
Pattern regex ambiente Stringa .* No

Un pattern regex da eseguire sul valore trovato nel campo "Nome campo ambiente".

Il valore predefinito è .* per acquisire tutto e restituire il valore invariato.

Utilizzato per consentire all'utente di manipolare il campo dell'ambiente tramite la logica delle espressioni regolari

Se il pattern regex è null o vuoto oppure il valore dell'ambiente è null, il risultato finale dell'ambiente è "".

Come mappare la gravità nel connettore

Per mappare la gravità, devi specificare quale campo deve essere utilizzato per ottenere il valore della gravità nel parametro "Nome campo gravità". Nella risposta puoi ottenere tre tipi di valori: numeri interi, numeri in virgola mobile e stringhe. Per i numeri interi e in virgola mobile, non è necessaria alcuna configurazione aggiuntiva. Il connettore leggerà questi valori e li mapperà in base agli standard Google SecOps. Un breve promemoria su come vengono mappati i valori interi:

  • 100 - Critico
  • 100 > x >= 80 Alto
  • 80 > x >=60 Medio
  • 60 > x >=40 Bassa
  • 40 > x Informazioni

Se nella risposta utilizziamo stringhe, è necessaria una configurazione aggiuntiva. Nella cartella in cui si trovano gli script del connettore, avrai un file di configurazione denominato severity_map_config.json. Questo file definisce le regole di mappatura per la gravità.

Inizialmente, il file avrà questo aspetto:

{
    "Default": 50
}

Immagina una situazione in cui i valori necessari si trovano in event.severity. event.severity può contenere i seguenti valori: "Malicious", "Benign", "Unknown".

Innanzitutto, dobbiamo specificare nel parametro "Severity Field Name" che utilizzeremo event.severity.

In secondo luogo, dobbiamo aggiornare il file di configurazione.

Dopo le modifiche, il file severity_map_config.json dovrebbe avere il seguente aspetto:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

Ora, quando il connettore riceverà un evento con event.severity = "Malicious", gli verrà assegnata la gravità Critica.

Regole del connettore

Whitelist/Blacklist

Il connettore non supporta l'elenco consentito/bloccato.

Supporto del proxy

Il connettore supporta il proxy.

Connettore DSL Elasticsearch

Descrizione

Il connettore funziona effettuando una chiamata API REST con una query DSL.

Casi d'uso ed esempi

Possibilità di utilizzare le query DSL come parametro di ricerca in Elasticsearch.

Parametri del connettore

Utilizza i seguenti parametri per configurare il connettore:

Nome visualizzato del parametro Tipo Valore predefinito È obbligatorio Descrizione
Ambiente predefinito Stringa N/D No Seleziona l'ambiente richiesto. Ad esempio, "Cliente 1".
Esegui ogni Numero intero 0:0:0:10 No Seleziona il periodo di tempo per l'esecuzione della connessione. Ad esempio, "tutti i giorni".
Nome campo prodotto Stringa device_product Descrive il nome del campo in cui è memorizzato il nome del prodotto.
Nome campo ambiente Stringa "" No

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

Se il campo dell'ambiente non viene trovato, l'ambiente è "".

Pattern regex ambiente Stringa .* No

Un pattern regex da eseguire sul valore trovato nel campo "Nome campo ambiente".

Il valore predefinito è .* per acquisire tutto e restituire il valore invariato.

Utilizzato per consentire all'utente di manipolare il campo dell'ambiente tramite la logica delle espressioni regolari

Se il pattern regex è null o vuoto oppure il valore dell'ambiente è null, il risultato finale dell'ambiente è "".

Timeout dello script (secondi) Numero intero 60 Limite di timeout per il processo Python che esegue lo script corrente.
Indirizzo del server Stringa N/D Indirizzo IP del server API Elasticsearch.
Porta Stringa N/D Porta del server API Elasticsearch.
Query Stringa N/D

Query DSL utilizzata per la ricerca.

È necessario un formato JSON valido.

Per rendere più stabile il connettore, ti consigliamo di aggiungere una chiave timestamp di ordinamento in ordine crescente.

Indice Stringa N/D

Indice utilizzato per una ricerca.

Ad esempio: _all

Campo timestamp Stringa N/D

Il nome del campo in cui si trova il timestamp.
Esempio:

source@timestamp

Nome campo avviso Stringa N/D

Il nome del campo in cui si trova il nome dell'avviso.
Esempio:

_source_info_alertname

Campo Descrizione Stringa N/D No

Il nome del campo in cui si trova la descrizione.
Esempio:

_source_alert_info_description

Gravità Stringa Media

Gravità degli avvisi.
Valore possibile:

Informazioni

Bassa

Media

Alta

Critico

Limite conteggio avvisi Numero intero 100 No Limita il numero di avvisi restituiti dal connettore per iterazione.
Autentica Casella di controllo Deselezionata No Indica se eseguire o meno l'autenticazione su una connessione.
Nome utente Stringa N/D No Nome utente dell'account Elasticsearch.
Password Password N/D No Password dell'account Elasticsearch.
Use SSL (Usa SSL) Casella di controllo Deselezionata No Opzione per abilitare la connessione SSL/TLS.
Nome campo gravità Stringa N/D No Se vuoi mappare la gravità in base al valore della stringa, devi creare un file di mappatura. Per ulteriori dettagli, consulta il portale della documentazione.
Gravità avviso Stringa N/D No

La gravità degli avvisi.

Valore possibile: Info, Basso, Medio, Alto, Critico.

Nota:questo parametro ha la priorità su "Nome campo gravità". Se vuoi utilizzare "Nome campo gravità", questo campo deve essere lasciato vuoto.

Indirizzo del server proxy Stringa N/D No L'indirizzo del server proxy da utilizzare.
Nome utente proxy Stringa N/D No Il nome utente del proxy con cui eseguire l'autenticazione.
Password proxy Password N/D No La password del proxy per l'autenticazione.

Notazioni supportate

Il connettore supporta tre notazioni. Ad esempio, se vuoi utilizzare event.type nel parametro "Nome campo evento". In questo caso, puoi fornire _source_event_type, event_type o event.type. Tutti questi valori si comportano allo stesso modo.

Per i parametri:

  • Nome campo prodotto
  • Nome campo evento
  • Nome campo gravità
  • Campo Ambiente
  • Campo timestamp
  • Campo Nome avviso
  • Campo Descrizione avviso: questo campo è solo per i connettori DSL

Come mappare la gravità nel connettore

Per mappare la gravità, devi specificare quale campo deve essere utilizzato per ottenere il valore della gravità nel parametro "Nome campo gravità". Nella risposta puoi ottenere tre tipi di valori: numeri interi, numeri in virgola mobile e stringhe. Per i numeri interi e in virgola mobile, non è necessaria alcuna configurazione aggiuntiva. Il connettore leggerà questi valori e li mapperà in base agli standard Google SecOps. Un breve promemoria su come vengono mappati i valori interi:

  • 100 - Critico
  • 100 > x >= 80 Alto
  • 80 > x >=60 Medio
  • 60 > x >=40 Bassa
  • 40 > x Informazioni

Se nella risposta utilizziamo stringhe, è necessaria una configurazione aggiuntiva. Nella cartella in cui si trovano gli script del connettore, avrai un file di configurazione denominato severity_map_config.json. Questo file definisce le regole di mappatura per la gravità.

Inizialmente, il file avrà questo aspetto:

{
    "Default": 50
}

Immagina una situazione in cui i valori necessari si trovano in event.severity. event.severity può contenere i seguenti valori: "Malicious", "Benign", "Unknown".

Innanzitutto, dobbiamo specificare nel parametro "Severity Field Name" che utilizzeremo event.severity.

In secondo luogo, dobbiamo aggiornare il file di configurazione.

Dopo le modifiche, il file severity_map_config.json dovrebbe avere il seguente aspetto:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

Ora, quando il connettore riceverà un evento con event.severity = "Malicious", gli verrà assegnata la gravità Critica.

Regole del connettore

Whitelist/Blacklist

Il connettore non supporta l'elenco consentito/bloccato.

Supporto del proxy

Il connettore supporta il proxy.

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