Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Разработка информационных систем Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
Здравствуйте!

Только что дописал и выложил конструктор прав доступа.

Хочется верить, что результат моего труда кому-то поможет в разработке ИС и тд)

Конструктор "оперирует" 2-мя основными объектами: правами и пакетами прав. Из пакетов можно составлять композицию, и выгружать ее в SQL. Также конструктор принимает на вход данные в формате JSON.

Конструктор никоим образом не является полноценной заменой управления доступом в вашем приложении! Просто на его основе, точнее на основе его выгрузки (которая имеет настройки), можно сделать некий "скелет прав" и от него уже отталкиваться.

Вот ссылка: http://myrbac.com/

Буду рад вашим отзывам!
С уважением, Сергей.
9 июл 17, 05:55    [20626576]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78,

что значит сделать некий "скелет прав"? У Вас там просто таблица из двух колонок возможных операций.
А политики, правила, специальные условия?
9 июл 17, 08:48    [20626608]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
skyANA,

спасибо за вопрос.
Таблиц всего 2 - права и пакеты. Таблица прав предельно простая - ID, name и title. (где колонки ID, title можно не выгружать). Таблица пакетов чуть-чуть посложнее - те же колонки, что и в правах, плюс возможность добавлять колонки отношений. То есть, если к примеру, мы хотим выгрузить все пакеты и чтобы в них через запятую были перечислены имена включенных прав (или ID) - нам нужно просто добавить колонку с нужным типом, нажать "экспортировать" и все будет выгружено.
Насчет политик, спец условий и всего прочего - это уже на плечах разработчика.

Я вижу использование этого конструктора так: чтобы не заморачиваться с написанием управлением групп и тд, можно самому накликать эти группы и права, выгрузить их и записать в свою БД. Далее - к примеру в приложении есть таблица юзеров, их прав и тп. В правах можно указать ID пакета и, к примеру, какие именно права для этого пользователя разрешены и запрещены. И там же можно указывать политики и прочее.

В общем конструктор носит исключительно вспомогательный характер.
9 июл 17, 12:43    [20626877]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
irbis_al
Member

Откуда: Симферополь
Сообщений: 1316
_ST_78
skyANA,

спасибо за вопрос.
Таблиц всего 2 - права и пакеты. Таблица прав предельно простая - ID, name и title. (где колонки ID, title можно не выгружать). Таблица пакетов чуть-чуть посложнее - те же колонки, что и в правах, плюс возможность добавлять колонки отношений. То есть, если к примеру, мы хотим выгрузить все пакеты и чтобы в них через запятую были перечислены имена включенных прав (или ID) - нам нужно просто добавить колонку с нужным типом, нажать "экспортировать" и все будет выгружено.
Насчет политик, спец условий и всего прочего - это уже на плечах разработчика.

Я вижу использование этого конструктора так: чтобы не заморачиваться с написанием управлением групп и тд, можно самому накликать эти группы и права, выгрузить их и записать в свою БД. Далее - к примеру в приложении есть таблица юзеров, их прав и тп. В правах можно указать ID пакета и, к примеру, какие именно права для этого пользователя разрешены и запрещены. И там же можно указывать политики и прочее.

В общем конструктор носит исключительно вспомогательный характер.

Вот я ничего не понял....
Вот у меня в оракле или db2
Создаю роль operator и admin
grant operator to Вася Люда(Вася и Люда ) операторы
grant admin to КрутойОкер ; (КрутойОкер Админ)
grant select on "Таблица фирм" to operator
grant select,insert,delete,update on "Таблица фирм" to админ

Вася и Люда только читают таюлицу фирм.
А КрутойОкер имеет полный контроль...
У Вас какая аналогия?
9 июл 17, 13:19    [20626924]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78
skyANA,

спасибо за вопрос.
Таблиц всего 2 - права и пакеты. Таблица прав предельно простая - ID, name и title. (где колонки ID, title можно не выгружать). Таблица пакетов чуть-чуть посложнее - те же колонки, что и в правах, плюс возможность добавлять колонки отношений. То есть, если к примеру, мы хотим выгрузить все пакеты и чтобы в них через запятую были перечислены имена включенных прав (или ID) - нам нужно просто добавить колонку с нужным типом, нажать "экспортировать" и все будет выгружено.
Насчет политик, спец условий и всего прочего - это уже на плечах разработчика.

Я вижу использование этого конструктора так: чтобы не заморачиваться с написанием управлением групп и тд, можно самому накликать эти группы и права, выгрузить их и записать в свою БД. Далее - к примеру в приложении есть таблица юзеров, их прав и тп. В правах можно указать ID пакета и, к примеру, какие именно права для этого пользователя разрешены и запрещены. И там же можно указывать политики и прочее.

В общем конструктор носит исключительно вспомогательный характер.

Ну хорошо назовём это группами и правами, а не ролями и действиями.

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

