Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #52, МАРТ 2005 г.

Разрешите войти?

Фленов Михаил aka Horrific

Спецвыпуск: Хакер, номер #052, стр. 052-074-1


www.vr-online.ru

Настройка прав доступа к базе данных

Безопасность сервера во многом зависит от того, как хорошо администратор настроит права доступа на объекты. Разрешил пользователю чуть больше необходимого - жди проблем.

Нет, пользователь не будет использовать твои ошибки в своих корыстных целях. Ими воспользуюсь я или другой хакер. В этом случае ты получишь уникальную возможность распрощаться со своими таблицами данных или со всей БД. Наша жизнь беспощадна не только в реале, но и в виртуале.

Почему-то под безопасностью базы данных обычно понимают защиту от вторжения извне, которую замышляет или уже совершает злой взломщик. На самом деле, такие взломы происходят нечасто. Я работаю программистом в крупной конторе, и администратор вообще не задумывается о защите портов сервера, на котором открыто все, что угодно. На одном сервере крутится куча баз, программ и даже FTP-сервер, который за пять лет ни разу не взломали :). С большим трудом я уговорил этого админа установить web-сервер на отдельное железо, поскольку если бы общественность узнала IP-адрес нашего главного сервера, то смогла бы при желании надругаться над ним. Ни база данных, ни Windows не патчились уже несколько лет.

А внутренние проблемы из-за неправильной политики безопасности возникают каждый день. Все пользователи входят в систему с правами администратора и могут творить все, что только захотят. Лишние права предоставляют пользователям возможность показывать свою безграмотность во всей ее красе, поэтому я расскажу о безопасности без учета того, откуда исходит угроза – извне (от хакера) или изнутри (от ушастого пользователя).

В качестве примера я выбрал MS SQL Server, поскольку он содержит все, что есть в других базах (Oracle, MySQL и т.д.), и имеет дополнительные возможности управления безопасностью. Кто-то может тут подумать, что это делает MS круче. Не хочу ввести тебя в такое заблуждение: дополнительные возможности избыточны и только добавляют проблем.

Серверные роли

В Windows и других ОС для управления правами существуют группы и пользователи. С помощью групп можно объединить пользователей в кучу и назначать права им всем сразу, что проще, чем назначать права каждому. В базах данных для этих целей существует понятие роли. Допустим, сотня пользователей должны иметь право читать данные из определенной таблицы. Предоставлять каждому из них это право весьма напряжно. Намного проще создать роль, которой разрешено читать, а потом включить в нее всех нужных пользователей. Результат подобен группировке.

В SQL-сервере бывает два типа ролей: серверные и баз данных (о вторых читай ниже). Серверные роли определены заранее, и их изменять нельзя. Открой в Enterprise Manager ветку Security/Server role, и в правой части окна увидишь список встроенных ролей. Что может делать пользователь соответствующей роли, можно определить по описанию.

Для добавления уже существующего пользователя в роль нужно щелкнуть по строке роли дважды, и после этого в появившемся окне можно будет добавлять пользователей в роль или удалять их. На закладке Permission более подробно описано, что может делать выделенный пользователь.

Содержание  Вперед на стр. 052-074-2