MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Architettura per la sicurezza:una guida per MongoDB

La prevalenza delle violazioni dei dati non è più sorprendente. Sulla base del rapporto sulla criminalità informatica dell'FBI appena pubblicato, le vittime della criminalità informatica hanno perso cumulativamente ben 4,2 miliardi di dollari nel 2020, ovvero 700 milioni di dollari in più rispetto alle perdite riportate nel 2019. In particolare, i database MongoDB non sicuri sono stati parte del problema che ha portato a significative violazioni dei dati . Nel febbraio del 2019, una società di servizi di verifica e-mail ha violato il database MongoDB e ha esposto 763 milioni di record tra cui indirizzi e-mail, numeri di telefono, indirizzi IP e date di nascita. Il motivo è che un'istanza MongoDB rivolta al pubblico senza password.

Mancanza di autenticazione, nessuna limitazione delle porte sul firewall o mancata protezione dei dati in trasmissione possono portare a una violazione dei dati. In questo blog parleremo di come preparare e proteggere il database MongoDB in un ambiente di produzione.

Autenticazione e autorizzazione

Autenticazione e autorizzazione sono due cose diverse, ma correlate. Autenticazione significa che l'utente ha accesso al database MongoDB mentre l'autorizzazione consente all'utente di accedere alla risorsa all'interno del database.

L'installazione predefinita per l'autenticazione in MongoDB è disabilitata. MongoDB supporta autenticazioni multiple, ad esempio:SCRAM, x.509 Certificate Authentication. Quello predefinito in MongoDB è SCRAM (Salted Challenge Response Authentication Mechanism), che verifica l'accesso delle credenziali fornite con il nome utente, la password e il database di autenticazione.

Prima di abilitare l'autenticazione, creare un superutente in MongoDB con il ruolo userAdminAnyDatabase. Al termine, dobbiamo solo aprire il file /etc/mongod.conf e trovare la sezione sulla sicurezza. L'impostazione predefinita è disabilitata, dobbiamo solo abilitarla.

security:
    authorization: "disabled"

Riavvia il servizio MongoDB per applicare le modifiche alla configurazione. Possiamo anche configurare RBAC (Role Based Access Control) all'interno del database MongoDB per una migliore sicurezza relativa all'utente. Quindi segreghiamo l'accesso al database in base all'utente e ai privilegi.

Segmentazione della rete

La segmentazione della rete è un aspetto importante quando progettiamo l'architettura del database, si applica a tutti i database, non solo per MongoDB. È buona norma isolare la rete per il database. Impostiamo il server del database in una rete privata, dove non può essere raggiunto da Internet.

La comunicazione con il database avviene sulla rete privata e quando l'utente desidera accedere al database, può utilizzare una VPN o un jumphost. Oltre alla segmentazione della rete, anche la limitazione della porta gioca un ruolo chiave, apriamo la porta del database specifica per la rete segmentata per controllare il traffico di rete in entrata e in uscita. Quindi, sappiamo che il traffico in entrata proviene dall'indirizzo di origine attendibile.

Crittografia dati

Un'altra area a cui dobbiamo dare un'occhiata è la crittografia dei dati. La crittografia dei dati è un metodo in cui le informazioni vengono codificate in un altro modulo durante la trasmissione e archiviate nel database.

La crittografia dei dati copre:

  • Dati in transito:dati in stato di trasmissione 

  • Dati inattivi:dati archiviati su disco. Esistono vari tipi di crittografia dei dati inattivi, possiamo utilizzare la crittografia a livello di database o possiamo utilizzare la crittografia a livello di archiviazione.

L'abilitazione di SSL/TLS dai client e dal server MongoDB e tra i nodi MongoDB (in replicaset e architettura del cluster frammentato), proteggerà i dati in transito. Il trasferimento dei dati non sarà in chiaro.

Esistono vari strumenti di crittografia e funzionalità per la crittografia dei dati inattivi, ad esempio; AWS fornisce la crittografia del disco EBS combinata con il KMS (Key Management Service) sullo storage, mentre a livello di database, l'edizione Enterprise di MongoDB fornisce la crittografia del database inattivo.

Controllo database

L'implementazione di un database di audit per MongoDB offre visibilità su ciò che è in esecuzione all'interno del database; es:da quale utente e quale comando è stato eseguito e l'origine dell'indirizzo IP. Possiamo combinare questi registri e creare regole basate sull'autorizzazione di accesso. Possiamo rilevare se c'è un utente non intenzionale che esegue alcuni script in MongoDB. Possiamo vedere la sezione auditLog.

auditLog:
   destination: syslog

Possiamo inviare il log di controllo MongoDB nei file syslog e inviare i log in Log Management. Vuoi avere altri suggerimenti sulla protezione di MongoDB? Guarda questo video per comprendere meglio le best practice per proteggere il tuo database MongoDB

Conclusione

L'implementazione degli standard di sicurezza per MongoDB è un must, soprattutto per un ambiente di produzione. Non possiamo accettare ogni perdita e violazione dei dati archiviati nel database.