| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > Грамотная настройка ролей |
| Автор: former 11.3.2008, 12:02 |
| БД Firebird 2.0 для доступа к которой используются компоненты FIBPlus. Предполагается три уровня доступа (три роли): администратор, редакторы и пользователи. В пустой БД одна таблица - "Типы устройств", редактировать которую могут только администратор и редактор. При добавлении записи в неё, создаются две таблицы: "Список изделий" и "Список параметров". В сою очередь, при добавлении записи в таблицу "Список изделий" создается ещё одна таблица "Характеристики". Вопрос заключается в следующем. Как автоматически (Без использования менеджеров типа IBExpert) предоставлять права на создание/удаление/редактирование для каждой группы при создании таблиц, а так же генераторов, процедур, триггеров и индексов? Т.е., например, таблица "Характеристики", созданная при добавлении записи одним редактором в таблицу "Список изделий", могла быть отредактирована или удалена другим редактором вместе со связанными с нею триггером, генератором, процедурой и индексом. Или, например, если аналогичное проделывает админ БД (не SYSDBA), то редакторы могли бы удалить. С клиент-серверными БД только начал работать. Посоветуйте, как грамотно организовать политику доступа и управления. |
| Автор: Deniz 11.3.2008, 13:06 |
| Создавать/удалять объекты БД(таблицы, триггеры, процедуры и т.д.) во время работы программы не хорошо. Проектировать БД надо сразу. Раздача прав возможна на уровне БД grant/revoke, но если доступ к записи определяется из ее содержимого, то придется писать свою систему прав и анализировать это в бизнес логике. Логика может быть как на клиенте, так и на сервере, т.е. в хранимой процедуре. |
| Автор: Deniz 11.3.2008, 13:42 | ||
Ты сам даешь пользователю права на select а уже в программе/ХП определяешь должна попадать запись к пользователю или нет. С insert/update/delete примерно тоже самое. Например, в триггере перед удалением проверяешь есть ли права у этого пользователя удалить эту запись, и если нет Exception. Все таки я склоняюсь к бизнес-логике на хранимых процедурах. |