Чем тут Ваш конструктор поможет?
9 июл 17, 14:01    [20627004]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
Сама суть работы:

Вот, например, есть такой JSON

{"p":[{"t":"Новости","r":["1|read_news|Чтение новостей","2|edit_news|Редактирование новостей","3|add_news|Добавление новостей","4|remove_news|Удаление новостей"],"v":[{"i":"1|guests|Гости","e":[1],"d":[],"_":[],"p":[]},{"i":"2|moderators|Модераторы","e":[2,3],"d":[],"_":[],"p":[1]},{"i":"3|administrators|Администраторы","e":[4],"d":[],"_":[],"p":[1,2]}],"c":{"r":{},"v":{"a":"packages","_":"id","t":"title","n":"name","r":["32|2|e_rights"]}}}]}


Из него мы можем иметь следующую выгрузку

UPDATE `packages` SET `name` = 'guests', `e_rights` = 'read_news' WHERE `name` = 'guests';
UPDATE `packages` SET `name` = 'moderators', `e_rights` = 'read_news,edit_news,add_news' WHERE `name` = 'moderators';
UPDATE `packages` SET `name` = 'administrators', `e_rights` = 'read_news,edit_news,add_news,remove_news' WHERE `name` = 'administrators';
10 июл 17, 00:18    [20627718]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78,

так, хорошо создали Вы в БД таблицу packages, а дальше?

Покажите вот это: "Далее - к примеру в приложении есть таблица юзеров, их прав и тп. В правах можно указать ID пакета и, к примеру, какие именно права для этого пользователя разрешены и запрещены. И там же можно указывать политики и прочее."

Вообщем хочется увидеть реальный пример использования: чтобы зашёл в приложение и права проверялись.
10 июл 17, 08:57    [20627898]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
skyANA,

пока работающего примера, к сожалению, нет, но могу объяснить на словах.

Вот мы выгрузили таблицу packages. То, что в ней нет ID - не беда, их можно добавить при выгрузке. Также с правами. Вместо имен прав можно выгружать ID прав, просто я сделал такую выгрузку для наглядности. Создаем табличку users. В ней есть колонка packages, где через запятую, или массивом postgresql, или сериализацией указаны id/name пакетов (кому как удобнее), далее могут быть колонки disabled_rights, enabled_rights. Если обе колонки пустые, значит берем права пакетов без изменений. Если что-то изменено в правах users, то учитываем эти изменения.

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

Также можно пакеты выгружать и без выгрузки всех прав, только одни "прямые" права и все. В таком случае, чтобы узнать все права пакета нужно просто завести колонку с перечислением подпакетов. В общем, выгрузку можно настроить кому-как пожелается.
10 июл 17, 10:23    [20628159]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78
skyANA,

пока работающего примера, к сожалению, нет, но могу объяснить на словах.

Вот мы выгрузили таблицу packages. То, что в ней нет ID - не беда, их можно добавить при выгрузке. Также с правами. Вместо имен прав можно выгружать ID прав, просто я сделал такую выгрузку для наглядности. Создаем табличку users. В ней есть колонка packages, где через запятую, или массивом postgresql, или сериализацией указаны id/name пакетов (кому как удобнее), далее могут быть колонки disabled_rights, enabled_rights. Если обе колонки пустые, значит берем права пакетов без изменений. Если что-то изменено в правах users, то учитываем эти изменения.

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

Также можно пакеты выгружать и без выгрузки всех прав, только одни "прямые" права и все. В таком случае, чтобы узнать все права пакета нужно просто завести колонку с перечислением подпакетов. В общем, выгрузку можно настроить кому-как пожелается.

Извините, микроскопом тоже можно гвозди заколачивать :)

Хотелось бы, чтобы Вы сами для начала применили свой конструктор на практике и показали нам работающее приложение с разграничением прав.
10 июл 17, 10:37    [20628213]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
skyANA,

спасибо за проявленный интерес)

Просто работающее приложение с правами? Hello world с логином, разлогином и баном подойдет?
10 июл 17, 10:53    [20628276]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
Adx
Guest
Не вижу идеи применения.
Хоть какого-то. По сути:
- Давайте создадим "права". Запишем в таблицу.
- А зачем? Как использовать?
- Ну, этого пока не придумал.
А с этого начинать надо.
И ссылка на "неполноценную замену управления" неуместна. Зачем использовать "неполноценную", если все равно делать полноценную?
10 июл 17, 11:00    [20628309]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
Adx,

полноценную все равно сделать вряд ли получится, так как у всех свои требования (а вот тут надо то, а вот тут хочу это, а вот это лишнее) и тд и тп

