Cuprins
Când ne stabilim serviciul într-un mediu de producție sau poate într-un mediu de dezvoltare cu mai mulți utilizatori, primul lucru pe care trebuie să-l facem este să creăm o schemă de securitate, aceasta ne permite să prevenim Baze de date sunt accesate incorect de persoane.Principala caracteristică a MongoDB este că atunci când instalați o instanță rulează fără a fi creat niciun tip de măsură de autentificare, este așa pentru a facilita începutul dezvoltării, dar vine un moment în care trebuie să ne securizăm infrastructura.
Un alt punct important legat de problema securității și backupului datelor noastre este atunci când trebuie să facem o copie de siguranță a unui anumit moment, dar nu dorim să existe mișcarea datelor, deoarece astfel garantăm integritatea Colecții de baze de date și documente. În acest aspect există și un instrument în interior MongoDB care ne permite să îl blocăm temporar pentru a ne asigura că ceea ce copiem este adecvat.
CerințeCerințele de care avem nevoie cu această ocazie sunt foarte simple, pur și simplu trebuie să avem o instanță MongoDB instalat și care rulează pe sistemul nostru, vom avea nevoie și de acces la serviciu prin intermediul consolei. Acest tutorial a fost dezvoltat în Windows, deci unele comenzi se pot schimba în alte sisteme de operare, dar totul are legătură cu ceea ce se face în afara consolei MongoDB, și modul în care exprimăm traseele.
Setarea parametrilor de autentificare a utilizatorilor nu este ceva vital pentru funcționarea MongoDB în producție, deoarece putem instala serviciul astfel încât echipamentul pe care rulează să aibă un filtru de conexiune, deci dacă încercăm să accesăm echipamentul respectiv în afara rețelei, nu vom avea acces.
Această abordare simplistă a securității este foarte eficientă, dar numai pentru proiectele în care serviciul nu este partajat cu alte echipe, deoarece dacă avem echipe de dezvoltare diferite care lucrează împotriva aceluiași server, avem nevoie de altceva. Acesta este locul unde autentificare, cu aceasta ne ocupăm să solicităm un utilizator și o parolă pe colecție, dacă dorim, astfel avem posibilitatea separării adecvate a diferitelor instanțe pentru fiecare computer.
Ambele măsuri de securitate nu sunt exclusive și dacă vrem să le folosim simultan, ceea ce facem este să creăm un serviciu mult mai sigur pentru mediul nostru, fie că este vorba despre producție, pre-producție sau dezvoltare pe mai multe echipe.
autentificare în forma sa de bază se realizează cu comanda creaza utilizator Acest lucru trebuie executat atunci când am selectat Bază de date admin care ar trebui să fie utilizatorii noștri.
Este important să rețineți că, de la versiune 2.6 de MongoDB este că metoda a început să fie folosită creaza utilizator, în trecut totul a fost rezolvat prin metodă Adăugați utilizatorCu toate acestea, schimbarea a fost făcută pentru a permite o mai mare versatilitate la efectuarea modificărilor.
Să vedem cum putem seta un utilizator administrator și apoi un utilizator care poate citi numai baza de date Test.
Structura documentului care primește metoda creaza utilizator este următorul:
{"User": "nume de utilizator", "pwd": "parolă", "roluri": [{"rol": "", "db": ""},]}După cum am menționat, trebuie să stabilim numele și parola pentru utilizatorul pe care îl creăm, dar, în plus, trebuie să creăm și rolurile, care este o structură de permisiuni care ne va permite să definim puterile pe care le acordăm utilizatorului .
În exemplul următor vom crea un utilizator administrator care are acces la toate fișierele Baze de date și care poate controla serviciul, pentru aceasta vom folosi roluri:
- clusterAdmin
- readAnyDatabase
- Citeste, scrie
Cu acești trei parametri putem avea deja primul nostru utilizator de gestionat. Să vedem cum arată acest lucru pe consolă:
Cu aceasta am creat deja utilizatorul nostru de administrator cu succes, acum trebuie să ne amintim corect numele de utilizator și parola, deoarece următorul pas pe care îl vom face este să activăm securitatea, pentru aceasta trebuie să începem serviciul cu parametrul -auth.
La repornirea serviciului, putem să plasăm utilizatorul administrator nou creat și, pentru a-l testa, vom crea un utilizator care poate citi numai Bază de date. Să vedem cum repornim serviciul în pașii următori.
Pur și simplu trebuie să o oprim mai întâi, de exemplu în Windows ne poziționăm pe consola în care rulează și apăsăm tastele CTRL + C. Apoi începem serviciul din nou în mod normal, dar la final trecem parametrul autentificare, după cum putem vedea în următoarea consolă:
Odată ce ați făcut acest lucru, vom reveni la consola de control a MongoDB, dar în acest caz, dacă vom folosi utilizatorul nou creat:
mongo.exe --username = root --password = 123456 adminCu acea linie anterioară putem accesa serviciul nostru în siguranță, putem vedea acest lucru în următoarea imagine:
Este important să ne amintim că trebuie să folosim o parolă mai sigură decât „123456” în acest exemplu, este utilizată doar în scopuri demonstrative, totuși pentru un mediu de producție nu este potrivită.
Deoarece am verificat cum să accesăm cu autentificare, vom crea un utilizator care poate citi numai în Bază de date Test, pentru aceasta vom repeta crearea unui utilizator, dar vom specifica rolul:
cititAstfel, în acest fel vom limita utilizatorul să nu poată scrie în colecții. Să vedem răspunsul în consola noastră:
Acum, când încercăm să scriem un document, vom primi o eroare:
Am văzut atunci cum ne-am asigurat deja utilizatorii în mod adecvat, este clar că această activitate de administrare a utilizatorilor este puțin complexă, dar odată ce am făcut-o putem avea o mare certitudine că nu vom avea acces neautorizat la Baze de date pe care îl protejăm.
Una dintre cele mai complexe activități pe care trebuie să le asigurăm atunci când facem o copie de rezervă este că trebuie să garantăm integritatea datelor, acest lucru ne conduce la o dilemă, să localizăm timpul în care mai puțini utilizatori lucrează și să facă copie de rezervă sau să o facă indiferent de date. .
fsync și blocareAcest lucru nu ar trebui să fie cazul, desigur, este întotdeauna recomandat să facem o copie de siguranță în momentul în care știm că există cel mai mic număr de utilizatori, deoarece evităm problemele aplicației, garantând că datele sunt întotdeauna posibile dacă folosim ce în MongoDB știm cum fsync Da Lacăt.
Cu acești doi parametri putem face ca baza noastră de date să respingă scrierile și, în acel moment, putem efectua copiile de rezervă în mod corespunzător.
Pentru a crea această blocare trebuie să executăm următoarea comandă în baza noastră de date:
db.runCommand ({"fsync": "1", "lock": "1"});Cu aceasta vom avea Bază de date blocat eficient împotriva scrisului:
După cum putem vedea, este destul de simplu și eficient, acum, dacă dorim să rupem blocarea, trebuie doar să reluăm comanda:
db.fsyncUnlock ();Cu acesta din urmă vom avea din nou al nostru Bază de date capabil să primească scris:
Deși cele de mai sus reprezintă o flexibilitate mai mare și ne oferă mult mai multă securitate împotriva corupției datelor și favorizează integritatea, într-adevăr nu este o practică pe care ar trebui să o urmăm în medii reale de producție.
Idealul este să creăm un mediu cu replicare, unde putem accesa o copie a datelor și astfel să putem manipula cu oricare dintre opțiunile pe care le avem copiile de rezervă necesare. Fiind într-o replică a Bază de date producția o putem bloca sau opri și face backupul în așa fel încât utilizatorul să nu întâmpine niciodată o eroare în aplicație deoarece nu poate scrie o înregistrare.
În ceea ce privește copiile de rezervă, lucrurile devin mai complicate, deoarece este recomandabil să folosiți replici de server, totuși datorită modului în care a fost conceput MongoDB, acest tip de structuri stăpân - sclav Acestea sunt foarte ușor de implementat, astfel încât înțelegerea conceptului este cea mai dificilă, dar aplicația sa este extrem de ușor de utilizat. DBA.
Cu aceasta terminăm acest tutorial, așa cum vedem administrarea MongoDB Este destul de avansat, dacă avem o structură de dimensiuni medii, este posibil să ne fi gândit deja la problema securității utilizatorilor, deși crearea utilizatorilor nu este complexă, dacă este bine să ne așezăm și să definim o structură bună pentru a crea acest tip de permise.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv