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

Controllo degli eventi di Amazon DocumentDB

Con Amazon DocumentDB (con compatibilità 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 che tu scelga di utilizzare 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 su Amazon Logs. CloudWatch Quando il controllo è abilitato, Amazon DocumentDB esporta i record di controllo JSON (documenti) del cluster in Amazon Logs. CloudWatch Puoi utilizzare Amazon CloudWatch Logs per analizzare, monitorare e archiviare gli eventi di audit di Amazon DocumentDB.

Sebbene Amazon DocumentDB non addebiti costi aggiuntivi per abilitare l'auditing, ti vengono addebitate tariffe standard per l'utilizzo dei log. CloudWatch Per informazioni sui prezzi di CloudWatch Logs, consulta i CloudWatch prezzi di Amazon.

La funzionalità di controllo di Amazon DocumentDB è nettamente diversa dall'utilizzo delle risorse di servizio con cui viene monitorato. AWS CloudTrail CloudTrail registra le operazioni eseguite con AWS Command Line Interface (AWS CLI) o AWS Management Console su risorse come cluster, istanze, gruppi di parametri e istantanee. Il controllo delle risorse con CloudTrail è attivo per impostazione predefinita e non può essere disabilitato. La funzionalità di auditing 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

L'auditing di Amazon DocumentDB supporta le seguenti categorie di eventi:

  • Data Definition Language (DDL): include operazioni di gestione del database, connessioni, gestione degli utenti e autorizzazione.

  • Data Manipulation Language read events (DMLreads): include i vari operatori di aggregazione, operatori aritmetici, operatori booleani find() e altri operatori di query di lettura.

  • Eventi di scrittura (scritture) del Data Manipulation Language: include e operatori DML insert(), update(), delete(), bulkWrite()

I tipi di evento sono i seguenti:

Tipo di evento Categoria Descrizione
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 Verifica la configurazione del filtro.
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 È stato creato il flusso di modifiche.
renameCollection DDL Ridenominazione di una raccolta all'interno di un database.
createRole Gestione dei ruoli Creare un ruolo.
dropAllRolesFromDatabase Gestione dei ruoli Eliminazione di tutti i ruoli all'interno di un database.
dropRole Gestione dei ruoli Eliminare un ruolo.
grantPrivilegesToRole Gestione dei ruoli Concessione di privilegi a un ruolo.
grantRolesToRole Gestione dei ruoli Concessione 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 Concessione di ruoli a un utente.
revokeRolesFromUser Gestione degli utenti Revoca di ruoli a un utente.
updateUser UserManagement Aggiornamento di un utente esistente.
insert DMLscrivere Inserisce uno o più documenti in una raccolta.
delete DMLscrivere Elimina uno o più documenti da una raccolta.
update DMLscrivere Modifica uno o più documenti esistenti in una raccolta.
bulkWrite DMLscrivere Esegue più operazioni di scrittura con controlli per l'ordine di esecuzione.
setAuditConfig DMLscrivere Imposta un nuovo filtro per il DML controllo.
count DMLleggi Restituisce il numero di documenti che corrisponderebbero a una query find () per la raccolta o la visualizzazione.
countDocuments DMLleggere Restituisce il numero di documenti che corrispondono alla query per una raccolta o una visualizzazione.
find DMLleggere Seleziona i documenti in una raccolta o in una vista e riporta il cursore sui documenti selezionati.
getAuditConfig DMLleggere Recupera il filtro corrente per il DML controllo.
findAndModify DMLleggi e scrivi DML Modifica e restituisce un singolo documento.
findOneAndDelete DMLleggi e scrivi DML Elimina un singolo documento in base ai criteri di filtro e ordinamento, restituendo il documento eliminato.
findOneAndReplace DMLleggi e scrivi DML Sostituisce un singolo documento in base al filtro specificato.
findOneAndUpdate DMLleggi e scrivi DML Aggiorna un singolo documento in base ai criteri di filtro e ordinamento.
aggregate DMLleggi e DML scrivi Supporti APIs nella pipeline di aggregazione.
distinct DMLleggere 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 dei parametri del documento DML dell'evento hanno un limite di dimensione di 1 KB. Amazon DocumentDB tronca il valore se supera 1 KB.

Nota

TTLgli eventi di eliminazione 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 stati completati, altrimenti i log di controllo non verranno inviati a CloudWatch Logs.

Fase 1: Abilita il parametro del cluster audit_logs

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

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

Valore Descrizione
ddl Questa impostazione abiliterà il controllo di DDL eventi qualicreateDatabase,,dropDatabase,createCollection,dropCollection,createIndex, dropIndexauthCheck, authenticate,,createUser, grantRolesTo UserdropUser, revokeRolesFrom User e updateUser dropAllUsers FromDatabase
dml_read L'impostazione di questa impostazione consentirà il controllo per eventi di DML lettura come find, sort count, distinct, group, projecta, unwind e geoWithin altri operatori di geoNear query geoIntersects di lettura MongoDB.
dml_write L'impostazione di questa impostazione abiliterà il controllo per eventi di DML scrittura come insert (), update (), delete () e () bulkWrite
all 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(legacy) Questa è un'impostazione dei parametri legacy equivalente a 'ddl'. Questa impostazione consentirà il controllo di DDL eventi qualicreateDatabase,,,,dropDatabase,, createCollectiondropCollection, authenticate createIndexdropIndex,authCheck,,, grantRolesTo User createUserdropUser, revokeRolesFrom User e. updateUser dropAllUsers FromDatabase Non è consigliabile utilizzare questa impostazione perché si tratta di un'impostazione precedente.
disabled (eredità) Questa è un'impostazione dei parametri legacy equivalente a «nessuna». Non è consigliabile utilizzare questa impostazione perché si tratta di un'impostazione precedente.
Nota

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

È inoltre possibile utilizzare i valori sopra menzionati in combinazioni.

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

Non è consentito modificare un gruppo di parametri predefinito.

Per ulteriori informazioni, consulta gli argomenti seguenti:

Fase 2: Abilita l'esportazione di Amazon CloudWatch Logs

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

Quando si crea un cluster, si esegue o si ripristina un'istantanea, è possibile abilitare CloudWatch i log seguendo questi passaggi. point-in-time-restore

Using the AWS Management Console

Per abilitare l'esportazione dei log da parte di Amazon DocumentDB per l' CloudWatch utilizzo della 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 i log di CloudWatch controllo.

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 i log di CloudWatch controllo.

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'output di queste operazioni è simile al seguente (JSONformato).

{ "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" } }

