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

Откуда: Тверь
Сообщений: 3319
Всем привет!
Подскажите был ли у кого опыт построения ABAC на java
Какой подход использовали,какие либы или фреймворки - интересен лично ваш опыт или ваших знакомых
28 май 21, 23:09    [22328713]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
Стас, тебе для чего все это? собираешься делать PEP и PIP, или вообще все? оно вообще не особо распространено ввиду сложности из-за гибкости (ну плюс в XACML не особо-то и удобный xml), вот есть такие ссылки по теме:
https://en.wikipedia.org/wiki/XACML
https://habr.com/ru/company/custis/blog/258861/
https://github.com/CUSTIS-public/EasyABAC
https://github.com/authzforce/core

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

Сообщение было отредактировано: 29 май 21, 20:13
29 май 21, 20:21    [22328859]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Андрей Панфилов
Стас, тебе для чего все это? собираешься делать PEP и PIP, или вообще все? оно вообще не особо распространено ввиду сложности из-за гибкости (ну плюс в XACML не особо-то и удобный xml), вот есть такие ссылки по теме:
https://en.wikipedia.org/wiki/XACML
https://habr.com/ru/company/custis/blog/258861/
https://github.com/CUSTIS-public/EasyABAC
https://github.com/authzforce/core

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

Привет.Есть задача шарить ресурсы по ролям ,поэтому рбак нам не подходит
XACML я смотрел ,но как ты заметил это xml и не очень удобный

пс.а что можешь сказать про изиАБАК?
29 май 21, 23:27    [22328893]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
asv79
Есть задача шарить ресурсы по ролям ,поэтому рбак нам не подходит
XACML я смотрел ,но как ты заметил это xml и не очень удобный


С таким рассказом шансов на реализацию у тебя крайне мало...

вот есть схема взаимодействия компонент:

Картинка с другого сайта.

на этой схеме:
- PEP - это то, что защищает какой-то ресурс/метод и пр., т.е. в приложении в большинстве случаев - это какой-то сервис, через/перед который производятся обращения к данным, он кидает запрос в PDP и оттуда получает в первом приближении ответ да/нет/неприменимо
- PDP - в общем случае оно может жить даже не в приложении, а где-то во вне, делает такое: обогащает запрос, пришедший от PEP, данными (т.е. обращается каким-то образом к PIP), если нужно, прогоняет его через реестр политик, в результате чего формируется ответ для PEP
- PAP - оно всю эту историю администрирует

с большой долей вероятности тебе ABAC не нужен, от слова совсем, потому что цели у него отличаются от "шарить ресурсы по ролям", основная цель у него - получение единой точки управления ИБ в инфраструктуре предприятия, и скорее всего тебе нужно в каком-нить @PreAuthorize "расширить" евойные возможности как-то так:
- можно сделать свой PermissionEvaluator и трактовать hasPermission() так как тебе хочется
- можно расширить SecurityExpressionRoot в DefaultMethodSecurityExpressionHandler#createSecurityExpressionRoot и реализовать свои собственные выражения
30 май 21, 00:21    [22328901]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
asv79,
Вы не потянете сабж.
Запустите хоть раз Spring Security. Он как раз шарит ресурсы по ролям.
Уж это надо знать то.
Вы и токены ни разу не пробовали по спецификации кодировать.
30 май 21, 10:41    [22328933]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Андрей Панфилов


с большой долей вероятности тебе ABAC не нужен, от слова совсем, потому что цели у него отличаются от "шарить ресурсы по ролям", основная цель у него - получение единой точки управления ИБ в инфраструктуре предприятия, и скорее всего тебе нужно в каком-нить @PreAuthorize "расширить" евойные возможности как-то так:
- можно сделать свой PermissionEvaluator и трактовать hasPermission() так как тебе хочется
- можно расширить SecurityExpressionRoot в DefaultMethodSecurityExpressionHandler#createSecurityExpressionRoot и реализовать свои собственные выражения


