Когда мы разрабатываем систему, мы должны столкнуться с проблемой контроля разрешений, то есть разные пользователи имеют разные права доступа, операций и данных. Модели управления полномочиями, которые формируют теорию, включают: дискреционный контроль доступа (DAC: дискреционный контроль доступа), обязательный контроль доступа (MAC: обязательный контроль доступа) и контроль доступа на основе атрибутов (ABAC: контроль доступа на основе атрибутов). Модель разрешений RBAC (управление доступом на основе ролей) чаще всего используется разработчиками и относительно проста в использовании. В этой статье вы познакомитесь с этой моделью разрешений.
1. Введение в модель разрешений RBAC
Модель разрешений RBAC (управление доступом на основе ролей): управление разрешениями на основе ролей. В модели есть несколько ключевых терминов:
- Пользователь: Оператор системного интерфейса и доступа
- Разрешение: квалификация авторизации для доступа к интерфейсу или выполнения операции.
- Роль: общий термин для пользователей с одинаковыми привилегиями.
Основная логика авторизации модели разрешений RBAC выглядит следующим образом:
- Какова роль пользователя?
- Какие права есть у роли?
- Получите разрешения пользователя от разрешений роли
Во-вторых, процесс эволюции RBAC
2.1 Прямая связь между пользователями и разрешениями
Когда люди думают о контроле разрешений, первое, что приходит на ум, это режим, в котором пользователи напрямую связаны с разрешениями, проще говоря, у пользователя есть определенные разрешения. Как показано на рисунке:
- Чжан Сан имеет право создавать пользователей и удалять пользователей, поэтому он может быть специалистом по обслуживанию системы.
- У Ли Си есть полномочия по ведению документации по продуктам и продажам, поэтому он может быть коммерческим продавцом.
Эта модель может четко выразить отношения между пользователями и разрешениями, что достаточно просто. Но есть и проблемы:
- Теперь пользователями являются Zhang San и Li Si. С увеличением персонала в будущем каждый пользователь должен быть повторно авторизован.
- Или, если Чжан Сан и Ли Си уйдут, им нужно восстановить несколько разрешений для каждого пользователя.
2.2. У пользователя есть роль
В реальных групповых услугах пользователи могут быть классифицированы. Например, система управления заработной платой обычно классифицируется по уровням: менеджер, старший инженер, инженер среднего звена, младший инженер. То есть по определенным ролям пользователи с одной ролью обычно имеют одинаковые разрешения. После этого изменения можно преобразовать полномочия на основе пользователей в полномочия на основе ролей.
- У пользователя есть роль
- Роль имеет несколько разрешений на операции (меню)
- Разрешение на операцию может принадлежать нескольким ролям
Мы можем описать такую связь, используя модель проектирования базы данных на рисунке ниже.
2.3 Одна или несколько ролей для пользователя
Однако в практических прикладных системах один пользователь и одна роль далеко не соответствуют требованиям. Если мы хотим, чтобы пользователь временно имел и роль продавца, и роль вице-президента. Как я должен это делать? Чтобы повысить применимость дизайна системы, мы обычно разрабатываем:
- Пользователь имеет одну или несколько ролей
- Роль содержит несколько пользователей
- Роль имеет несколько разрешений
- Разрешение принадлежит нескольким ролям
Мы можем описать такую связь, используя модель проектирования базы данных на рисунке ниже.
2. Права доступа к странице и права работы
- Доступ к странице:Все системы состоят из страниц одна за другой, а страницы затем состоят из модулей.Могут ли пользователи видеть меню этой страницы и могут ли они войти на эту страницу, называется правами доступа к странице.
- Разрешение на операцию:Любое действие или взаимодействие пользователя в операционной системе требует разрешений на выполнение операций, таких как добавление, удаление, изменение и проверка. Например: может ли пользователь щелкнуть кнопку, гиперссылку и должен ли пользователь видеть разрешение.
Чтобы удовлетворить этот спрос, мы можем хранить ресурсы страницы (меню) и ресурсы операций (кнопки) в отдельных таблицах, как показано на рисунке выше. Вы также можете сохранить их в таблице и использовать поле, чтобы различать их.
3. Разрешения на данные
Разрешения на доступ к данным легко понять, т. е. к каким данным пользователь может получить доступ и управлять ими.
- Обычно права доступа к данным определяются организацией, к которой принадлежит пользователь. Например, первый производственный отдел может видеть только производственные данные своего собственного отдела, второй производственный отдел может видеть только производственные данные своего собственного отдела; отдел продаж может видеть только данные о продажах, а не данные финансового отдела. . Все данные может видеть генеральный менеджер компании.
- В реальных бизнес-системах права доступа к данным часто бывают более сложными. Весьма вероятно, что отдел продаж может использовать данные производственного отдела для определения стратегий продаж, графиков и т. д.
Таким образом, чтобы справиться со сложными требованиями, управление разрешениями данных обычно контролируется программистами, которые пишут персонализированный SQL для ограничения объема данных, а не передают его модели разрешений, Spring Security или shiro. Конечно, эту проблему также можно решить с точки зрения модели разрешений или структуры разрешений, но их применимость ограничена.
Ждем вашего внимания
- Серия документов, которые рекомендуют вам блоггеров:«Прикоснитесь к своим рукам, чтобы научить вас изучать серию SpringBoot — 16 глав, 97 разделов»
- Эта статья воспроизводится с указанием источника (должна быть ссылка, а не только текст):Блог Адетокунбо.