**Gli hacker stanno diventando sempre più sofisticati e sanno come sfruttare le vulnerabilità. Se hai dati sensibili nel tuo database MongoDB, è fondamentale prendere seriamente la sicurezza. Ma come fare? Non preoccuparti! Questo tutorial ti copre!
In questo tutorial imparerai a proteggere i tuoi database MongoDB e respingere gli hacker configurando misure di sicurezza.
Continua a leggere e inizia a prendere il controllo della sicurezza del tuo MongoDB!
Prerequisiti
- Questo tutorial sarà una dimostrazione pratica. Per seguirla, assicurati di avere quanto segue:
- MongoDB installato sul tuo computer Linux.
- A non-root user with
sudo
privileges.
Creazione di un Utente Amministrativo Dedicato
MongoDB non ha un sistema di autenticazione integrato. Per impostazione predefinita, chiunque abbia accesso al database ha privilegi amministrativi completi, troppo pericoloso! Come proteggere il tuo database? Creerai un utente con privilegi amministrativi e bloccherai i database per quell’utente amministrativo.**
Questa configurazione ti consente di fornire un unico punto di accesso utente con privilegi amministrativi, limitando al contempo ciò che ogni utente può fare all’interno del database. Ad esempio, gli sviluppatori dovrebbero avere solo accesso in lettura ai database, mentre gli amministratori possono creare e modificare i dati.
1. Apri il tuo terminale e esegui il comando mongo
senza argomenti. Questo comando ti consente di connetterti alla tua shell MongoDB come utente admin predefinito.
Questo utente admin è potente in quanto ha pieno accesso in lettura/scrittura a tutti i database sul server, ed è meglio evitare di utilizzare questo utente per il lavoro quotidiano.
Riceverai un avviso che dice Il controllo degli accessi non è abilitato…, come mostrato di seguito.
Questo avviso indica che chiunque possa accedere al server MongoDB può eseguire le azioni che desidera con i database. Queste azioni includono ma non si limitano a eliminare, cancellare, aggiornare i database.
Questo avviso appare perché non hai ancora abilitato il controllo degli accessi. Non preoccuparti, per ora. Imparerai come abilitare il controllo degli accessi nella sezione seguente.

2. Successivamente, esegui il comando show dbs
per mostrare tutti i database sul server, inclusi i database admin che un utente normale non dovrebbe vedere.

3. Esegui il comando use admin
di seguito per passare al database admin poiché il tuo focus è sulla creazione di un utente amministrativo dedicato. Questo comando cambia il contesto del database attuale per utilizzare il database admin, come mostrato di seguito.
MongoDB utilizza il database admin per memorizzare le regole di controllo degli accessi e fornire autenticazione integrata, nomi utente e password per gli utenti e i loro ruoli. Non puoi eliminare o rinominare il database admin perché è essenziale per la funzionalità del database.

4. Ora, copia e incolla il codice di seguito nella shell mongo e premi Invio. Questo codice crea un utente chiamato AdminATA
, con una password di LDWbPf6Fy9Ezs3Mv
, ma puoi utilizzare credenziali diverse se preferisci.
Questo nuovo utente ha accesso in lettura/scrittura (readWriteAnyDatabase
) a tutti i database e accesso amministrativo a tutte le raccolte. Ma questo utente non ha privilegi per eliminare/eliminare database e non può eliminare o modificare i privilegi di altri utenti.
Dopo aver eseguito il comando e aver ricevuto un errore, controlla nuovamente il tuo codice e riprova.
5. Fornisci una password sicura quando richiesto, come mostrato di seguito, e premi Invio.

Qui sotto, puoi vedere un messaggio Utente aggiunto con successo. Questo output conferma che hai creato con successo un utente con privilegi amministrativi e li hai limitati ai minimi privilegi necessari.
A questo punto, hai già un utente amministrativo chiamato AdminATA che può fare tutto ciò di cui hai bisogno nel database senza concedere l’accesso a tutti.

6. Infine, esegui il comando exit per uscire dalla shell di mongo.