Я просто плохо объяснил ,что мы хотим построить
Мы вводим систему ролей и тарифов, наш сервис предоставляет N-количество услуг
нужно
1 разграничить доступ к этим услугам потарифно- вот это можно сделать с RBAC
2 Но есть услуги ,которые подразделяются внутри себя на типы и вот тут уже проблема
тариф А улуга 1 - тип 1,тип 8 ,тип 12
Тариф Б услуга 1 - типы 2,14 и тд
тоесть клиент с соотвествующим типом тарифа должен зайти на страницу получения услуги 1 и увидеть только те типы,которые ему allowed,соотвественно сама услуга представляет из себя слой достаточно сложной логики( у каждого типа своя логика) ,а также запись/чтение в бд - где так же соотвественно свои представления для каждого подтипа
и тут уже RBAC не подходит,не конечно можно сделать 10 этажные expression ,но как потом это все поддерживать и масштабировать
другое дело ABAC есть набор политик для каждого тарифа - пользователь зашел на страницу услуги 1,чекер ( это из изиАБАС я подсмотрел) проверил пермиты и выдал ресурсы согласно политики
Чем это удобно ,все это не хардкодится а выводится в yaml конфиги ,где можно описать все политики( опять же из изиАБАС если я правильно там все понял) и моментально что то изменить/добавить/расширить даже без пересборки

Сообщение было отредактировано: 30 май 21, 11:30
30 май 21, 11:35    [22328939]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
asv79,
автор
тариф А улуга 1 - тип 1,тип 8 ,тип 12
Тариф Б услуга 1 - типы 2,14 и тд

Слово не тариф, тип, услуга а РОЛЬ нужно за вас писать.
Вы любите когда за вас делают вашу работу?
30 май 21, 11:51    [22328941]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
asv79,
Ну и напомню, что RBAC это роли бизнеса.
А тариф и услуга это ресурс.
А то вы начнете вводить роль тариф)))
30 май 21, 11:53    [22328942]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
PetroNotC Sharp
asv79,
Ну и напомню, что RBAC это роли бизнеса.
А тариф и услуга это ресурс.
А то вы начнете вводить роль тариф)))

ну вообще да, смысл такой - потарифно разграничить доступ к ресурсам
30 май 21, 12:54    [22328949]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
PetroNotC Sharp
asv79,
Ну и напомню, что RBAC это роли бизнеса.

роли у нас реализованы на ss и тут нет ни вопросов ,ни проблем
нужно так чтобы клиент ,который купил у нас соотвествующий тариф получал только то,что ему положено и ничего лишнего- тоесть арибутная модель
30 май 21, 12:57    [22328950]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
asv79
PetroNotC Sharp
asv79,
Ну и напомню, что RBAC это роли бизнеса.

роли у нас реализованы на ss и тут нет ни вопросов ,ни проблем
нужно так чтобы клиент ,который купил у нас соотвествующий тариф получал только то,что ему положено и ничего лишнего- тоесть арибутная модель
нет конкретики.
Это звучит как "Мир во всем мире".
Ты очень часто усложняешь проблему в своих вопросах.
КОНКРЕТНЕЕ И С РОЛЯМИ.
30 май 21, 13:07    [22328953]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
asv79
PetroNotC Sharp
asv79,
Ну и напомню, что RBAC это роли бизнеса.
А тариф и услуга это ресурс.
А то вы начнете вводить роль тариф)))

ну вообще да, смысл такой - потарифно разграничить доступ к ресурсам

Ужас. Не потарифно надо, а по ролям))
Входит 10 юзверей с одной ролью Карл!
30 май 21, 13:10    [22328955]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
asv79
атрибутная модель


ты слово "атрибут" неправильно понимаешь: в ABAC "атрибут" - это нечто, существующее в рамках контекста, используемого для принятия решения, и к бизнес-логике он имеет отношение постольку-поскольку.
30 май 21, 14:57    [22328976]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Андрей Панфилов
asv79
атрибутная модель


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

может и так,по факту нужно сделать доступ к ресурсам согласно тарифа
30 май 21, 22:26    [22329040]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Может кто то сказать по опыту с easyAbac фреймоврком- насколько сложно его прикрутить к уже существующему проекту,в том числе где реализован RBAC на сприг секурити.
В проекте есть такое понятие как шаринг неких бизнес объектов ,которые состоят из неких подтипов( вот эти подтипы как раз должны проверяться политиками доступа)
грубо говоря я купил тариф ДОРОГО-БОГАТО и мне доступно собрать бизнес объект на типах А и Б
второй клиент купил тариф Дешево-сердито и ему доступно лишь сборка объекта на типе А
при попытке расшарить мой бизнес объект на типах А и Б этому клиенту должен быть deny ,так как его тариф не включает в себя доступ к типам Б


сделать такое на спринг секьюрити скоей всего просто невозможно
2 июн 21, 12:59    [22330272]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

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

>сделать такое на спринг секьюрити скоей всего просто невозможно
== что за манера бла бла
99,9 проектов работают на ролях и вполне успешно.
Покажи реально что именно не работает.
REST или нет.
Писал хоть строчку кода или нет.
Так все вопросы ранее про токены у тебя были велосипедищи и "не могу рассказывать"
2 июн 21, 13:26    [22330292]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
PetroNotC Sharp
asv79,

>сделать такое на спринг секьюрити скоей всего просто невозможно
== что за манера бла бла
99,9 проектов работают на ролях и вполне успешно.
Покажи реально что именно не работает.
REST или нет.
Писал хоть строчку кода или нет.
Так все вопросы ранее про токены у тебя были велосипедищи и "не могу рассказывать"

да все на рестпоинтах
Например как пример у меня есть ресурс( который состоит из подресурсов) и человек не должен его получать если какие то из подресурсов не входят в его тариф - как я выше уже написал
в джава коде это будет объект например с коллекцией <? extentds Foo> так вот у этого фоо есть наследники - которые грубо говоря и входят в тариф
и нужно вот так если от юзера на тарифе а поступbл запрос на получение объекта со списком extents Foo и в этом списке есть те типы фоо,которые не входят в его тариф то доступа у него не должно быть к этому объекту
ну как то так ,объяснил как смог)
2 июн 21, 13:41    [22330301]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
asv79,
>этом списке есть те типы фоо,
= на входе список полиморфных объектов.
То есть в списке как базовый класс, так и Разного типа наследники. Так?
Модель в бд какая?
Тариф - Услуга - Тип.
Или услуга это просто страничка на экране?
2 июн 21, 14:18    [22330326]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Теперь по рест:
Вариант1 это в лоб
/res/tarifs/{tarifid}/types
Страничка услуга.html по этому адресу.
Так?
2 июн 21, 14:24    [22330335]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Непонятно как должен действовать контроллер в этом случае. Поциент запросил объект к которому не имел прав.
Что ему выдать. HTTP-403? Или контроллер должен каким-то образом делать фильтрацию и преобразование ответа
с учотом ролей?
2 июн 21, 14:28    [22330340]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Далее про Spring security
Он имеет около 25 филтров при прохождении запроса.
Он имеет механизм голосования основанный на ролях
Он имеет настройку AccessDecissionManager в котором ВСЯ инфа о запросе, учетке, конфиге и системе.
Что еще надо то, программист?
2 июн 21, 14:40    [22330355]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
Первый уровень везде это защита по урл.
А урл как построите рест.
А если урл пускает то вторая линия смотрит дальше.
Это везде так.
Если урл закрыт до контроллера не дойдет вообще.

Сообщение было отредактировано: 2 июн 21, 14:37
2 июн 21, 14:44    [22330359]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Тут нет ответа на вопрос. Что-же хочет бизнес? Показывать частично усеченный объект?
2 июн 21, 14:46    [22330361]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
Ну, если гадать на кофе и моя догадка верна.
То у него модель
автор
Модель в бд какая?
Тариф - Услуга - Тип.

Тариф - > Тип один ко многим.
Тогда чел НИКОГДА не получит типы не свои при данном тарифе))))))

Сообщение было отредактировано: 2 июн 21, 14:45
2 июн 21, 14:52    [22330364]     Ответить | Цитировать Сообщить модератору
 Re: ABAC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
Всё всегда надо начинать с Модели (с)
2 июн 21, 14:53    [22330366]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Java Ответить