Съдържание
Когато установяваме нашата услуга в производствена среда или може би в среда за разработка с няколко потребители, първото нещо, което трябва да направим, е да създадем схема за сигурност, това ни позволява да предотвратим нашите Бази данни имат неправилен достъп от хора.Основната характеристика на MongoDB е, че когато инсталирате екземпляр, той работи, без да е създал никакъв вид мярка за удостоверяване, това е така, за да се улесни началото на разработката, но идва момент, в който трябва да защитим нашата инфраструктура.
Друг важен момент, свързан с въпроса за сигурността и архивирането на нашите данни, е, когато трябва да направим резервно копие на определен момент, но не искаме да има движение на данни, тъй като по този начин гарантираме целостта на нашите Колекции от бази данни и документи. В този аспект има и инструмент вътре MongoDB което ни позволява временно да го блокираме, за да гарантираме, че това, което копираме, е подходящо.
ИзискванияИзискванията, от които се нуждаем по този повод, са много прости, просто трябва да имаме екземпляр на MongoDB инсталирани и работещи в нашата система, ще се нуждаем и от достъп до услугата през конзолата. Този урок е разработен през Windows, така че някои команди може да се променят в други операционни системи, но всичко е свързано с това, което се прави извън конзолата MongoDB, и начина, по който изразяваме маршрутите.
Задаването на параметри за удостоверяване на потребителя не е нещо, което е жизненоважно за работата на MongoDB в производство, тъй като можем да инсталираме услугата, така че оборудването, където работи, да има филтър за връзка, така че ако се опитаме да получим достъп до споменатото оборудване извън мрежата, няма да имаме достъп.
Този опростен подход към сигурността е много ефективен, но само за проекти, при които услугата не се споделя с други екипи, тъй като ако имаме различни екипи за разработка, работещи срещу един и същ сървър, се нуждаем от нещо друго. Това е мястото, където удостоверяване, с него ние се грижим да поискаме потребител и парола за колекция, ако желаем, като по този начин имаме възможност за адекватно разделяне на различните екземпляри за всеки компютър.
И двете мерки за сигурност не са изключителни и ако искаме да ги използваме едновременно, това, което правим, е създаването на много по-сигурна услуга за нашата среда, било то производство, предпроизводство или мулти-екипно развитие.
The удостоверяване в най -основната си форма се постига с командата createUser Това трябва да се изпълни, когато сме избрали База данни администратор където нашите потребители трябва да бъдат.
Важно е да се отбележи, че от версията 2.6 на MongoDB е, че методът започна да се използва createUser, в миналото всичко беше решено по метода addUserПромяната обаче е направена, за да позволи по -голяма гъвкавост при извършване на промени.
Нека да видим как можем да зададем администраторски потребител и след това потребител, който може да чете само базата данни тест.
Структурата на документа, който получава метода createUser е следното:
{"Потребител": "потребителско име", "pwd": "парола", "роли": [{"роля": "", "db": ""},]}Както отбелязахме, трябва да установим името и паролата за потребителя, който създаваме, но в допълнение към това трябва да създадем и ролите, което е структура на разрешения, която ще ни позволи да дефинираме правомощията, които даваме на потребителя .
В следващия пример ще създадем администраторски потребител, който има достъп до всички Бази данни и това може да контролира услугата, за това ще използваме роли:
- clusterAdmin
- readAnyDatabase
- чети пиши
С тези три параметъра вече можем да управляваме първия си потребител. Нека да видим как изглежда това на конзолата:
С това вече успешно сме създали нашия администраторски потребител, сега трябва да запомним правилно потребителското име и паролата, защото следващата стъпка, която ще направим, е да активираме сигурността, за това трябва да стартираме услугата с параметъра -auth.
При рестартиране на услугата можем да поставим новосъздадения ни администраторски потребител и за да го тестваме, ще създадем потребител, който може само да чете База данни. Нека да видим как ще рестартираме услугата в следващите стъпки.
Просто трябва първо да го спрем, например в Windows позиционираме се на конзолата, в която работи и натискаме клавишите CTRL + C. След това отново стартираме нашата услуга нормално, но в крайна сметка предаваме параметъра авт, както можем да видим в следната конзола:
След като това стане, ще се върнем към контролната конзола на MongoDB, но в този случай, ако ще използваме нашия новосъздаден потребител:
mongo.exe -потребителско име = корен -парола = 123456 администраторС този предишен ред можем да получим безопасен достъп до нашата услуга, можем да видим това на следното изображение:
Важно е да запомните, че трябва да използваме по -сигурна парола от "123456" в този пример, тя се използва само за демонстрационни цели, но за производствена среда не е подходяща.
Тъй като сме проверили как да осъществим достъп чрез удостоверяване, ще създадем потребител, който може да чете само в База данни тест, за това ще повторим създаването на потребител, но ще уточним ролята:
ПрочетиПо този начин, ние ще ограничим потребителя да не може да пише в колекциите. Нека видим отговора в нашата конзола:
Сега, когато се опитваме да напишем документ, ще получим грешка:
Тогава видяхме как вече сме осигурили адекватно нашите потребители, ясно е, че тази работа по администриране на потребители е малко сложна, но след като го направим, можем да имаме голяма сигурност, че няма да имаме неоторизиран достъп до Бази данни които защитаваме.
Една от най -сложните дейности, които трябва да гарантираме, когато правим резервно копие, е, че трябва да гарантираме целостта на данните, това ни води до дилема, локализиране на времето, когато работят по -малко потребители и направете резервно копие, или го направете независимо от данните .
fsync и заключванеТова не би трябвало да е така, разбира се, винаги се препоръчва да направите резервно копие в момента, в който знаем, че има най -малък брой потребители, тъй като избягваме проблеми с приложението, като гарантираме, че данните винаги са възможни, ако използваме това, което в MongoDB знаем как fsync Y ключалка.
С тези два параметъра можем да накараме нашата база данни да отхвърли записите и в този подходящ момент можем да извършим съответното архивиране.
За да създадем това заключване, трябва да изпълним следната команда в нашата база данни:
db.runCommand ({"fsync": "1", "заключване": "1"});С това ще имаме своето База данни ефективно блокиран срещу писане:
Както виждаме, това е доста просто и ефективно, сега, ако искаме да прекъснем ключалката, просто трябва да повторим командата:
db.fsyncUnlock ();С последното отново ще имаме своето База данни способни да получат писане:
Въпреки че горното представлява по -голяма гъвкавост и ни дава много по -голяма защита срещу корупция на данни и благоприятства целостта, това всъщност не е практика, която трябва да следваме в реални производствени среди.
Идеалното е да създадем среда с репликация, където да имаме достъп до копие на данните и по този начин да можем да манипулираме с някоя от опциите, че имаме необходимите архиви. Да бъдеш в реплика на База данни production можем да го блокираме или да го изключим и да направим резервно копие по такъв начин, че потребителят никога да не срещне грешка в приложението, тъй като не може да напише запис.
Що се отнася до архивирането, нещата се усложняват, тъй като е препоръчително да се използват сървърни реплики, но поради начина, по който са замислени MongoDB, този тип структури господар - роб Те са много лесни за изпълнение, така че разбирането на концепцията е най-трудно, но приложението й е изключително удобно за потребителя. DBA.
С това завършваме този урок, както виждаме администрацията на MongoDB Тя е доста напреднала, ако имаме структура със среден размер, може би вече сме мислили по въпроса за сигурността на потребителите, въпреки че създаването на потребители не е сложно, ако е добре да седнете и да определите добра структура за създаване на този тип разрешителни.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка