View a markdown version of this page

Verifica degli eventi di Amazon DocumentDB - Amazon DocumentDB

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à.

Verifica degli eventi di Amazon DocumentDB

Con Amazon DocumentDB (compatibile con MongoDB), puoi controllare gli eventi che sono stati eseguiti nel tuo cluster. Sono esempi di eventi registrati i tentativi di autenticazione riusciti e non riusciti, l'eliminazione di una raccolta in un database o la creazione di un indice. Per impostazione predefinita, il controllo è disabilitato su Amazon DocumentDB e richiede l'attivazione di questa funzionalità.

Quando il controllo è abilitato, Amazon DocumentDB registra gli eventi di Data Definition Language (DDL), Data Manipulation Language (DML), autenticazione, autorizzazione e gestione degli utenti in Amazon CloudWatch Log. Quando il controllo è abilitato, Amazon DocumentDB esporta i record di controllo del cluster (documenti JSON) in Amazon CloudWatch Log. Puoi usare Amazon CloudWatch Log per analizzare, monitorare e archiviare gli eventi di audit di Amazon DocumentDB.

Sebbene Amazon DocumentDB non addebiti costi aggiuntivi per abilitare l'audit, ti vengono addebitate tariffe standard per l'utilizzo di CloudWatch Registri. Per informazioni su CloudWatch Registra i prezzi, vedi Amazon CloudWatch prezzi.

La funzionalità di controllo di Amazon DocumentDB è nettamente diversa dall'utilizzo delle risorse del servizio monitorato con AWS CloudTrail. CloudTrail registra le operazioni eseguite con AWS Command Line Interface (AWS CLI) o Console di gestione AWS su risorse come cluster, istanze, gruppi di parametri e istantanee. Verifica delle risorse con CloudTrail è attivo per impostazione predefinita e non può essere disabilitato. La funzionalità di controllo di Amazon DocumentDB è una funzionalità opzionale. Registra le operazioni eseguite all'interno del cluster sugli oggetti, ad esempio database, raccolte, indici e utenti.

Eventi supportati

Il controllo di Amazon DocumentDB supporta le seguenti categorie di eventi:

  • Data Definition Language (DDL) - include le operazioni di gestione del database, le connessioni, la gestione degli utenti e l'autorizzazione.

  • Eventi di lettura del linguaggio di manipolazione dei dati (letture DML) - include find() e i vari operatori di aggregazione, operatori aritmetici, operatori booleani e altri operatori di interrogazione di lettura.

  • Eventi di scrittura del linguaggio di manipolazione dei dati (scritture DML) - include insert(), update(), delete(), e bulkWrite() operatori

I tipi di evento sono i seguenti:

Tipo di evento Categoria Description
authCheck Autorizzazione Codice risultato 0: Successo
Codice risultato 13: tentativi non autorizzati di eseguire un'operazione.
authenticate Connessione Tentativi di autenticazione riusciti o non riusciti in una nuova connessione.
auditConfigure DDL Configurazione del filtro di controllo.
createDatabase DDL Creazione di un nuovo database.
createCollection DDL Creazione di una nuova raccolta all'interno di un database.
createIndex DDL Creazione di un nuovo indice all'interno di una raccolta.
dropCollection DDL Eliminazione di una raccolta all'interno di un database.
dropDatabase DDL Eliminazione di un database.
dropIndex DDL Eliminazione di un indice all'interno di una raccolta.
modifyChangeStreams DDL Il flusso di modifiche è stato creato.
renameCollection DDL Rinominazione di una raccolta all'interno di un database.
createRole Gestione dei ruoli Creazione di un ruolo.
dropAllRolesFromDatabase Gestione dei ruoli Eliminazione di tutti i ruoli all'interno di un database.
dropRole Gestione dei ruoli Abbandono di un ruolo.
grantPrivilegesToRole Gestione dei ruoli Concessione di privilegi a un ruolo.
grantRolesToRole Gestione dei ruoli Assegnazione di ruoli a un ruolo definito dall'utente.
revokePrivilegesFromRole Gestione dei ruoli Revoca dei privilegi da un ruolo.
revokeRolesFromRole Gestione dei ruoli Revoca di ruoli da un ruolo definito dall'utente.
updateRole Gestione dei ruoli Aggiornamento di un ruolo.
createUser Gestione degli utenti Creazione di un nuovo utente.
dropAllUsersFromDatabase Gestione degli utenti Eliminazione di tutti gli utenti all'interno di un database.
dropUser Gestione degli utenti Eliminazione di un utente esistente.
grantRolesToUser Gestione degli utenti Assegnazione di ruoli a un utente.
revokeRolesFromUser Gestione degli utenti Revoca dei ruoli a un utente.
updateUser UserManagement Aggiornamento di un utente esistente.
insert Scrittura DML Inserisce uno o più documenti in una raccolta.
delete Scrittura in formato DML Elimina uno o più documenti da una raccolta.
update Scrittura in formato DML Modifica uno o più documenti esistenti in una raccolta.
bulkWrite Scrittura in formato DML Esegue più operazioni di scrittura con controlli per l'ordine di esecuzione.
setAuditConfig Scrittura DML Imposta un nuovo filtro per il controllo DML.
count DML letto Restituisce il numero di documenti che corrisponderebbero a una query find () per la raccolta o la visualizzazione.
countDocuments DML letto Restituisce il numero di documenti che corrispondono alla query per una raccolta o una visualizzazione.
find DML letto Seleziona i documenti in una raccolta o visualizzazione e riporta un cursore ai documenti selezionati.
getAuditConfig Letto in formato DML Recupera il filtro corrente per il controllo DML.
findAndModify Lettura DML e scrittura DML Modifica e restituisce un singolo documento.
findOneAndDelete Lettura DML e scrittura DML Elimina un singolo documento in base ai criteri di filtro e ordinamento, restituendo il documento eliminato.
findOneAndReplace Lettura DML e scrittura DML Sostituisce un singolo documento in base al filtro specificato.
findOneAndUpdate Lettura DML e scrittura DML Aggiorna un singolo documento in base ai criteri di filtro e ordinamento.
aggregate Lettura DML e scrittura DML Supporta le API nella pipeline di aggregazione.
distinct DML letto Trova i valori distinti per un campo specificato in una singola raccolta o visualizzazione e restituisce i risultati in un array.
Nota

