powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Распределение прав доступа в прогах...
25 сообщений из 44, страница 1 из 2
Распределение прав доступа в прогах...
    #32561288
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К вопросу об администрировании и распределению прав... в прогах при работе с данными на SQL сервере.

Этот вопрос к работе любого сервера (не только на IB и др.), но ведь вы с базой все равно на какой-нибудь проге работаете...

Задал вопрос на Delphi и чей-то, как-то, никому и никак...
Хочу узнать как делают это другие...

НАПРИМЕР: при вводе данных необходимо обеспечить распределение прав между пользователями типа:
- занесение заказов (заявок)
- простановка дат изготовления (планирование)
- заполнение технологии (порядка работы)
- ...

При этом на одной форме операций разные пользователи заносят данные только в свои поля...

Если делать только на уровне прав базы - то не приятно нажав Ок получить сообщение что у вас нет прав... Лучше вообще не давать это делать...
Делать отдельные формы для каждого - глупо (сегодня у него одни права, а завтра - другие).

Я создал служебные таблицы в которых храню 'Имена форм', 'Имена объектов на формах' и 'Права доступа к объектам'.

На OnCreate формы считываю этот список в массив, а на OnShow раставляю своийства Enabled и Visible в соответствии со списком прав пользователя (который получаю при входе в систему)...

При этом 'запрещенные' кнопки, меню... - серенькие или нет совсем.
Для удобства элементы разбиты на группы по панелям (чтоб не задавать для каждого).

Управление основано на ограничении прав, а не на разрешении... т.е. заносятся только те формы и элементы доступ к которым необходимо ограничить.

При этом все реализуется просто (цепляешь по две функции к формам) и правами рулиш без изменения проги (вплоть до права печати отчетов)...

Поделитесь своим опытом, кто что знает и какие у кого в этом вопросе проблемы...
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32561396
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри IBXUserProfile - потом и нам расскажешь, а то у меня времени небыло смотреть :-(
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32561438
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldПосмотри IBXUserProfile - потом и нам расскажешь, а то у меня времени небыло смотреть :-(

Благодарю... хоть что-то... бум смотреть...

А что больше это никому не нужно? Или уже давно решеный вопрос?
Тогда дайте хотябы ссылку...
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32561960
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уровень прав на приложении не совсем хороший тон. Часть прав все равно надо делать на уровне БД.

Возможно ограничение на уровне VIEW.

в табличку вносится поле содержащее роль того или иного отдела и соответсвенно видимые/невидимые записи отбираются условием типа:

Код: plaintext
 WHERE CURRENT_ROLE = VisibleRole 

соответсвенно все операции идут через VIEW, правда придется написать триггеры на вьюшку.

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

Тоже самое можно сделать через хранимки.

На практике желательно избегать прямых прав пользователей на таблицы.

Как то я уже обжегся с тех пор препочитаю перестраховаться.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562035
Tonny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ActionList, все действия - через него. Каждому TActionItem прописывается индивидуальный Tag.

таким образом вся раздача прав выполняется вложенным циклом.
Более сложный случай (то, что и использую).
константные массивы:
1. массив форм (массив строк)
2. массив групп действий (массив строк)
3. массив действий [0..CountActions]: название, номер формы, номер группы, тэг.

в базе хранится строка из 0 или 1, длинной как массив [3], т.е. на каждое действие доступ есть/нету. После коннекта к базе всем формам рассылается сообщение "обновиться", и в каждой форме свой обработчик закрывает/открывает доступы к обьектам по общедоступному массиву доступа
access: array[0..CountActions] of boolean;

На главной форме в одном цикле настраивается доступ к главному меню. Так же в одном цикле настраиваются все формы, основанные на ActionList.

при такой организации массива 3 через treeView легко делается форма настройки прав.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562246
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему бы не просматривать RDB$USER_PRIVILEGES и так заранее узнавать о правах. Работа с метаданными - это универсально. Зачем зря пытаться до получения ошибки? К тому же при работе через ODBC текст ошибки можно перехватывать, а текст ошибки формировать Exception-ом в IB(в виде собственного кода)
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562342
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Winni-Pooh

Хочу вас уведомить что заЕбешься пишется в этом случае БОЛЬШИМИ БУКВАМИ :)))))

Во вторых это вынос разбора прав в приложение - а это evil.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562409
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О каком зле ты говоришь? И как ты это зло себе представляешь? Пойми - это обработка МЕТАДАННЫХ! Это универсально изначально. А на метаданные тоже вообще-то можно правильно распределить права. Вот и все. И поверь мне- это самый короткий код(если руки правильно растут), и никакого гемора. :-))
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562431
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зло это объем работы для реализации...
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562454
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вынос прав в приложение опасен тем что найдутся люди и в зависимости от ценности информации будут вносить изменения ручками в обход твоей безопасности реализованной в приложении.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562457
Winni-pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так не думаю.. А по поводу ХП и вьюшек просто добавлю для olol, что последние - прекрасное средство ограничения доступа для массового изменения содержимого таблицы. Поясню: некоторым работникам(ролям)необходимо логически дать право удалять записи из какого-либо журнала. Если просто дать право на DELETE, то юзер по глупости и из чувства ламерства может ухнуть нахрен все содержимое таблицы за раз, хотя тебе хотелось, чтобы удаление могло происходить только по 1 записи(документу) и т.д.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562467
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Безопасность это комбинация приложения и БД.
и нельзя всю выносить все в приложение.
Аксиома.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562470
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Tonny

