Когато дадено приложение изисква голяма географска област за изпълнение, организацията често е принудена да съхранява данните си в облака. Приложенията, изградени на MongoDB, не са изключение от тази концепция. Неуспехът да се защитят чувствителни данни може да причини сериозни проблеми на бизнеса, включително съсипана репутация, несъответствия на данните, финансови загуби, а понякога и пълна загуба на данни.
Данните, съхранявани в облака, са склонни към интерес от криминални елементи. Хората със злонамерени намерения могат по-лесно да получат достъп, когато не са предвидени стандартни процедури, за да се гарантира сигурността на базата данни. Някои от тези нестандартни процедури включват...
- Лошо управление на пароли:някои разработчици накрая кодират паролите в изходните файлове на проекта, така че ако хакер декомпилира приложението, те могат лесно да извлекат съдържанието.
- Нежелание или неуспех при актуализиране на базата данни и безплатните плъгини. По-новите версии на базата данни имат нови функции, може да са по отношение на сигурността или по-скоро да имат някои функции, коригирани от предшествениците.
- Нестандартни конфигурации на базата данни, например не използват криптирани ключове за декриптиране или по-скоро не използват никакъв протокол за сигурност .
Атаките към бази данни се увеличават всеки ден (и тенденцията се очаква да продължи), но може да не станете жертва, освен ако не приложите съответните съображения за сигурност. В тази статия ще обсъдим някои от процедурите, които можете да проверите с инсталацията на MongoDB в облак. Не е необходимо да прилагате всички от тях, но поне се опитайте да изберете тези, които, ако бъдат избегнати, биха могли да поставят данните ви в катастрофална ситуация.
Съображения за сигурност на MongoDB за предварително производство
Това са съображения, които трябва да се уверите, че са добре конфигурирани, когато се каните да внедрите MongoDB в производствената среда. Те включват:
- Активиране и налагане на удостоверяване за контрол на достъпа
- Конфигуриране на контрол на достъп, базиран на роли
- Ограничете излагането на мрежата
- Шифроване на комуникации
- Шифроване на данни
- Дейности на системата за одит
- Използвайте специален потребител, за да стартирате MongoDB
- Използвайте официални и актуализирани пакети MongoDB
- Деактивирайте изпълнението на Javascript, ако не е необходимо
- Бъдете актуализирани с корекции на сигурността на MongoDB
1. Разрешаване и налагане на удостоверяване за контрол на достъп
Контролът на достъпа не е активиран в MongoDB по подразбиране, но това не означава, че разгръщате и вашата база данни без тази опция. Всъщност някои пакети за бази данни като Bitnami ще изискват от вас да настроите някакъв контрол на достъпа, преди да използвате вашата база данни. Ако не го направи, всеки може да има достъп до базата данни, следователно излагане на дори много чувствителни данни. Посочете някакъв механизъм за удостоверяване, като SCRAM, така че клиентите, които ще бъдат свързани, трябва да предоставят някои валидни идентификационни данни, преди да могат да се свържат с базата данни.
Низът за връзка трябва да изглежда така:
mongodb://[username:[email protected]]host[:port1][/[defaultauthdb]and not just
mongodb://host[:port1]/[defaultauthdb]
2. Конфигуриране на контрол на достъп, базиран на роли
След добавяне на потребители с административни разрешения, ограничете ролите, присвоени на тези потребители, като използвате контрол на достъпа, базиран на роли (RBAC). Ролите, които потребителят може да има, включват:четене, запис или и двете към конкретни или всички колекции. Следователно потребителят не може да изпълнява роля, която не му е назначена, или може да изпълнява операции само с присвоени колекции.
Първо се създава потребителски администратор, след това допълнителни потребители. Ако потребител има привилегии в различни бази данни, можете да създадете един потребител с роли, които предоставят приложими привилегии на база данни, вместо да създавате потребителя няколко пъти в различни бази данни.
Препоръчително е малък брой потребители да имат достъп до базата данни, като потребителите могат да бъдат хора или клиентски приложения.
За да създадете и предоставите потребителски разрешения за определени роли в MongoDB, можете да използвате този пример в обвивката на mongo
use finance
db.createUser(
{
user: "manager",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "read", db: "loans" },
{ role: "read", db: "interests" },
{ role: "read", db: "useraccounts" },
{ role: "readWrite", db: "wages" }
]
}
)
Освен това изберете опции за външно удостоверяване, като LDAP и Kerberos.
3. Ограничете излагането на мрежа
Мрежовата топология, която хоства базата данни, трябва да бъде защитена широко и най-важното да слуша само интерфейса на локалния хост. Това е, за да се избегне излагането на външни връзки, както беше при по-старите версии на MongoDB. Уверете се, че MongoDB работи в надеждна мрежова среда с активирана защитна стена. Контролирайте входящия и изходящия трафик с групи за сигурност, които не могат да се използват с други екземпляри. Използвайте белия списък за IP адреси, за да разрешите достъп от доверени IP адреси, следователно разрешите връзки към екземпляри на MongoDB с мрежови интерфейси и портове само от доверени клиенти.
Освен това деактивирайте директния SSH root достъп.
4. Шифроване на комуникации
Конфигурацията на MongoDB трябва да ограничи входящите и изходящите връзки само до TLS/SSL. TLS/SSL криптира комуникацията между mongod и mongos компоненти на внедряване на MongoDB и всички приложения, свързани с него.
В производствената среда внедряването на MongoDB трябва да използва валидни сертификати, генерирани и подписани от един сертифициращ орган.
5. Шифроване на данните
Данните от базата данни приемат две форми:данни в покой и в пренос. Транзитните данни могат да бъдат защитени чрез използване на криптиране на ниво поле от страна на клиента, но е достъпно само във версия 4.2. TLS/SSL криптирането също се грижи за данните при пренос.
Механизмът за съхранение на WiredTiger от версия 3.2 Enterprise предоставя данни в криптиране на слоя за съхранение. Това потвърждава, че само удостоверени потребители с ключове за декриптиране могат да имат достъп до данните. Ако не използвате криптирането на WiredTiger в покой, използвайте криптиране на файловата система. Криптирането на данни в състояние на покой възпира достъпа до съдържанието на вашата база данни, ако получи достъп до физическия сървър, следователно е решаваща част от защитата на MongoDB.
6. Дейности на системата за одит
Това е корпоративна опция, която позволява проследяване на всички промени в конфигурациите на данни и бази данни. Събитията се записват в syslog връзка или някакъв лог файл. Регистратурите могат да съдържат опити за удостоверяване на DB, включително IP адреси на източника, а информацията може да помогне да се определи кои хостове трябва да бъдат блокирани от защитната стена за достъп до базата данни. Освен това човек може да определи добре кои събития да регистрира.
Тези одитни регистрационни файлове като цяло ще помогнат на администратора да направи някакъв криминалистичен анализ и следователно да зададе стандартни контроли за сигурност.
7. Използвайте специален потребител, за да стартирате MongoDB
Процесите на MongoDB трябва да се изпълняват със специален потребителски акаунт на операционната система, който трябва да има разрешения за достъп.
8. Използвайте официални и актуализирани пакети MongoDB
Превърнете проверки за автентичност на вашите пакети, за да сте сигурни, че са официалните пакети на MongoDB. Използването на най-новите драйвери на MongoDB и най-новата версия на самата база данни предлагат по-голяма стабилност на сигурността от предшествениците. Например, версия 4.2 предлага криптиране на ниво поле от страна на клиента. Затова се уверете, че мигрирате към най-новата версия на MongoDB.
9. Деактивирайте изпълнението на Javascript, ако не е необходимо
mapReduce и $where са някои от изпълнимите JavaScript кодове в MongoDB и ако не се управляват добре, те могат да доведат до нежелано несъответствие на данните или да позволят непряк достъп до данните и да приложи някои промени, ако иска .
По принцип този JavaScript код ще позволи външни инжекции, следователно невалидирани данни да влизат във вашата база данни. Можете също да изберете да използвате пакети като mongoose за валидиране и свързване с вашата база данни. Използвайте оператори MongoDB вместо JavaScript изрази.
10. Актуализирайте се с поправките на сигурността на MongoDB
Протоколите за сигурност може да бъдат нарушени от нападателите с времето, следователно е необходимо да се включват разширени процедури. Много е важно да бъдете в крак с най-добрите актуализации за сигурност и корекции на грешки от бележките за версията на MongoDB. Страницата за предупреждение на MongoDB е създадена основно за тази цел.
Изискайте техническо ръководство за внедряване на сигурността, ако е възможно, и се уверете, че внедряването ви е в съответствие със стандартите за сигурност.
Заключение
Базите данни в производството са предразположени към атаки срещу сигурността, поради което е необходимо да инвестирате сериозно в защита на чувствителни данни. Процедурите за сигурност варират от данни в транзит, данни в покой и свързаните клиентски приложения. Освен споменатите по-горе практики, предприятията за укрепване на сървъри ще осигурят друг слой защита на данните.
Важно е да използвате най-новите версии на MongoDB и плъгини, освен да сте в крак с най-новата сигурност и корекции на грешки, свързани с вашата версия.