I valori nel campo del parametro del documento relativo agli eventi DML hanno un limite di dimensione di 1 KB. Amazon DocumentDB tronca il valore se supera 1 KB.

Nota

Gli eventi di eliminazione TTL non vengono controllati in questo momento.

Abilitazione del controllo

La procedura per abilitare l'audit in un cluster prevede due fasi: Assicurati che entrambi i passaggi siano completati, altrimenti i registri di controllo non verranno inviati a CloudWatch Registri.

Passaggio 1. Abilita il parametro del cluster audit_logs

Per abilitare il controllo, è necessario modificare audit_logs parametro nel gruppo di parametri. audit_logs è un elenco delimitato da virgole di eventi da registrare. Gli eventi devono essere specificati in minuscolo e non devono esserci spazi vuoti tra gli elementi dell'elenco.

È possibile impostare i seguenti valori per il gruppo di parametri:

Valore Description
ddl L'impostazione di questa impostazione consentirà il controllo degli eventi DDL come CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, grantRolesToUser, revocaRolesFromUser, UpdateUser e rilasciaAllUsersFromDatabase
dml_read L'impostazione di questa impostazione consentirà il controllo degli eventi di lettura DML come find, sort count, distinct, group, projecta, unwind, GeoNear, GeoIntersects, GeoWithin e altri operatori di query di lettura MongoDB.
dml_write L'impostazione di questa impostazione consentirà il controllo degli eventi di scrittura DML come insert (), update (), delete () e bulkWrite ()
all L'impostazione di questa impostazione consentirà il controllo degli eventi del database, come le query di lettura, le query di scrittura, le azioni del database e le azioni dell'amministratore.
none L'impostazione di questa impostazione disabiliterà il controllo
enabled (versione precedente) Questa è un'impostazione dei parametri legacy equivalente a 'ddl'. L'impostazione di questa impostazione consentirà il controllo di eventi DDL come CreateDatabase, DropDatabase, CreateCollection, DropCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, grantRolesToUser, revocaRolesFromUser, UpdateUser e rilasciaAllUsersFromDatabase. Non è consigliabile utilizzare questa impostazione perché è un'impostazione precedente.
disabled (legacy) Questa è un'impostazione dei parametri legacy equivalente a 'nessuno'. Non è consigliabile utilizzare questa impostazione perché è un'impostazione precedente.
Nota

Il valore predefinito per il parametro del cluster audit_logs è none (legacy)»disabled«).

È inoltre possibile utilizzare i valori sopra indicati in combinazioni.

Valore Description
ddl, dml_read L'impostazione di questa impostazione consentirà il controllo degli eventi DDL e degli eventi di lettura DML.
ddl, dml_write L'impostazione di questa impostazione consentirà il controllo degli eventi DDL e della scrittura DML
dml_read, dml_write L'impostazione di questa impostazione consentirà il controllo di tutti gli eventi DML
Nota

Non è consentito modificare un gruppo di parametri predefinito.

Per ulteriori informazioni, consulta gli argomenti seguenti:

Passaggio 2. Abilita Amazon CloudWatch Esportazione dei log

Quando il valore di audit_logs il parametro cluster è enabled, ddl, dml_read, o dml_write, devi anche abilitare Amazon DocumentDB per esportare i log in Amazon CloudWatch. Se si omette uno di questi passaggi, i registri di controllo non verranno inviati a CloudWatch.

Quando si crea un cluster, si esegue un ripristino point-in-time o si ripristina un'istantanea, è possibile abilitare CloudWatch Effettua l'accesso seguendo questi passaggi.

Using the Console di gestione AWS

Per consentire ad Amazon DocumentDB di esportare i log in CloudWatch utilizzando la console, consulta i seguenti argomenti:

Using the AWS CLI
Per abilitare i log di audit durante la creazione di un nuovo cluster

Il codice seguente crea il cluster sample-cluster e abilita CloudWatch registri di controllo.

Esempio

Per Linux, macOS o Unix:

aws docdb create-db-cluster \ --db-cluster-identifier sample-cluster \ --port 27017 \ --engine docdb \ --master-username master-username \ --master-user-password password \ --db-subnet-group-name default \ --enable-cloudwatch-logs-exports audit

Per Windows:

aws docdb create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --port 27017 ^ --engine docdb ^ --master-username master-username ^ --master-user-password password ^ --db-subnet-group-name default ^ --enable-cloudwatch-logs-exports audit
Per abilitare i log di audit durante la modifica di un cluster esistente

Il codice seguente modifica il cluster sample-cluster e abilita CloudWatch registri di controllo.

Esempio

Per Linux, macOS o Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

Per Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

L'aspetto dell'output di queste operazioni è simile al seguente (formato JSON).

