Monitoraggio dei log di controllo in Amazon Service OpenSearch - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Monitoraggio dei log di controllo in Amazon Service OpenSearch

Se il tuo dominio Amazon OpenSearch Service utilizza un controllo granulare degli accessi, puoi abilitare i log di controllo per i tuoi dati. I log di controllo sono altamente personalizzabili e ti consentono di tenere traccia delle attività degli utenti sui tuoi OpenSearch cluster, compresi i successi e gli errori di autenticazione, le richieste, le modifiche all'indice e le query di ricerca in OpenSearch arrivo. La configurazione predefinita tiene traccia di una serie comune di azioni utente, ma si consiglia di personalizzare le impostazioni in base alle proprie esigenze.

Proprio come i log OpenSearch delle applicazioni e gli slow log, Service pubblica i log di controllo su Logs. OpenSearch CloudWatch Se abilitato, si applica il prezzo standard. CloudWatch

Nota

Per abilitare i log di controllo, il ruolo utente deve essere mappato al security_manager ruolo, che consente di accedere all'API OpenSearch plugins/_security REST. Per ulteriori informazioni, vedi Modifica dell'utente principale.

Limitazioni

I log di verifica hanno le seguenti limitazioni:

  • I log di verifica non includono le richieste della ricerca tra cluster rifiutate dalla policy di accesso al dominio della destinazione.

  • La dimensione massima di ogni messaggio del log di verifica è 10.000 caratteri. Il messaggio del log di verifica viene troncato se supera questo limite.

Abilitazione dei log di verifica

La procedura per abilitare i log di verifica prevede due fasi: Innanzitutto, configuri il tuo dominio per pubblicare i log di controllo in Logs. CloudWatch Quindi, abiliti i registri di controllo nelle OpenSearch dashboard e li configuri in base alle tue esigenze.

Importante

Se si verifica un errore durante la procedura descritta di seguito, consultare Impossibile abilitare i log di verifica per informazioni sulla risoluzione dei problemi.

Passaggio 1: abilitare i log di verifica e configurare una policy di accesso

In questi passaggi viene descritto come abilitare i log di verifica tramite la console. Puoi anche abilitarli utilizzando o AWS CLIl'API di OpenSearch servizio.

Per abilitare i registri di controllo per un dominio OpenSearch di servizio (console)
  1. Scegliere il dominio per aprire la sua configurazione, quindi andare alla scheda Log.

  2. Selezionare Audit logs (Log di verifica) e poi Enable (Abilita).

  3. Crea un gruppo di CloudWatch log o scegline uno esistente.

  4. Scegliere una policy d'accesso che contiene le autorizzazioni appropriate oppure creare una policy utilizzando il formato JSON che la console offre:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }

    Si consiglia di aggiungere le chiavi di condizione aws:SourceAccount e aws:SourceArn alla policy per proteggersi dal problema del "confused deputy". L'account fonte è il proprietario del flusso di log e l'ARN fonte è l'ARN del dominio. Per aggiungere queste chiavi di condizione, il dominio deve trovarsi sul software di servizio R20211203 o versioni successive.

    Ad esempio, è possibile aggiungere il seguente blocco di condizione alla policy:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
  5. Scegli Abilita .

Passaggio 2: attiva i registri di controllo nelle dashboard OpenSearch

Dopo aver abilitato i registri di controllo nella console di OpenSearch servizio, devi abilitarli anche nelle OpenSearch dashboard e configurarli in base alle tue esigenze.

  1. Apri OpenSearch Dashboard e scegli Sicurezza dal menu a sinistra.

  2. Scegliere Log di verifica.

  3. Scegliere Abilita registrazione di verifica.

L'interfaccia utente di Dashboards offre il controllo completo delle impostazioni del log di verifica in Impostazioni generali e Impostazioni di conformità. Per una descrizione di tutte le opzioni di configurazione, consultare Impostazioni dei log di verifica.

Abilita la registrazione di controllo utilizzando il AWS CLI

Il AWS CLI comando seguente abilita i registri di controllo su un dominio esistente:

aws opensearch update-domain-config --domain-name my-domain --log-publishing-options "AUDIT_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true}"

È inoltre possibile abilitare i log di verifica quando si crea un dominio. Per ulteriori informazioni, consultare Riferimento ai comandiAWS CLI.

Abilitare la registrazione di controllo tramite l'API di configurazione

La seguente richiesta all'API di configurazione abilita i log di verifica su un dominio esistente:

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "LogPublishingOptions": { "AUDIT_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:123456789012:log-group1:sample-domain", "Enabled":true } } }

Per ulteriori informazioni, consulta il riferimento all'API OpenSearch di Amazon Service.

Livelli e categorie dei log di verifica

La comunicazione del cluster avviene su due livelli separati: il livello REST e il livello di trasporto.

  • Il livello REST copre la comunicazione con i client HTTP come curl, Logstash, OpenSearch Dashboards, il client REST di alto livello Java, la libreria Python Requests, tutte le richieste HTTP che arrivano al cluster.

  • Il livello di trasporto copre la comunicazione tra i nodi. Ad esempio, dopo che una richiesta di ricerca arriva al cluster (sul livello REST), il nodo di coordinamento che serve la richiesta invia la query ad altri nodi, riceve le risposte, raccoglie i documenti necessari e li unisce nella risposta finale. Operazioni come l'allocazione delle partizioni e il ribilanciamento si verificano anche sul livello di trasporto.

È possibile abilitare o disabilitare i log di verifica per interi livelli, nonché per singole categorie di controllo per un livello. La tabella seguente contiene un riepilogo delle categorie di verifica e dei livelli per i quali sono disponibili.

Categoria Descrizione Disponibile per REST Disponibile per il trasporto

FALLITO_LOGIN

Una richiesta conteneva credenziali non valide e l'autenticazione non è riuscita.

MISSING_PRIVILEGES

Un utente non disponeva dei privilegi per effettuare la richiesta.

GRANTED_PRIVILEGES

Un utente disponeva dei privilegi per effettuare la richiesta.

OPENSEARCH_SECURITY_INDEX_ATTEMPT

Una richiesta ha provato a modificare l'indice .opendistro_security. No

AUTHENTICATED

Una richiesta conteneva credenziali valide e l'autenticazione è riuscita.

INDEX_EVENT

Una richiesta ha eseguito un'operazione amministrativa su un indice, ad esempio la creazione, l'impostazione di un alias o l'esecuzione di un'unione forzata. L'elenco completo delle indices:admin/ azioni incluse in questa categoria è disponibile nella documentazione. OpenSearch No

Oltre a queste categorie standard, il controllo granulare degli accessi offre diverse categorie aggiuntive progettate per soddisfare i requisiti di conformità dei dati.

Categoria Descrizione

COMPLIANCE_DOC_READ

Una richiesta ha eseguito un evento di lettura su un documento in un indice.

COMPLIANCE_DOC_WRITE

Una richiesta ha eseguito un evento di scrittura su un documento in un indice.

COMPLIANCE_INTERNAL_CONFIG_READ

Una richiesta ha eseguito un evento di lettura sull'indice .opendistro_security.

COMPLIANCE_INTERNAL_CONFIG_WRITE

Una richiesta ha eseguito un evento di scrittura sull'indice .opendistro_security.

È possibile disporre di una combinazione di categorie e attributi di messaggio. Ad esempio, se si invia una richiesta REST per indicizzare un documento, è possibile che vengano visualizzate le seguenti righe nei log di verifica:

  • AUTHENTICATED sul livello REST (autenticazione)

  • GRANTED_PRIVILEGE a livello di trasporto (autorizzazione)

  • COMPLIANCE_DOC_WRITE (documento scritto su un indice)

Impostazioni dei log di verifica

I log di verifica dispongono di numerose opzioni di configurazione.

Impostazioni generali

Le impostazioni generali consentono di abilitare o disabilitare singole categorie o interi livelli. Si consiglia vivamente di lasciare GRANTED_PRIVILES e AUTHENTICATED come categorie escluse. In caso contrario, queste categorie vengono registrate per ogni richiesta valida al cluster.

Nome Impostazione del back-end Descrizione

Livello REST

enable_rest

Abilitare o disabilitare gli eventi che si verificano sul livello REST.

Categorie REST disabilitate

disabled_rest_categories

Specificare le categorie di verifica da ignorare sul livello REST. La modifica di queste categorie può aumentare notevolmente le dimensioni dei log di verifica.

Livello di trasporto

enable_transport

Abilitare o disabilitare gli eventi che si verificano sul livello di trasporto.

Categorie di trasporto disabilitate

disabled_transport_categories

Specificare le categorie di verifica che devono essere ignorate sul livello di trasporto. La modifica di queste categorie può aumentare notevolmente le dimensioni dei log di verifica.

Le impostazioni degli attributi consentono di personalizzare la quantità di dettagli in ogni riga di log.

Nome Impostazione del back-end Descrizione

Richieste in blocco

resolve_bulk_requests

L'abilitazione di questa impostazione genera un log per ogni documento in una richiesta in blocco, che può aumentare notevolmente le dimensioni dei log di verifica.

Corpo della richiesta

log_request_body

Includere il corpo della richiesta delle richieste.

Risoluzione di indici

resolve_indices

Risolvere gli alias sugli indici.

Utilizzare Ignora impostazioni per escludere un set di utenti o percorsi API:

Nome Impostazione del back-end Descrizione

Utenti ignorati

ignore_users

Specificare gli utenti che si desidera escludere.

Richieste ignorate

ignore_requests

Specificare i modelli di richiesta che si desidera escludere.

Impostazioni di conformità

Le impostazioni di conformità consentono di regolare l'accesso a livello di indice, documento o campo.

Nome Impostazione del back-end Descrizione

Registrazione della conformità

enable_compliance

Abilitare o disabilitare la registrazione della conformità.

È possibile specificare le seguenti impostazioni per la registrazione degli eventi di lettura e scrittura.

Nome Impostazione del back-end Descrizione

Registrazione della configurazione interna

internal_config

Abilitare o disabilitare la registrazione degli eventi sull'indice .opendistro_security.

È possibile specificare le seguenti impostazioni per gli eventi di lettura.

Nome Impostazione del back-end Descrizione

Lettura di metadati

read_metadata_only

Includere solo i metadati per gli eventi di lettura. Non includere campi di documento.

Utenti ignorati

read_ignore_users

Non includere determinati utenti per gli eventi di lettura.

Campi osservati

read_watched_fields

Specificare gli indici e i campi da controllare per gli eventi di lettura. L'aggiunta di campi controllati genera un log per accesso ai documenti, che può aumentare notevolmente le dimensioni dei log di verifica. I campi osservati supportano i modelli di indice e i modelli di campo:

{ "index-name-pattern": [ "field-name-pattern" ], "logs*": [ "message" ], "twitter": [ "id", "user*" ] }

È possibile specificare le seguenti impostazioni per gli eventi di scrittura.

Nome Impostazione del back-end Descrizione

Scrittura di metadati

write_metadata_only

Includere solo i metadati per gli eventi di scrittura. Non includere campi di documento.

Differenze dei log

write_log_diffs

Se write_metadata_only è false, includere solo le differenze tra gli eventi di scrittura.

Utenti ignorati

write_ignore_users

Non includere determinati utenti per gli eventi di scrittura.

Osservazione di indici

write_watched_indices

Specificare gli indici o i modelli di indice da controllare per gli eventi di scrittura. L'aggiunta di campi controllati genera un log per accesso ai documenti, che può aumentare notevolmente le dimensioni dei log di verifica.

Esempi di log di verifica

Questa sezione include una configurazione di esempio, una richiesta di ricerca e il log di verifica risultante per tutti gli eventi di lettura e scrittura di un indice.

Fase 1: Configurazione dei log di verifica

Dopo aver abilitato la pubblicazione dei log di controllo in un gruppo CloudWatch Logs, accedi alla pagina di registrazione di audit di OpenSearch Dashboards e scegli Abilita registrazione di controllo.

  1. In Impostazioni generali, scegliere Configura e assicurarsi che il livello REST sia abilitato.

  2. In Impostazioni di conformità, scegliere Configura.

  3. In Scrittura, in Campi osservati, aggiungere accounts per tutti gli eventi di scrittura su questo indice.

  4. In Lettura, in Campi osservati, aggiungere i campi ssn e id- dell'indice accounts:

    { "accounts-": [ "ssn", "id-" ] }

