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

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

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

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


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

Для создания вьюшки можно выполнить примерно следующий запрос:

CREATE VIEW зарплата AS

SELECT поля, разрешенные для налоговой

FROM работники, доходы

WHERE навести связи

Теперь в ветке Databases/Northwind/Views. Появился новый объект - "Зарплата". Если щелкнуть по нему правой кнопкой и в появившемся меню выбрать All tasks/Manage permissions, то перед нами откроется окно настройки прав, как для таблиц. Настраиваем доступ для доступа налоговой и сохраняем. Чтобы просмотреть содержимое вьюшки, нужно выполнить запрос:

SELECT *

FROM Зарплата

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

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

Таким образом, с помощью разных вьюшек к одним и тем же таблицам экономисты могут видеть одни данные, бухгалтеры другие, а отдел кадров - третьи. Если нужно показать какую-то дополнительную колонку, просто добавляем в запрос вьюшки - и дело сделано. Никаких прав изменять уже не надо.

Системные вьюшки

В каждой базе данных могут быть системные вьюшки, которые создаются сервером автоматически. Не советую разрешать доступ к ним, потому что они могут показать что-нибудь лишнее, например, то, что поможет хакеру поднять свои права или просто испортить данные. Системные вьюшки начинаются с префикса "sys", а в колонке Type списка светится надпись System.

Процедуры и функции

Современные серверы баз данных поддерживают очень удобную вещицу – хранимые процедуры и функции. Это код на языке PL/SQL или Transact-SQL (в зависимости от базы), который выполняется прямо на сервере баз данных. Через такие процедуры можно выполнять какие-либо действия на сервере или просто выбирать данные, как во вьюшке. Каждой процедуре можно назначать свои права.

При рассмотрении ролей мы уже видели процедуры в списке объектов, на которые можно назначать права, и в этих строчках доступна только колонка EXEC (выполнение), потому что процедуры можно только выполнять.

Хранимые процедуры и функции расположены внутри определенной базы. Чтобы увидеть процедуры, например, базы данных Northwind, выбери ветку Databases/Northwind/Stored Procedures. Здесь полно системных процедур, имена которых начинаются с префикса "dt_", а в колонке Type светится надпись System. К таким процедурам доступа лучше не разрешать никому, если только нет особой надобности. Функции можно увидеть в ветке Databases/Northwind/User defined function.

Назад на стр. 052-074-4  Содержание  Вперед на стр. 052-074-6