Obsah
Při vytváření naší služby v produkčním prostředí nebo možná ve vývojovém prostředí s několika uživateli je první věcí, kterou musíme udělat, vytvořit schéma zabezpečení, což nám umožní zabránit Databáze k nim lidé přistupují nesprávně.Hlavním rysem MongoDB spočívá v tom, že při instalaci instance běží, aniž by vytvořil jakýkoli typ autentizačního opatření, je to takové, aby to usnadnilo začátek vývoje, ale přichází bod, kdy musíme zajistit naši infrastrukturu.
Dalším důležitým bodem, který souvisí s otázkou zabezpečení a zálohování našich dat, je, když potřebujeme provést zálohu v určitém okamžiku, ale nechceme, aby došlo k pohybu dat, protože tímto způsobem zaručujeme integritu našich Sbírky databází a dokumentů. V tomto aspektu existuje také nástroj uvnitř MongoDB což nám umožňuje jej dočasně zablokovat, abychom zajistili, že to, co kopírujeme, je vhodné.
PožadavkyPožadavky, které při této příležitosti potřebujeme, jsou velmi jednoduché, prostě musíme mít instanci MongoDB nainstalován a spuštěn v našem systému, budeme také potřebovat přístup ke službě prostřednictvím konzoly. Tento tutoriál byl vyvinut v Okna, takže některé příkazy se mohou v jiných operačních systémech změnit, ale vše souvisí s tím, co se děje mimo konzolu MongoDB, a způsob, jakým vyjadřujeme trasy.
Nastavení parametrů ověřování uživatelů není pro fungování zásadní MongoDB ve výrobě, protože můžeme nainstalovat službu tak, aby zařízení, kde je spuštěno, mělo filtr připojení, takže pokud se pokusíme získat přístup k uvedenému zařízení mimo síť, nebudeme mít přístup.
Tento zjednodušený přístup k zabezpečení je velmi účinný, ale pouze pro projekty, kde není služba sdílena s jinými týmy, protože pokud máme různé vývojové týmy pracující na stejném serveru, potřebujeme něco jiného. Tady je ověřováníS ním se postaráme o vyžádání uživatele a hesla pro každou kolekci, pokud si to přejeme, takže máme možnost adekvátně oddělit různé instance pro každý počítač.
Obě bezpečnostní opatření nejsou exkluzivní, a pokud je chceme používat současně, vytváříme mnohem bezpečnější službu pro naše prostředí, ať už jde o produkci, předprodukci nebo vývoj více týmů.
The ověřování ve své nejzákladnější podobě je dosaženo příkazem vytvořit uživatele To musí být provedeno, když jsme vybrali Databáze admin kde by měli být naši uživatelé.
Je důležité si uvědomit, že od verze 2.6 z MongoDB je, že metoda se začala používat vytvořit uživatele, v minulosti bylo vše vyřešeno metodou přidat uživateleTato změna však byla provedena, aby umožnila větší univerzálnost při provádění změn.
Podívejme se, jak můžeme nastavit administrátorského uživatele a poté uživatele, který může číst pouze databázi test.
Struktura dokumentu, který metodu obdrží vytvořit uživatele je další:
{"Uživatel": "uživatelské jméno", "pwd": "heslo", "role": [{"role": "", "db": ""},]}}Jak jsme poznamenali, musíme určit jméno a heslo pro uživatele, kterého vytváříme, ale kromě toho musíme také vytvořit role, což je struktura oprávnění, která nám umožní definovat pravomoci, které dáváme uživateli .
V následujícím příkladu vytvoříme administrátorského uživatele, který má přístup ke všem Databáze a která může ovládat službu, k tomu použijeme role:
- clusterAdmin
- readAnyDatabase
- číst psát
Díky těmto třem parametrům již můžeme mít prvního uživatele ke správě. Podívejme se, jak to vypadá na konzole:
S tímto jsme již úspěšně vytvořili našeho administrátorského uživatele, nyní si musíme uživatelské jméno a heslo řádně zapamatovat, protože dalším krokem, který uděláme, je povolení zabezpečení, k tomu musíme spustit službu s parametrem -pravda.
Při restartování služby pak můžeme umístit našeho nově vytvořeného administrátorského uživatele a pro jeho otestování vytvoříme uživatele, který může pouze číst Databáze. Podívejme se, jak restartujeme službu v následujících krocích.
Jednoduše to musíme nejprve zastavit, například v Okna umístíme se na konzolu, ve které běží, a stiskneme klávesy CTRL + C. Poté službu spustíme znovu normálně, ale nakonec předáme parametr autoriz, jak můžeme vidět v následující konzole:
Jakmile to bude hotové, vrátíme se do ovládací konzoly MongoDB, ale v tomto případě, pokud budeme používat našeho nově vytvořeného uživatele:
mongo.exe -uživatelské jméno = root -heslo = 123456 adminDíky předchozímu řádku můžeme k naší službě přistupovat bezpečně, můžeme to vidět na následujícím obrázku:
Je důležité si uvědomit, že v tomto příkladu musíme použít bezpečnější heslo než „123456“, které se používá pouze pro demonstrační účely, ale pro produkční prostředí není vhodné.
Protože jsme ověřili, jak přistupovat pomocí ověřování, vytvoříme uživatele, který může číst pouze v Databáze testZa tímto účelem zopakujeme vytvoření uživatele, ale uvedeme roli:
čístTímto způsobem omezíme uživatele, aby nemohl zapisovat do kolekcí. Podívejme se na odpověď v naší konzole:
Nyní při pokusu o napsání dokumentu se zobrazí chyba:
Viděli jsme, jak jsme již dostatečně zajistili naše uživatele, je jasné, že tato správa uživatelů je trochu složitá, ale jakmile to uděláme, můžeme mít velkou jistotu, že nebudeme mít neoprávněný přístup k Databáze které chráníme.
Jednou z nejsložitějších činností, které je třeba zajistit při vytváření zálohy, je, že musíme zaručit integritu dat, což nás přivádí k dilematu, vyhledání času, kdy pracuje méně uživatelů a provádí zálohu, nebo to provést bez ohledu na data .
fsync a zámekTo by nemělo být samozřejmostí, vždy je samozřejmě vhodné provést zálohu v době, kdy víme, že je nejmenší počet uživatelů, protože se vyhneme problémům s aplikací, přičemž je zaručeno, že data budou vždy možná, pokud použijeme MongoDB víme jak fsync Y zámek.
Díky těmto dvěma parametrům můžeme nechat naši databázi odmítnout zápisy a v tu správnou chvíli můžeme zálohy provést odpovídajícím způsobem.
K vytvoření tohoto zámku musíme v naší databázi spustit následující příkaz:
db.runCommand ({"fsync": "1", "lock": "1"});S tímto budeme mít své Databáze účinně uzamčeno proti zápisu:
Jak vidíme, je to docela jednoduché a efektivní, pokud chceme zámek prolomit, stačí znovu spustit příkaz:
db.fsyncUnlock ();S tím druhým budeme mít opět své Databáze schopný přijímat psaní:
Ačkoli výše uvedené představuje větší flexibilitu a poskytuje nám mnohem větší zabezpečení proti poškození dat a podporuje integritu, ve skutečnosti to není praxe, kterou bychom měli dodržovat v reálných produkčních prostředích.
Ideální je vytvořit prostředí s replikací, kde budeme mít přístup ke kopii dat a budeme tak moci manipulovat s jakoukoli z možností, že máme potřebné zálohy. Být v replice Databáze produkci můžeme zablokovat, nebo vypnout a provést zálohu tak, aby se uživatel nikdy nesetkal s chybou v aplikaci, protože nemůže zapsat záznam.
Pokud jde o zálohování, věci se komplikují, protože je vhodné používat repliky serveru, ale vzhledem ke způsobu, jakým byl koncipován MongoDB, tento typ struktur otrokář Jsou velmi snadno implementovatelné, takže porozumět konceptu je nejtěžší, ale jeho aplikace je extrémně uživatelsky přívětivá. DBA.
Tím tento tutoriál dokončíme, protože vidíme administraci MongoDB Je to docela pokročilé, pokud máme středně velkou strukturu, možná jsme již přemýšleli o problému zabezpečení uživatelů, přestože vytváření uživatelů není složité, pokud je dobré si sednout a definovat dobrou strukturu pro vytvoření tohoto typu povolení.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod