[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Базы Данных / Разное /

Замечания о привилегиях в Interbase/Firebird

Описание некоторых тонкостей обработки привилегий InterBase

Напомню, что Interbase/Firebird хранит привилегии всех объектов (представлений, триггеров, хранимых процедур, пользователей и ролей) в системной таблице RDB$USER_PRIVILEGES. Поле "RDB$USER" содержит название объекта, а тип "пользователя" определяет значение поля "RDB$USER_TYPE".

На этапе активной модификации метаданных при создании БД часто бывает, что какие-то проектные решения пересматриваются и объекты из БД удаляются.
Но их привилегии при этом остаются в системе (исключение - роли).
Конечно, в этом нет ничего страшного, просто в БД накапливаются неактуальные записи.
Впрочем, если ваша версия Interbase/Firebird не содержит системного индекса по полю "RDB$USER" таблицы "RDB$USER_PRIVILEGES" а вы сами его не создали, значит лишние записи замедлят выполнения всех запросов из-за полного просмотра таблицы.
Для аннулирования неактуальных привилегий представлений, процедур и триггеров достаточно выполнить простой скрипт:

/* Удаление привилегий несуществующих представлений */
delete
  from RDB$USER_PRIVILEGES UP
 where UP.RDB$USER_TYPE = 1
   and not exists (select 1
                     from RDB$VIEW_RELATIONS VR
                    where VR.RDB$VIEW_NAME = UP.RDB$USER);

/* Удаление привилегий несуществующих триггеров */
delete
  from RDB$USER_PRIVILEGES UP
 where UP.RDB$USER_TYPE = 2
   and not exists (select 1
                     from RDB$TRIGGERS T
                    where T.RDB$TRIGGER_NAME = UP.RDB$USER);

/* Удаление привилегий несуществующих хранимых процедур */
delete
  from RDB$USER_PRIVILEGES UP
 where RDB$USER_TYPE = 5
   and not exists (select 1
                     from RDB$PROCEDURES P
                    where P.RDB$PROCEDURE_NAME = UP.RDB$USER);

А как обстоит ситуация с привилегиями пользователей?
При удалении логина пользователя сервера без явного выполнения соответствующих REVOKE его привилегии как пользователя БД сохраняются(!), так как нет механизма, который бы обрабатывал это событие - ведь пользователи определены на уровне сервера, а не базы данных.
Так что администраторам надо внимательно относится не только к раздаче привилегий, но и к своевременному их аннулированию при удалении логина пользователя (либо использовать механизм ролей). Иначе, если новому пользователю присвоить логин ранее существовавший на сервере (по имени или должности, например), то он "унаследует" все привилегии прежнего пользователя.



Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Базы Данных / Разное /

Разработка запросов
08-03-2010   

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

Кол. просмотров: общее - 3656 сегодня - 1

Параметрическое определение порядка сортировки данных
08-03-2010   

В различных сетевых форумах часто обсуждается вопрос: как получить отсортированные результаты выполнения запроса, передавая хранимой процедуре некоторый параметр? Я собрал несколько решений этой задачи, предложенных талантливыми программистами. Основная часть идей, изложенных в этой статье... подробнее

Кол. просмотров: общее - 3732 сегодня - 0

Delete from mytable; Commit:.. или Восстановление данных в СУБД Interbase
08-03-2010   

Данная статья написана на основе статей: The Interbase On - Disk Structure by Ann Harrison ; Structure of a Data Page by Paul Beach, а так же включает в себя мой горький опыт в удалении важных данных, а потом в их успешном восстановлении. Я никоим образом не собираюсь нарушать права ни выше перечисленных авторов, ни компаний, чьи зарегистрированные торговые знаки перечисленные в данной статье... подробнее

Кол. просмотров: общее - 3771 сегодня - 0

Часто задаваемые вопросы по базам данных
08-03-2010   

СУБД — Система Управления Базами Данных (dbms — database management system). Программа, либо комплекс программ, предназначенных для полнофункциональной работы с данными. Как правило, включает в себя инструменты для создания и изменения структуры хранения наборов данных... подробнее

Кол. просмотров: общее - 4206 сегодня - 0

Временные таблицы в sql server. Так ли необходимы временные таблицы?
07-03-2010   

Временные таблицы всегда прекрасно помогали разработчикам. Раньше, когда я использовал access, я обычно создавал временные таблицы, которые удалял после решения задачи. При использовании sql server решить задачу можно гораздо проще. Не так ли?... подробнее

Кол. просмотров: общее - 3711 сегодня - 1



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects