ABAC управление доступом?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

ABAC управление доступом?

Сообщение arser »

Ищу любые примеры практической реализации контроля доступа по атрибутам, под yii2 вообще будет шикарно :)
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: ABAC управление доступом?

Сообщение arser »

Нашел модуль для zend, с хорошим описанием принципа работы, работает ок.

Я так понял, что для yii всех устраивают стандартный RBAC. Но подойдет ли RBAC, например, для корпоративного сайта, где структура организации и бизнес-правила заранее не известны и настраиваются админом? Или при каждом изменении придется привлекать программиста, чтобы он захардкодил permissions и т.д.?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: ABAC управление доступом?

Сообщение samdark »

Почему захардкодил? Есть же API для работы, можно сделать админку.
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: ABAC управление доступом?

Сообщение vismut »

arser писал(а):Нашел модуль для zend, с хорошим описанием принципа работы, работает ок.

Я так понял, что для yii всех устраивают стандартный RBAC. Но подойдет ли RBAC, например, для корпоративного сайта, где структура организации и бизнес-правила заранее не известны и настраиваются админом? Или при каждом изменении придется привлекать программиста, чтобы он захардкодил permissions и т.д.?
Мы сделали это так:
1. уровень РБАК - роли - по сути должностные обязанности в компании
2. группы (таски) - группы пермишионов, например "доступ к пользователям"
3. пермишионы - непосредственно route до action. "module/controller/action"

Вроде норм. При добавлении экшена в коде он сам добавляется в таблицу прав доступа.
Сам код парсится и считываются все экшены и создаются для них роуты, которые по сути пермишионы

Ну и полная админка редактирования ролей, групп.

Сами пермишионы не редактируемы, они польностью синхронизируются со структурой кода проекта.
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: ABAC управление доступом?

Сообщение arser »

А если понадобится "только бухгалтер может видеть поле зарплата", как будете действовать?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: ABAC управление доступом?

Сообщение samdark »

Сделать пермишн canViewSalary и кинуть на роль бухгалтер. Везде, где ЗП выводится, добавить проверку.
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: ABAC управление доступом?

Сообщение vismut »

В нашем случае, создается таск canViewSalary. И отображение зарплаты оборачивается в проверку $user->can('canViewSalary').
Для удобства можно сделать виджет.
Для любителей чтоб везде и всегда никто не мог просто так это поле вывести, можно добавить проверку в afterFind модели например..
Вариантов множество.
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: ABAC управление доступом?

Сообщение arser »

Спасибо за ответы, пошел делать.
pamkil
Сообщения: 1
Зарегистрирован: 2019.12.04, 21:17

Re: ABAC управление доступом?

Сообщение pamkil »

RBAC не решает проблему доступа к конкретной сущности.
Например имеются много проектов и у проектов имеются много статей, и нужно организовать доступ к определенным статьям проектам по определенным Permissions, т.е. один и тот же пользователь в одном проекте имеет набор Permissions, а в другом проекте совсем другой набор, условно в одном проекте Редактор статей, в другом Автор статей.
ABAC позволяет гибко это настраивать.
Вот реализация ABAC плохо освещена.
Может есть другие решения которые позволяют решить задачу разграничения доступа на уровне сущностей?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: ABAC управление доступом?

Сообщение maleks »

pamkil писал(а): 2019.12.04, 21:25 RBAC не решает проблему доступа к конкретной сущности.
Пермишены - это не то что один раз задается консольным скриптом или миграцией.
Их можно и на лету добавлять.
Добавил статью и добавляешь пермишены по работе с этой статьей.
Yii2 universal module sceleton - for basic and advanced templates
Ответить