2015-03-04 3 views
1

Я работаю с иерархией объектов, используя Nested Sets model. Я хочу установить разрешения для операций CRUD на одном объекте. В качестве системы для управления правами доступа я использую PHP RBAC. Как я могу решить эту проблему?Задание разрешений для операций CRUD с использованием RBAC

После некоторого анализа проблемы я решил, что можно создать четыре дерева разрешений для каждой операции CRUD на объекте и получить каждое разрешение индивидуально, но я считаю, что это не лучшее решение.

В качестве альтернативы я подумал об использовании единого дерева предложений, узлы которого соответствуют операции «читать», и каждый узел имеет дочерние элементы «создать», «обновить» и «удалить», но я не что эта модель может быть реализована с использованием PHP RBAC.

Любые предложения или ссылки на материалы приветствуются. Я уверен, что на эту тему есть материал, который я еще не нашел.

ответ

1

RBAC, скорее всего, не хватает здесь, потому что у вас есть:

  • иерархия ресурсы
  • различных действий
  • потенциальных отношений между пользователями и ресурсами.

Чтобы реализовать свой сценарий, вы можете использовать RBAC и расширять его с помощью ABAC (управление доступом на основе атрибутов). С ДКС, можно достичь следующих преимуществ:

  • вы экстернализовать логику авторизации к точке принятия решения центральной политики
  • вы выражаете логику авторизации в качестве политики вместо ролей
  • политика может использовать любой атрибут пользователь, ресурс, действие и контекст

Вы можете высказать следующие сценарии в ДКС:

  • пользователь с ролью == менеджер может сделать действие == редактировать на документ, если document.location == user.location

XACML, расширяемого Access Control Markup Language реализует ДКС. Вы можете узнать больше о XACML и ABAC здесь:

Смежные вопросы