Fase 2: Esecuzione di eventi di lettura e scrittura

  1. Passa a OpenSearch Dashboards, scegli Dev Tools e indicizza un documento di esempio:

    PUT accounts/_doc/0 { "ssn": "123", "id-": "456" }
  2. Per verificare un evento di lettura, inviare la seguente richiesta:

    GET accounts/_search { "query": { "match_all": {} } }

Fase 3: Osservazione dei log

  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nel pannello di navigazione, selezionare Log groups (Gruppi di log).

  3. Scegliere il gruppo di log specificato durante l'abilitazione dei log di verifica. All'interno del gruppo di log, OpenSearch Service crea un flusso di log per ogni nodo del dominio.

  4. In Flussi di log, scegliere Cerca tutto.

  5. Per gli eventi di lettura e scrittura, consultare i log corrispondenti. È possibile prevedere un ritardo di 5 secondi prima che venga visualizzato il log.

    Log di verifica della scrittura di esempio

    { "audit_compliance_operation": "CREATE", "audit_cluster_name": "824471164578:audit-test", "audit_node_name": "be217225a0b77c2bd76147d3ed3ff83c", "audit_category": "COMPLIANCE_DOC_WRITE", "audit_request_origin": "REST", "audit_compliance_doc_version": 1, "audit_node_id": "3xNJhm4XS_yTzEgDWcGRjA", "@timestamp": "2020-08-23T05:28:02.285+00:00", "audit_format_version": 4, "audit_request_remote_address": "3.236.145.227", "audit_trace_doc_id": "lxnJGXQBqZSlDB91r_uZ", "audit_request_effective_user": "admin", "audit_trace_shard_id": 8, "audit_trace_indices": [ "accounts" ], "audit_trace_resolved_indices": [ "accounts" ] }

    Log di verifica della lettura di esempio

    { "audit_cluster_name": "824471164578:audit-docs", "audit_node_name": "806f6050cb45437e2401b07534a1452f", "audit_category": "COMPLIANCE_DOC_READ", "audit_request_origin": "REST", "audit_node_id": "saSevm9ASte0-pjAtYi2UA", "@timestamp": "2020-08-31T17:57:05.015+00:00", "audit_format_version": 4, "audit_request_remote_address": "54.240.197.228", "audit_trace_doc_id": "config:7.7.0", "audit_request_effective_user": "admin", "audit_trace_shard_id": 0, "audit_trace_indices": [ "accounts" ], "audit_trace_resolved_indices": [ "accounts" ] }

Per includere il corpo della richiesta, torna alle impostazioni di conformità nei OpenSearch dashboard e disabilita Write metadata. Per escludere eventi da un utente specifico, aggiungere l'utente a Utenti ignorati.

Per una descrizione di ogni campo del log di verifica, consultare Riferimento ai campi dei log di verifica. Per informazioni sulla ricerca e l'analisi dei dati dei log di controllo, consulta Analyzing Log Data with CloudWatch Logs Insights nella Amazon CloudWatch Logs User Guide.

Configurazione dei log di verifica tramite la REST API

Ti consigliamo di utilizzare OpenSearch le dashboard per configurare i log di controllo, ma puoi anche utilizzare l'API REST per il controllo degli accessi a grana fine. In questa sezione è riportata una richiesta di esempio. La documentazione completa sull'API REST è disponibile nella documentazione. OpenSearch

PUT _plugins/_security/api/audit/config { "enabled": true, "audit": { "enable_rest": true, "disabled_rest_categories": [ "GRANTED_PRIVILEGES", "AUTHENTICATED" ], "enable_transport": true, "disabled_transport_categories": [ "GRANTED_PRIVILEGES", "AUTHENTICATED" ], "resolve_bulk_requests": true, "log_request_body": true, "resolve_indices": true, "exclude_sensitive_headers": true, "ignore_users": [ "kibanaserver" ], "ignore_requests": [ "SearchRequest", "indices:data/read/*", "/_cluster/health" ] }, "compliance": { "enabled": true, "internal_config": true, "external_config": false, "read_metadata_only": true, "read_watched_fields": { "read-index-1": [ "field-1", "field-2" ], "read-index-2": [ "field-3" ] }, "read_ignore_users": [ "read-ignore-1" ], "write_metadata_only": true, "write_log_diffs": false, "write_watched_indices": [ "write-index-1", "write-index-2", "log-*", "*" ], "write_ignore_users": [ "write-ignore-1" ] } }