Disabilitazione del controllo

È possibile disabilitare il controllo disabilitando l'esportazione dei CloudWatch registri e disabilitando il parametro. audit_logs

Disabilitazione dell'esportazione dei log CloudWatch

È possibile disabilitare l'esportazione dei registri di controllo utilizzando o il. AWS Management Console AWS CLI

Using the AWS Management Console

La procedura seguente utilizza AWS Management Console per disabilitare l'esportazione dei log in Amazon DocumentDB in. CloudWatch

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

  2. Nel pannello di navigazione scegliere Clusters (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 i log di controllo. CloudWatch

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'output di questa operazione è simile al seguente (JSONformato).

{ "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 agli eventi di controllo

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

  1. Apri la CloudWatch console all'indirizzo 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 filtraggio DML di controllo

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

Nota

DDLgli eventi non vengono filtrati.

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

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 gli utenti/ruoli del database con azioni privilegiate auditConfigure possono eseguire i comandi precedenti admindb quando impostano o elencano i filtri di controllo. DML È possibile utilizzare uno dei ruoli incorporati di [clusterAdmin,hostManager,root] o creare ruoli personalizzati con privilegi. auditConfigure Di seguito è riportato un esempio di utilizzo di ruoli esistenti con il auditConfigure privilegio e un esempio di utilizzo di 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" } ] } )

Casi d'uso del filtraggio

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 DML log hanno unauthCheck. atype Ne DDL ha solo uno diverso. atype Se inserisci un valore diverso da quello authCheck infilter, non verrà generato un DML accesso 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

Al livello superiore $and$or, solo e $nor sono supportati. Tutti gli altri operatori non sono supportati e causeranno 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 condizioni e $in $nin

Quando si utilizzano $in sia in che$nin, il comando non verrà registrato poiché tra le condizioni sarà presente un «e» implicito. In questo esempio, regex bloccherà il 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 DML controllo verrà registrato. Per ripristinare il filtro al valore predefinito, esegui il seguente comando:

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