Какие аспекты следует учитывать, чтобы иметь безопасную базу данных?
Наряду с избеганием sqlInjection
, что еще нужно учитывать? Что должно не быть сделано?
Выключите его и протрите диски .... несколько раз. Чуть менее экстремальный
Во-первых, защитите сервер, хранилище, сеть и уровень ОС.
Затем вы хотите заблокировать доступ к базе данных пользователей
Не забывайте DR. В то время как я шутил о протирании дисков, если ваша оценка риска такова, что кто-то очень хорошо справится с тем, чтобы вывести вас из бизнеса на несколько дней (или навсегда), выжигание вашего центра обработки данных является вопросом безопасности.
Довольно открытый вопрос.
Хорошее начало - прочитать некоторые основы, В Википедии есть хорошая статья в теме. Затем вам нужно изучить детали вашей конкретной системы. Почти все движки баз данных предоставляют массу информации о том, как конкретно защитить свои системы. И не забудьте заглянуть за горизонт: "защищена" не только база данных, но и система, в которой она работает.
SQL-инъекция - распространенная, но одна из многих проблем безопасности, на которые следует обратить внимание.
Вот контрольный список для безопасности SQL Server, который, кажется, сосредоточен на конфигурации самого SQL-сервера: http://www.sqlsecurity.com/FAQs/SQLSecurityChecklist/tabid/57/Default.aspx
Кроме того (если вы не можете полагаться на модель безопасности только для Windows), вам также следует выполнить необходимое упражнение по шифрованию строк подключения.
В Oracle частый выбор дизайна, который я вижу, заключается в том, что приложение всегда входит в систему как один пользователь / схема базы данных - владелец всех объектов для этого приложения.
Лучше всего иметь одного пользователя / схемы, который владеет объектами приложения, тогда REVOKE CREATE SESSION
от этого пользователя. Затем создайте другого пользователя / схему, которая не будет владеть объектами (за исключением, возможно, синонимов), которые будут использоваться приложением для входа в базу данных. Затем выдайте минимально необходимые разрешения (SELECT, INSERT, UPDATE, DELETE, EXECUTE и т. Д.) Пользователю приложения.
Таким образом, вы знаете, что даже если ошибка в приложении может позволить пользователю делать что-то, чего он не должен (например, удалять записи из таблицы), ваши привилегии базы данных гарантируют, что этого не произойдет.
В противном случае, если приложение входит в систему как владелец, невозможно REVOKE
любые привилегии на любой из объектов.