Решение типа ActionList хорошо, если проектируешь небольшую информационную систему, а если большую, полиморфную, то наоборот, стремятся убрать из клиента ВСЕ ДАННЫЕ о бизнес-правилах работы клиента. В этом случае ВСЕ ДОЛЖНО ХРАНИТЬСЯ В БАЗЕ ДАННЫХ, даже схемы обработки документов. Только тогда при изменении правил программеру не придется лезть в исходник или мудрить с совершенной системой обновления логических настроек клиента. Представь систему на 150-200 пользователей, с 10-20 видами АРМов, где есть общие универсальные модули работы с данными, зависящими от бизнес-правил
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562472
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот блин заработался ....
прям говорить внятно разучился :)))))))
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562475
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Igor Elyas

Полностью с вами согласен. Но имею в виду причину не безопасность, а гибкость системы в целом
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562493
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Igor Elyas

Моя последняя реплика к вашей предпоследней, если что.... :D. Предлагаю перейти к обсуждению предложенной мной темы по трехзвенке как более мощной форме распределения прав и контроля Базы Данных и рассматривать как продолжение текущей теме....Просто я не нашел на этом форуме обсуждения трехзвенки ранее
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562751
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за обсуждение, не успел ничего спросить… (рабочий день кончился).

Пару слов от себя:

GoldПосмотри IBXUserProfile - потом и нам расскажешь, а то у меня времени небыло смотреть :-(

Посмотрел… Ну что сказать… Возможно кого-то заинтересует… но хранение прав в BLOB меня не прельщает…

Winni-Pooh
А почему бы не просматривать RDB$USER_PRIVILEGES…
…это универсально.

Хоть это форум IB и др., но если говорить об универсальности то, как быть с Oracle, MS и др.
Каждый варится в собственном соку… У меня сегодня IB – а завтра его могут уничтожить как класс и все делать на Oracle (на нем - зарплата и сие от меня не зависит).

Winni-Pooh
…ВСЕ ДОЛЖНО ХРАНИТЬСЯ В БАЗЕ ДАННЫХ, даже схемы обработки документов.

Разве в RDB$USER_PRIVILEGES есть перечень прав к формируемым отчетам? Или предлагаешь их туда занести?

Igor Elyas
Уровень прав на приложении не совсем хороший тон. Часть прав все равно надо делать на уровне БД.

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

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

Главное - я уяснил – что сделал не так уж и плохо…
мож кто истчо чо добавит…
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562763
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в процессе размышлений на эту тему я пришол к выводу о необходимости создания промежуточного звена, отвечающего за доступ к объектам. Это касается только моего конкретного случая, насколько это подойдет к другим задачам - другой вопрос.

В моем случае пользователи работают не с таблицами, полями или процедурами, они работают с документами и свойствами документов.

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

Но это только мысли, на практике у меня этот промежуточный слой зашит в клиентскую программу, что конечно не есть гут.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562798
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри здесь. имхо: это то что доктор прописал :)))
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562801
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_k
В моем случае пользователи работают не с таблицами, полями или процедурами, они работают с документами и свойствами документов.


Что значит - работают с документами?

Если это таблица с полями свойств и BLOB полем для хранения файла документа - то какая разница?

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

Соответственно, если все визуальные элементы будут перечислены с правами доступа, то любое действие в проге можно рулить...

И пускай не смущает 'большой' перечень прав... ведь в твоей проге они серано задаются и проверяются... а на деле перечень окажется не очень большим.

У меня есть таблица групповых прав и состав групп

Например: Технические службы->Конст.Тех.отдел->Технологи->Ведущий технолог

Задав юсеру право 'Ведущий технолог' - он автоматом получает и все остальное...
Чем ниже право - тем больше, но уже.
Можно задать любую группу включив туда всего помаленьку...
Весь перечень прав я получаю по ХП одним запросом...
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562803
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще здесь.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562834
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76Посмотри здесь. имхо: это то что доктор прописал :)))

Не понял юмора... я не такой гигант мысли...

Ну потратил я на создание этих таблиц и форм их редактирования пару дней...

Потом за полчаса переделал программку...

Зато теперь не надо менять прогу из-за того, что кому-то что-то надо разрешить или запретить...
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562845
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты не понял, там есть ядро безопасности. Права доступа определяются через него. Переписывать ни чего не надо.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562847
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot olol
Что значит - работают с документами?
[/quot]
это значит что в принципе, пользователю не важно что и как. он работает с документом.
Медиаплан, счет, прайслист, не важно. В любом случае он видит то что получит. Обычно это табличка в стиле екселя, в которой он заполняет нужные поля. Поэтому эти данные, из которых состоит документ, вполне возможно передавать клиенту и не в виде результата sql запроса.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32562882
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76
…там есть ядро безопасности.
…Переписывать ни чего не надо.

Не для меня все это… В одиночку такое не делают… И что значит ‘ни чего не надо’?

Насколько я понял, сама прога должна быть написана с обращением к объекту ядра…
Что мне писать новую прогу? Времени нет и на текущие дела…
Да и не бесплатно это…

to alex_k

Если прога берет данные не из таблиц – то я пас…
Хотя их наверно тоже можно перечислить и описать (в прогу же закладываешь какую-то логику)

Да и с прямым вводом в грид нужно делать немножко по другому…
Ведь грид – это один объект, а нужен доступ к ячейкам грида…

Я над этим не заморачивался… у меня просто нет прямого редактирования в гридах.
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Распределение прав доступа в прогах...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]