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

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

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

Сообщение arser » 2015.02.09, 18:17

Ищу любые примеры практической реализации контроля доступа по атрибутам, под yii2 вообще будет шикарно :)

arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

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

Сообщение arser » 2015.02.10, 10:55

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

Я так понял, что для yii всех устраивают стандартный RBAC. Но подойдет ли RBAC, например, для корпоративного сайта, где структура организации и бизнес-правила заранее не известны и настраиваются админом? Или при каждом изменении придется привлекать программиста, чтобы он захардкодил permissions и т.д.?

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

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

Сообщение samdark » 2015.02.10, 11:14

Почему захардкодил? Есть же API для работы, можно сделать админку.

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

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

Сообщение vismut » 2015.02.10, 14:11

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

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

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

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

Сами пермишионы не редактируемы, они польностью синхронизируются со структурой кода проекта.

arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

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

Сообщение arser » 2015.02.10, 14:52

А если понадобится "только бухгалтер может видеть поле зарплата", как будете действовать?

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

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

Сообщение samdark » 2015.02.10, 15:03

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

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

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

Сообщение vismut » 2015.02.10, 15:10

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

arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

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

Сообщение arser » 2015.02.10, 17:43

Спасибо за ответы, пошел делать.

pamkil
Сообщения: 1
Зарегистрирован: 2019.12.04, 21:17

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

Сообщение pamkil » 2019.12.04, 21:25

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

Аватара пользователя
maleks
Сообщения: 1796
Зарегистрирован: 2012.12.26, 12:56

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

Сообщение maleks » 2019.12.05, 14:42

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

Ответить