Aggiunta di sicurezza abilitando l’autenticazione
Ora che hai un utente amministrativo, aggiungerai un altro livello di sicurezza abilitando l’autenticazione. Farlo permette l’accesso al database solo agli utenti con le credenziali corrette.
L’autenticazione si riferisce al processo di convalida di una connessione, di solito fornendo un nome utente e una password o usando un token di autenticazione. L’autenticazione garantisce che tu sia chi dici di essere e non un impostore che cerca di accedere alle risorse.
1. Abilita l’autenticazione modificando il file di configurazione di MongoDB con quanto segue e salva le modifiche:
- Apri il file /etc/mongod.conf nel tuo editor di testo preferito. Il file /etc/mongod.conf contiene la configurazione del tuo cluster MongoDB.
- Cerca e decommenta la direttiva #security rimuovendo il simbolo # di fronte alla direttiva, come mostrato di seguito. Questa direttiva dice a MongoDB di cercare l’impostazione di sicurezza nel file di configurazione.
- Aggiungi una nuova riga sotto la direttiva security che dica authorization: enabled. Nota che la linea authorization: enabled è indentata (ha due spazi all’inizio), come mostrato di seguito.

2. Successivamente, esegui il seguente comando systemctl
per riavviare il server MongoDB affinché le modifiche abbiano effetto.
3. Infine, esegui il comando sottostante per visualizzare lo stato del servizio MongoDB.
Di seguito, puoi vedere una linea che dice Attivo: attivo (in esecuzione) in testo verde, che indica che il tuo server MongoDB è in esecuzione e pronto ad accettare connessioni.

Test se l’autenticazione funziona
Hai appena abilitato l’autenticazione, ma come puoi sapere se funziona? Effettuerai l’accesso con l’utente amministrativo per testare ed assicurarti che l’autenticazione funzioni visualizzando i database.
1. Esegui i seguenti comandi per accedere alla shell mongo
come hai fatto nella sezione “Creazione di un utente amministrativo dedicato” (passaggio uno).
Come puoi vedere di seguito, non ricevi più l’avviso Il controllo degli accessi non è abilitato… riguardo l’abilitazione dell’autenticazione. Invece, otterrai un messaggio che ti indica la versione del tuo server MongoDB e della shell MongoDB.

2. Successivamente, esegui di nuovo il comando show dbs
per verificare se puoi ancora accedere al database.
Il comando dovrebbe mostrarti tutti i database, anche il database admin. Ma come vedi di seguito, non appare nulla. Perché? La visualizzazione dell’elenco dei database è un privilegio riservato solo agli utenti amministrativi.
Non hai autenticato la tua shell mongo per utilizzare il ruolo Admin, quindi non sei autorizzato a visualizzare l’elenco dei database.

Con l’autenticazione abilitata, la connessione fallirà se qualcuno tenta di accedere al database utilizzando una stringa di connessione che non contiene le credenziali corrette.
Autenticare le stringhe di connessione è una parte fondamentale della sicurezza di MongoDB, e dovresti implementare l’autenticazione a tutti i livelli dell’applicazione. Tutte le connessioni a MongoDB devono utilizzare una stringa di autenticazione composta da credenziali. Queste credenziali includono il nome utente e la password corretti.
3. Esegui il comando exit
per uscire dalla shell di MongoDB.
4. Ora, esegui il comando di seguito per accedere alla shell di MongoDB con il nome utente (-u
) e la password (-p
) del nuovo utente amministrativo creato. Sostituisci AdminATA
con il nome utente che hai creato nella sezione “Creazione di un Utente Amministrativo Dedicato” (passo quattro).
Il parametro --authenticationDatabase
indica alla shell di MongoDB di autenticarsi contro il database admin
.
5. Fornisci la password del tuo utente amministrativo quando richiesto.


6. Infine, esegui nuovamente il comando show dbs
per vedere se riesci a visualizzare tutti i database.
Questa volta, come puoi vedere di seguito, l’elenco dei database viene visualizzato poiché sei un utente amministratore.

Conclusione
In questo tutorial, hai imparato come connetterti per creare un utente amministrativo e abilitare l’autenticazione. Hai imparato a prendere il controllo della sicurezza di MongoDB e a imporre restrizioni su chi può accedere ai database sul tuo server.
A questo punto, decidi tu chi può accedere a cosa. Quindi, qual è il prossimo passo per te? Forse imparare come utilizzare un contenitore MongoDB in modo sicuro?