powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разграничение прав доступа, в 100-ый раз
16 сообщений из 16, страница 1 из 1
Разграничение прав доступа, в 100-ый раз
    #38560669
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Заказчик хочет надёжности и защищенности. Покритикуйте.

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

Разграничение прав используя ФБ - роли, тогда имея логин пользователь не пойдёт дальше своих прав. А что если две роли у пользователя? В таком случае создаю PUBLIC хранимую процедуру, в которой из таблицы Пользователи-В-Группах достаю доступные группы (чтобы не давать к RDB$USER_PRIVILEGES). Захожу как ЛОГИН+ПАРОЛЬ. Получаю доступные название ролей с описанием (заполняю Combobox). Переконнекчиваюсь уже под выбранной РОЛЬ+ЛОГИН+ПАРОЛЬ.

В таблицу Пользователи-В-Группах добавляю/удаляю вместе с GRANT/REVOKE роли, необходимой пользователю.

Вот другое дело, а что если у пользователя роль пользователя отчётов (ROLE_REPORT) и дали ещё администратора справочников (ROLE_REF_ADMIN). Получается нужно заходить каждый раз под другой ролью.
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560690
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin,

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

2. можно сделать сервер приложений и разграничивать права там

3. подождать выхода FB3 там буду мультироли (а может и группы).
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560818
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисподождать выхода FB3 там буду мультироли (а может и группы)
а может и не будут ;-)
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560841
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

я правильно понимаю что, то в трекере на бету 1 "запланировано" не факт что будет? Вообще если всё это делать, то там действительно работы много.
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560849
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

вероятно, но не факт. Что-то может отсекаться со временем.
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560861
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал как "мультитроли". Пора в отпуск.

P.S. Дай ссылку на тикет что ли.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560865
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

вот она CORE-1815
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560877
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвот она CORE-1815

Это неинтересно... Я уж думал роли-типа-группы на тройку запланированы.
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560885
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл сказать версию ?
Работы уже ведутся на 2.5.2. 3 пока на альфе. Работы закончим гораздо раньше
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560890
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ну мультироль - это не группа. А про группы у меня в скобочках и написано может быть.
по идее можно в этом случае отдельную сущность не вводить, а сделать как в Оракле

Код: sql
1.
ALTER USER MYUSER DEFAULT ROLE ALL;



и все роли назначенные MYUSER будут работать как группы ну или

Код: sql
1.
ALTER USER MYUSER DEFAULT ROLE ROLE1, ROLE2;



если надо ограничить кол-во групп.

В любом случае даже мультироли упрощают задачу. Гораздо проще создать новую роль и подключаться с ней передав её привелегии нужных, чем наполнять эти привелегии вручную просматривая все роли.
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560987
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin,

ответы 1 и 2 это не отменяет
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38560993
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinА что если две роли у пользователя?
Не может быть. Зато может быть роль с правами, включающими в себя права двух других.

Или скрипт, добавляющий нужному пользователю нужные права. В этом случае роли вообще не нужны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38561045
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

мне нравится такая идея
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38561151
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> по идее можно в этом случае отдельную сущность не вводить, а сделать как

ИМХО, если делать, то делать как правильно и удобно,
а не "как где-то". Хотя вариант со списком групп вполне
юзабелен, особенно если при коннекте не придётся
указывать саму группу.

Симонов Денис> Гораздо проще

Да ладно... Во-первых, операция редкая,
во-вторых, выполняется не вручную.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38561746
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

у большинства пользователей будет одна группа, какие-то исключения, когда несколько 2 и более. Конечно, подключились, проверили наличие, отключились, подставили группу и подключились вновь. В случае, если две группы: показали выбор из списка. Но это будет редко.
Мне главное чтобы случайными средствами не подключались к БД.
...
Рейтинг: 0 / 0
Разграничение прав доступа, в 100-ый раз
    #38565555
Oliph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinМне главное чтобы случайными средствами не подключались к БД.Где-то на форуме уже писал об этом. Отвечу для земляка :)

В качестве усиления надежности и защищенности предлагаю ПЛЮС к тому, что уже планируется (идею с ролями или без):

Скрывать от юзеров их реальный пароль БД (у меня двухфазная авторизация, а можно просто хитро обфусцировать введенный пароль).
В результате пользователь, помимо программы (допустим через IBExpert) не сможет зайти.

Хороший хакер таки сможет войти в базу под СВОИМ ЗАКОННЫМ логином и паролем,
ну что ж… для таких работает исходный уровень защиты!
Роли и права, которые топикстартер и так будет раздавать, все равно сделают свою работу.

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

Еще одна рекомендация по «надёжности и защищенности»:

У меня никто из пользователей не имеет DML прав на таблицы. Эти права есть у процедур.
Хакер даже залогинясь в БД не может изменить данные в таблицах, минуя мои процедуры.
А процедуры не делают ничего противоречащего логике программы. Ведут журнал своей работы.
Хакеру остается крайне тесное поле деятельности.

Мне с лихвой хватает описанного уровня защиты,
но при желании можно реализовать и следующий, параноидальный этап квеста:

Все мои DML-процедуры ведут журнал.
Если в момент записи журнала организовать сверку,
задано ли перед началом работы программой определенное число в определенном месте,
хитро вычисляемое от ID конкретной сессии и, если желаете, дате коннекта :)
Если не задано, извините, получите Exception, с записью в журнал попыток взлома системы.

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

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

К сожалению для хакера, триггер on-connect делает много полезного, в частности назначает некоторые id,
без которых ни одна DML процедура не заработает. Придется разбираться, что делает программа, чтобы коннект был признан корректным.

Если дело того стоит, почему бы и не предусмотреть подобные дополнительные степени защиты.
Может кто-то возьмет себе на заметку.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разграничение прав доступа, в 100-ый раз
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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