{ "DBCluster": { "HostedZoneId": "ZNKXH85TT8WVW", "StorageEncrypted": false, "DBClusterParameterGroup": "default.docdb4.0", "MasterUsername": "<user-name>", "BackupRetentionPeriod": 1, "Port": 27017, "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ], "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster", "Status": "creating", "Engine": "docdb", "EngineVersion": "4.0.0", "MultiAZ": false, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "DBSubnetGroup": "default", "DBClusterMembers": [], "ReaderEndpoint": "sample-cluster.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "EnabledCloudwatchLogsExports": [ "audit" ], "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "AssociatedRoles": [], "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "Endpoint": "sample-cluster.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "PreferredBackupWindow": "07:16-07:46", "DBClusterIdentifier": "sample-cluster" } }

Disattivazione del controllo

È possibile disattivare il controllo disattivando CloudWatch Esportazione e disabilitazione dei log audit_logs parametro.

Disattivazione CloudWatch Esportazione dei log

È possibile disattivare l'esportazione dei log di controllo utilizzando Console di gestione AWS o il AWS CLI.

Using the Console di gestione AWS

La procedura seguente utilizza Console di gestione AWS per disattivare l'esportazione dei log di Amazon DocumentDB in CloudWatch.

Per disabilitare i log di audit
  1. Accedi al Console di gestione AWS e apri la console Amazon DocumentDB all'indirizzo https://console.aws.amazon.com/docdb.

  2. Nel pannello di navigazione scegliere Cluster. Quindi, scegliere il pulsante a sinistra del nome del cluster per il quale si desidera disabilitare l'esportazione dei log.

  3. Scegli Actions (Operazioni), quindi Modify (Modifica).

  4. Scorrere verso il basso fino alla sezione Log exports (Esportazioni log) e scegliere Disabled (Disabilitato).

  5. Scegli Continua.

  6. Esaminare le modifiche, quindi scegliere quando applicare la modifica al cluster.

    • Apply during the next scheduled maintenance window (Applica durante la prossima finestra di manutenzione pianificata)

    • Apply immediately (Applica immediatamente)

  7. Scegliere Modify cluster (Modifica cluster).

Using the AWS CLI

Il codice seguente modifica il cluster sample-cluster e disabilita CloudWatch registri di controllo.

Esempio

Per Linux, macOS o Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

Per Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

L'aspetto dell'output di questa operazione è simile al seguente (formato JSON).

{ "DBCluster": { "DBClusterParameterGroup": "default.docdb4.0", "HostedZoneId": "ZNKXH85TT8WVW", "MasterUsername": "<user-name>", "Status": "available", "Engine": "docdb", "Port": 27017, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "EarliestRestorableTime": "2019-02-13T16:35:50.387Z", "DBSubnetGroup": "default", "LatestRestorableTime": "2019-02-13T16:35:50.387Z", "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster2", "Endpoint": "sample-cluster2.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster2.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "BackupRetentionPeriod": 1, "EngineVersion": "4.0.0", "MultiAZ": false, "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DBClusterIdentifier": "sample-cluster2", "AssociatedRoles": [], "PreferredBackupWindow": "07:16-07:46", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "StorageEncrypted": false, "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "DBClusterMembers": [], "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ] } }

Disattivazione del parametro audit_logs

Per disabilitare il parametro audit_logs per il cluster, puoi modificarlo in modo che venga utilizzato un gruppo di parametri in cui il parametro audit_logs ha il valore disabled. In alternativa, puoi modificare il valore del parametro audit_logs nel gruppo di parametri del cluster in modo che sia disabled.

Per ulteriori informazioni, consulta i seguenti argomenti:

Accesso ai tuoi eventi di controllo

Utilizza i seguenti passaggi per accedere ai tuoi eventi di audit su Amazon CloudWatch.

  1. Aprire il CloudWatch console in https://console.aws.amazon.com/cloudwatch/.

  2. Assicurati di trovarti nella stessa regione del cluster Amazon DocumentDB.

  3. Nel riquadro di navigazione scegli Logs (Log).

  4. Per trovare i log di audit del cluster, dall'elenco individuare e scegliere /aws/docdb/yourClusterName/audit.

    Gli eventi di audit per ogni istanza sono disponibili nei rispettivi nomi di istanza.

Filtraggio degli eventi di controllo DML

Guida introduttiva al filtro di controllo DML

Gli eventi di controllo DML possono essere filtrati prima di essere scritti su Amazon CloudWatch. Per utilizzare questa funzionalità, è necessario abilitare il registro di controllo e la registrazione DML. Amazon DocumentDB supporta il filtraggio su atype, command, user, namespace, e auditAuthorizationSuccess.

Nota

Gli eventi DDL non vengono filtrati.

È possibile abilitare il filtro di controllo in qualsiasi momento specificando il filtro di controllo utilizzando setAuditConfig, filter, e auditAuthorizationSuccess parametri in db.adminCommand( { command } ) operazione:

db.admin.runCommand( { setAuditConfig: 1, filter: { //filter conditions }, auditAuthorizationSuccess: true | false } )

È inoltre possibile recuperare le impostazioni del filtro di controllo eseguendo il comando seguente:

db.admin.runCommand( { getAuditConfig: 1})

Requisiti di sicurezza

Solo database users/roles con azione privilegiata auditConfigure può eseguire i comandi precedenti contro admindb quando si impostano o si elencano i filtri di controllo DML. Puoi utilizzare uno dei ruoli integrati di [clusterAdmin, hostManager, root] o crea ruoli personalizzati con auditConfigure privilegi. Di seguito è riportato un esempio di utilizzo dei ruoli esistenti con auditConfigure privilegio e un esempio con ruoli personalizzati.

Utente con ruolo integrato:

use admin db.createUser( { user: "myClusterAdmin", pwd: "password123", roles: [ { role: "clusterAdmin", db: "admin" } ] } )

Utente con ruoli personalizzati:

use admin db.createRole( { role: "myRole", privileges: [ { resource: { cluster: true }, actions: [ "auditConfigure" ] } ], roles: [] } ) db.createUser( { user: "myUser", pwd: "myPassword", roles: [ { role: "myRole", db: "admin" } ] } )

Filtraggio dei casi d'uso

Esempio: filtraggio degli eventi in base ai comandi

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ] }, auditAuthorizationSuccess: true } )

Esempio: filtraggio degli eventi in base al nome utente

In questo esempio, verrà registrato solo l'utente «myUser»:

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.user": { $in: [ "myUser" ] } } ]}, auditAuthorizationSuccess: true})

Esempio: filtraggio per atype

db.admin.runCommand( { setAuditConfig: 1, filter: {atype: "authCheck"}, auditAuthorizationSuccess: true })
Nota

Tutti i log DML hanno authCheck come atype. Solo DDL ne ha una diversa atype. Se inserisci un valore diverso da authCheck nel filter, non produrrà un login DML CloudWatch.

Esempio: filtraggio utilizzando più filtri uniti da operatori

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ], "$nor": [ { "param.command": { $in: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})
Nota

Solo al livello superiore $and, $or, e $nor sono supportati. Qualsiasi altro operatore non è supportato e causerà un errore.

Esempio: filtraggio per eventi per auditAuthorizationSuccess

In questo filtro, tutti i comandi che hanno superato con successo l'autorizzazione non verranno registrati:

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: false } )

Esempio: filtraggio con $in e $nin condizioni

Quando si utilizzano entrambi in $in e $nin, il comando non verrà registrato poiché tra le condizioni sarà presente un «e» implicito. In questo esempio, regex bloccherà find comando in modo che non venga registrato nulla:

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ], $nin: ["count", "insert", "delete", "update", "findandmodify" ], $not: /^^find.*/ } }, ], "$or": [ { "param.command": { $nin: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})

Esempio: filtraggio per namespace

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.ns": { $in: [ "test.foo" ] } } ]}, auditAuthorizationSuccess: true})

Esempio: ripristino del filtro predefinito

Il ripristino del valore predefinito significa che ogni evento di controllo DML verrà registrato. Per ripristinare il filtro al valore predefinito, eseguite il comando seguente:

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: true } )