Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Управление доступом к отдельным полям [D7, Firebird]


Mr. D. ©   (2007-02-25 18:17:00) 

Имеется база данных Firebird. Есть некая таблица, пускай с некоторыми заказами. Нужно сделать так, чтобы определенная категория пользователей не имела доступа к этой таблице (тут понятно), другая могла только читать (тоже вроде без проблем), третья могла изменять данные только в определенном поле таблицы, четвертая только в другом поле.

Ну например, самая элементарная структура:

UNIQ_id | NumRequest | DescManager | DescHelper

Поля DescManager и DescHelper - текстовые примечания от соответственно менеджера и службы поддержки (например). И чтобы категория пользователей менеджеры могли добавлять замечания только в свою колонку, а вот поддержка только в свою. Как это все организовать - никак не могу понять.

P.S. Еще хорошо бы разрешить побочный вопрос, как создать такие поля, куда ДОписывать информацию можно было бы, а вот изменять существующую уже нет.


atruhin   (2007-03-06 08:22:00) [1]

> Или примечания объединить в одну таблицу?

Только так. Таблица примечаний в ней ссылка на пользователя (группу пользователей) создавшего примечания.
Иначе обязательно возникнет ситуация когда понадобиться 6 видов пользователей!


Mr. D.   (2007-03-06 01:49:00) [2]

Виталий Панасенко ©   (26.02.07 9:08) [3]
> P.S. Еще хорошо бы разрешить побочный вопрос, как создать
> такие поля, куда ДОписывать информацию можно было бы, а
> вот изменять существующую уже нет.

Даешь разрешение только на INSERT, на UPDATE не даешь.. и все


да, но примечания могут быть от аж 5 видов пользователей - от менеджеров, от бухгалтерии, от склада и т.д. Я предполагал делать 5 полей с примечаниями от разных групп лиц... Делать 5 таблиц тогда с примечаниями?...

Или примечания объединить в одну таблицу?


Ломброзо   (2007-02-27 00:20:00) [3]

Про "горизонтальное" и "вертикальное" деление вьюшками чего-то никто не вспомнил.
"Вертикальное" - делаем для каждой роли Updateable view, например, для первой роли select UNIQ_id, DescManager  from ttt, для второй select UNIQ_id, DescHelper from ttt. Грант на представление, revoke на таблицу.
"Горизонтальное" - добавить в нужную таблицу колонку с идентификатором группы (если нужно назначать права на группу) или пользователя, навесить на таблицу представление с фильтром по текущему пользователю или группе, полномочия проверять в триггере на вставку или обновление.


Romkin   (2007-02-26 16:28:00) [4]

Mr. D.   (26.02.07 16:06) [5] А также про служебные таблицы, например, про RDB$USER_PRIVILEGES ;)


Sergey13   (2007-02-26 16:09:00) [5]

> [5] Mr. D.   (26.02.07 16:06)

Про роли почитай.


Mr. D.   (2007-02-26 16:06:00) [6]

Блин, не подозревал, что GRAND'ы можно на отдельные поля выдавать в Firebird...

А еще такой вопрос - можно ли как-то получить статус пользователя с БД? Просто хочу написать универсальный клиент, который по нужному логину сам отрубит элементы интерфейса, которые неприменимы к правам залогинившегося пользователя.


ЮЮ   (2007-02-26 11:31:00) [7]


> > такие поля, куда ДОписывать информацию можно было бы,
> а  вот изменять существующую уже нет.


Только это уже будут не "поля", а таблица с отношением 0...N (cм. 2).
Ну не в триггере же проверять такое ограничение.


Виталий Панасенко   (2007-02-26 09:08:00) [8]


> P.S. Еще хорошо бы разрешить побочный вопрос, как создать
> такие поля, куда ДОписывать информацию можно было бы, а
> вот изменять существующую уже нет.

Даешь разрешение только на INSERT, на UPDATE не даешь.. и все


Sergey13   (2007-02-26 08:32:00) [9]

> [0] Mr. D.   (25.02.07 18:17)

Разные способы есть. Например
1. не давать доступ на таблицу напрямую. Давать на представление и набор процедур.
2. разрабатывать структуру таблиц, учитывая необходимое разграничение. Так твою таблицу можно разбить на 2 (вернее на 3 - + справочник типов лиц с доступом) 1- собственно вопросы и 2 - ответы на них.


Виталий Панасенко   (2007-02-25 21:53:00) [10]

grant update и имена полей


Наверх

Титульная страница Поиск, карта сайта Написать письмо