Разрешите войти? Фленов Михаил 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. |