Если говорить совсем по простому: само управление правами в самом простом случае состоит из 3 таблиц: права, группы и пользователи. Конструктор берет на себя права и группы: можно создавать различные композиции групп, включать и выключать в них права. И выгружать все это в базу. С таблицей пользователей уже занимается сам разработчик. (включение - выключение персональных прав, добавление - удаление из групп).
10 июл 17, 11:11    [20628368]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
Adx
Guest
_ST_78
Если говорить совсем по простому: само управление правами в самом простом случае состоит из 3 таблиц: права, группы и пользователи. Конструктор берет на себя права и группы: можно создавать различные композиции групп, включать и выключать в них права. И выгружать все это в базу. С таблицей пользователей уже занимается сам разработчик. (включение - выключение персональных прав, добавление - удаление из групп).


Еще раз. Зачем писать информацию в базу, если мы ее не используем?
Записывать - это не проблема, проблема считать и применить.
Без механизма использования этот конструктор не нужен от слова "совсем".
Т.е. это не годится даже как учебная задача. Увы.
10 июл 17, 12:45    [20628841]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
Adx,

почему не используем? Мы на нее ссылаемся в пользователях, типа этот пользователь прикреплен к такому-то пакету, вот его id. Далее идем по id пакета, а там все права уже разложены и ничего не нужно высчитывать. Забота о прикреплении пользователей к пакетам лежит на плечах разработчика.
10 июл 17, 12:57    [20628894]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
mikron
Member

Откуда: Germany / Stuttgart
Сообщений: 592
_ST_78,

Напоминает любимое произведение и тему "Круговорот говна в природе"
10 июл 17, 16:01    [20630031]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
babken
Member

Откуда:
Сообщений: 75
Хорошая штука.
На уровне лабараторной задачи. Как пример для самообучения.
На практике никому не надо.

С уважением,
10 июл 17, 16:16    [20630101]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78
skyANA,

спасибо за проявленный интерес)

Просто работающее приложение с правами? Hello world с логином, разлогином и баном подойдет?

Просто логин, разлогин не подойдёт.
Добавьте что-ли таблицу заметок и одному пользователю дайте полные права на работу с ней, другому только на чтение, третьему на чтение и изменение (добавление и удаление запретите).
10 июл 17, 19:42    [20630795]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78
Adx,

полноценную все равно сделать вряд ли получится, так как у всех свои требования (а вот тут надо то, а вот тут хочу это, а вот это лишнее) и тд и тп

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

ИМХО подход не верен.

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

Тогда приложение тупо спрашивает сервис: а разрешено Васе регистрировать новых пользователей?
А сервис отвечает либо да, либо нет.
10 июл 17, 19:48    [20630817]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
skyANA,

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

Насчет микросервиса, думаю, идея заранее обречена на провал. Очень много рисков. Никто не даст гарантии, что доступ к сервису будет постоянным.
11 июл 17, 16:30    [20634255]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78
skyANA,

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

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

Мне интересно посмотреть законченный пример проверки прав пользователя. Сможете его реализовать?
12 июл 17, 10:06    [20635781]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78, а насчёт обречённости микросервиса...

Я понимаю, что у Вас нет опыта в их написании и Вы судите по ринципу "пальцем в небо", но могли бы просто посмотреть по сторонам и увидеть множество сервисов с доступностью 99,99% времени.
12 июл 17, 10:24    [20635856]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
_ST_78
Member

Откуда:
Сообщений: 10
skyANA,

Смогу, а насчет пальца в небо и 99 процентов. К примеру в компании есть биллинг, который используется денно и нощно, а проверка прав идет на стороннем сервере. И тут незадача: микросервис упал и остановилась работа биллинга, а клиенты звонят, заявки и прочее нужно заполнять. Да, кстати, микросервис не поднять, ибо доступа к нему нет. И как назло нет дублирующей системы проверки прав. Как быть?
12 июл 17, 10:41    [20635944]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78
skyANA,

Смогу, а насчет пальца в небо и 99 процентов. К примеру в компании есть биллинг, который используется денно и нощно, а проверка прав идет на стороннем сервере. И тут незадача: микросервис упал и остановилась работа биллинга, а клиенты звонят, заявки и прочее нужно заполнять. Да, кстати, микросервис не поднять, ибо доступа к нему нет. И как назло нет дублирующей системы проверки прав. Как быть?

Биллинг с проверкой прав - это что-то новенькое. Пользователи ручками что-ли это делают?
12 июл 17, 11:18    [20636098]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78,

как часто Вы логинились куда-то, используя OAuth (Open Authorization) и что-то падало? Я вот ни одного такого случая не припоминаю.
12 июл 17, 11:21    [20636114]     Ответить | Цитировать Сообщить модератору
 Re: Конструктор прав доступа  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22644
_ST_78, кстати, раз уж мы затронули тему биллинга...

Я так полагаю что вы сами себе payment processor, а не используете какой-нибудь PayPal, верно?

A payment processor is a company (often a third party) appointed by a merchant to handle transactions from various channels such as credit cards and debit cards for merchant acquiring banks.
12 июл 17, 11:31    [20636186]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Разработка информационных систем Ответить