Sommario
Quando stabiliamo il nostro servizio in un ambiente di produzione o magari in un ambiente di sviluppo con più utenti, la prima cosa che dobbiamo fare è creare uno schema di sicurezza, questo ci permette di prevenire il nostro Banche dati sono accessibili da persone in modo errato.La caratteristica principale di MongoDB è che quando si installa un'istanza viene eseguita senza aver creato alcun tipo di misura di autenticazione, è così per facilitare l'inizio dello sviluppo, ma arriva un punto in cui dobbiamo proteggere la nostra infrastruttura.
Un altro punto importante che è legato alla questione della sicurezza e del backup dei nostri dati, è quando dobbiamo fare un backup di un certo momento, ma non vogliamo che ci sia movimento di dati, poiché in questo modo garantiamo l'integrità del nostro Database e raccolte di documenti. In questo aspetto c'è anche uno strumento all'interno MongoDB che ci consente di bloccarlo temporaneamente per garantire che ciò che copiamo sia appropriato.
RequisitiI requisiti di cui abbiamo bisogno in questa occasione sono molto semplici, dobbiamo semplicemente avere un'istanza di MongoDB installato e funzionante sul nostro sistema, dovremo anche accedere al servizio tramite la console. Questo tutorial è stato sviluppato in finestre, quindi alcuni comandi potrebbero cambiare in altri sistemi operativi, ma tutto ha a che fare con ciò che viene fatto al di fuori della console MongoDB, e il modo in cui esprimiamo le rotte.
L'impostazione dei parametri di autenticazione dell'utente non è vitale per il funzionamento di MongoDB in produzione, poiché possiamo installare il servizio in modo che l'apparecchiatura su cui è in esecuzione disponga di un filtro di connessione, quindi se proviamo ad accedere a tale apparecchiatura al di fuori della rete, non avremo accesso.
Questo approccio semplicistico alla sicurezza è molto efficace, ma solo per i progetti in cui il servizio non è condiviso con altri team, poiché se abbiamo diversi team di sviluppo che lavorano sullo stesso server abbiamo bisogno di qualcos'altro. Questo è dove il autenticazione, con esso ci occupiamo di richiedere un utente e una password per raccolta se lo desideriamo, quindi abbiamo la possibilità di separare adeguatamente le diverse istanze per ogni computer.
Entrambe le misure di sicurezza non sono esclusive e se vogliamo usarle contemporaneamente, ciò che stiamo facendo è creare un servizio molto più sicuro per il nostro ambiente, che si tratti di produzione, pre-produzione o sviluppo multi-team.
Il autenticazione nella sua forma più elementare si ottiene con il comando creare un utente Questo deve essere eseguito quando abbiamo selezionato il Banca dati amministratore che è dove dovrebbero essere i nostri utenti.
È importante notare che dalla versione 2.6 di MongoDB è che il metodo ha cominciato ad essere usato creare un utente, in passato tutto si risolveva con il metodo Aggiungi utenteTuttavia, la modifica è stata apportata per consentire una maggiore versatilità durante le modifiche.
Vediamo come possiamo impostare un utente amministratore e quindi un utente che può solo leggere il Database test.
La struttura del documento che riceve il metodo creare un utente è il prossimo:
{"User": "username", "pwd": "password", "roles": [{"role": "", "db": ""},]}Come abbiamo notato, dobbiamo stabilire il nome e la password per l'utente che stiamo creando, ma oltre a questo dobbiamo anche creare i ruoli, che è una struttura di permessi che ci permetterà di definire i poteri che diamo all'utente .
Nell'esempio seguente creeremo un utente amministratore che abbia accesso a tutte le Banche dati e che può controllare il servizio, per questo useremo il ruoli:
- clusterAdmin
- readAnyDatabase
- leggere scrivere
Con questi tre parametri possiamo già avere il nostro primo utente da gestire. Vediamo come appare su console:
Con questo abbiamo già creato con successo il nostro utente amministratore, ora dobbiamo ricordare correttamente il nome utente e la password perché il prossimo passo che faremo è abilitare la sicurezza, per questo dobbiamo avviare il servizio con il parametro -auth.
Al riavvio del servizio possiamo quindi inserire il nostro utente amministratore appena creato e per testarlo creeremo un utente che può solo leggere il Banca dati. Vediamo come riavviare il servizio nei seguenti passaggi.
Dobbiamo semplicemente fermarlo prima, ad esempio in finestre ci posizioniamo sulla console in cui è in esecuzione e premiamo i tasti CTRL + C. Quindi ricominciamo normalmente il nostro servizio ma alla fine passiamo il parametro aut, come possiamo vedere nella seguente console:
Fatto ciò, torneremo alla console di controllo di MongoDB, ma in questo caso se useremo il nostro utente appena creato:
mongo.exe --username = root --password = 123456 adminCon quella riga precedente possiamo accedere al nostro servizio in sicurezza, possiamo vederlo nell'immagine seguente:
È importante ricordare che dobbiamo utilizzare una password più sicura di "123456" in questo esempio viene utilizzata solo a scopo dimostrativo, tuttavia per un ambiente di produzione non è adatta.
Poiché abbiamo verificato come accedere con l'autenticazione, creeremo un utente che può leggere solo nel Banca dati test, per questo ripeteremo la creazione di un utente, ma specificheremo il ruolo:
leggereQuindi, in questo modo limiteremo l'utente a non poter scrivere nelle raccolte. Vediamo la risposta nella nostra console:
Ora, quando proviamo a scrivere un documento, otterremo un errore:
Abbiamo visto poi come abbiamo già messo in sicurezza adeguatamente i nostri utenti, è chiaro che questo lavoro di amministrazione degli utenti è un po' complesso, ma una volta fatto possiamo avere grande certezza che non avremo accessi non autorizzati al Banche dati che stiamo proteggendo.
Una delle attività più complesse da garantire quando effettuiamo un backup è che dobbiamo garantire l'integrità dei dati, questo ci porta a un dilemma, individuare il momento in cui lavorano meno utenti ed eseguire il backup o farlo indipendentemente dai dati .
fsync e lockQuesto non dovrebbe essere il caso, ovviamente è sempre consigliabile fare un backup nel momento in cui sappiamo che ci sono il minor numero di utenti poiché evitiamo problemi con le applicazioni, garantendo che i dati siano sempre possibili se utilizziamo ciò che in MongoDB sappiamo come fsync sì serratura.
Con questi due parametri possiamo fare in modo che il nostro Database rifiuti le scritture, e al momento giusto possiamo eseguire i backup in modo appropriato.
Per creare questo blocco dobbiamo eseguire il seguente comando nel nostro Database:
db.runCommand ({"fsync": "1", "lock": "1"});Con questo avremo il nostro Banca dati efficacemente bloccato contro la scrittura:
Come possiamo vedere, è abbastanza semplice ed efficace, ora se vogliamo rompere il blocco, non ci resta che rieseguire il comando:
db.fsyncUnlock ();Con quest'ultimo avremo ancora una volta il nostro Banca dati in grado di ricevere la scrittura:
Sebbene quanto sopra rappresenti una maggiore flessibilità e ci offra molta più sicurezza contro la corruzione dei dati e favorisca l'integrità, in realtà non è una pratica che dovremmo seguire in ambienti di produzione reali.
L'ideale è creare un ambiente con replica, dove possiamo accedere a una copia dei dati e quindi essere in grado di manipolare con una qualsiasi delle opzioni che abbiamo i backup necessari. Essere in una replica del Banca dati produzione possiamo bloccarlo, oppure spegnerlo ed eseguire il backup in modo tale che l'utente non riscontrerà mai un errore nell'applicazione perché non può scrivere un record.
Per quanto riguarda i backup, le cose si complicano poiché è consigliabile utilizzare le repliche del server, tuttavia per come è stato concepito MongoDB, questo tipo di strutture padrone - schiavo Sono molto facili da implementare, quindi comprendere il concetto è il più difficile, ma la sua applicazione è estremamente user-friendly. DBA.
Con questo finiamo questo tutorial, come vediamo l'amministrazione di MongoDB È abbastanza avanzato, se abbiamo una struttura di medie dimensioni, forse abbiamo già pensato al problema della sicurezza degli utenti, anche se creare utenti non è complesso, se è bene sedersi e definire una buona struttura per creare questo tipo di permessi.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo