Глубокое понимание системы разрешений RBAC.
Глубокое понимание системы разрешений RBAC.

недавно,В интервью другу задали вопрос, как спроектировать «Разрешениясистема». Мы заметили, что многие бэкэнды в настоящее время используют политики контроля доступа RBAC (включая некоторые популярные платформы быстрой разработки Ruoyi). Эта стратегия работает путем предоставления персонажу Разрешения.,Затем дайте пользователю Назначение роли.,Добиться контроля доступа к ресурсам системы. сегодня,Мы подробно объясним Разрешениясистему на основе RBAC.

RBAC-SYS.jpg

Описание RBAC

RBAC (управление доступом на основе ролей) — это модель управления доступом, основной концепцией которой является назначение разрешений на основе ролей. Целью разработки этой модели является упрощение управления доступом к системным ресурсам и повышение безопасности и удобства обслуживания системы.

Внедрение RBAC обычно включает в себя следующие этапы:

  • Проектируйте роли и иерархии Разрешения.
  • Назначьте пользователям соответствующие роли.
  • Свяжите Разрешения с ролями, чтобы сформировать матрицу контроля доступа.
  • проходить Управление Механизм сеансами поддерживает эффективность Разрешения.

RBAC-MODULE.png

Вот некоторое описание системы разрешений RBAC:

определение роли

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

Определение разрешения

Разрешения представляют собой права доступа к системным ресурсам или операциям, включая различные уровни доступа, такие как чтение, запись, выполнение и другие операции. Обычно разрешения связаны с конкретными задачами или действиями, такими как доступ к определенным файлам, изменение информации о пользователе и т. д. В нашей системе разрешений степень детализации разрешений обычно уточняется до уровня кнопок управления на странице. Некоторые системы также включают разрешения на доступ к данным, например, возможность доступа к данным текущего отдела и его подчиненных отделов или возможность просмотра данных только из определенной системы и т. д.

Назначение ролей

Пользователи получают соответствующие разрешения, назначаясь одной или нескольким ролям. Это упрощает управление разрешениями, поскольку больше нет необходимости напрямую назначать разрешения каждому пользователю, а нужно только управлять взаимосвязью между ролями и разрешениями.

Разрешительная ассоциация

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

Управление сеансами

пользователь Авторизоватьсясистеманазад,Механизм управления сеансами отвечает за поддержание разрешения, связанного с ролью пользователя. Как только сессия закончится,Обычно срабатывает автоматический отзыв Разрешения. Обычно мы храним сеанс в Redis.,И установите время истечения срока действия для управления сеансом. Срок действия будет обновляться при посещении пользователем,Обеспечьте валидность сеанса.

Аудит и мониторинг

Система RBAC обычно включает в себя функции аудита и мониторинга для регистрации действий пользователей, изменений решений и посещений системы. Это помогает обнаружить потенциальные проблемы безопасности и обеспечить соответствие требованиям.

Динамическая регулировка:

Система RBAC позволяет динамически настраивать связь между ролями и разрешениями во время выполнения. Такая гибкость позволяет системе адаптироваться к меняющимся организационным структурам и потребностям бизнеса.

Особенности RBAC

  • упрощатьуправлять

Интегрируя Разрешительную ассоциацию в роли, RBAC упрощает Разрешенияуправлять для крупных пользователей.

  • гибкость

Модель RBAC обладает высокой гибкостью и может регулировать отношения между ролями и разрешениями в соответствии с потребностями организации.

  • Уменьшите количество ошибок

Уменьшая необходимость напрямую назначать разрешения пользователям, RBAC снижает риски безопасности системы, вызванные неправильной авторизацией.

Проектирование таблиц базы данных

ER-диаграмма таблицы базы данных выглядит следующим образом:

RBAC-ER.png

Конкретная конструкция стола выглядит следующим образом:

sys_menu

Примечания к таблице: Таблица разрешений меню

Поле

тип

нулевой

по умолчанию

Комментарий

идентификатор (первичный ключ)

bigint

нет

Идентификатор меню

menu_name

varchar(50)

да

NULL

Название меню

parent_id

bigint

да

0

отец Идентификатор меню

order_num

int

да

0

Порядок отображения

path

varchar(200)

да

адрес маршрутизации

component

varchar(255)

да

NULL

путь к компоненту

query

varchar(255)

да

NULL

параметры маршрутизации

is_frame

int

да

1

данет — внешняя ссылка (0да 1нет)

menu_type

char(1)

да

тип меню (каталог M C, кнопка меню F)

visible

char(1)

да

0

Статус меню (0 показывает, 1 скрывает)

status

char(1)

да

0

Статус меню (0 нормальный 1 отключенный)

perms

varchar(100)

да

NULL

Идентификатор разрешения

icon

varchar(100)

да

#

значок меню

create_by

varchar(64)

да

Создатель

create_time

datetime

да

NULL

время создания

update_by

varchar(64)

да

Программа обновления

update_time

datetime

да

NULL

Время обновления

remark

varchar(500)

да

Примечание

sys_role

Примечания к таблице: Таблица с информацией о ролях

Поле

тип

нулевой

по умолчанию

Комментарий

идентификатор (первичный ключ)

bigint

нет

Идентификатор роли

role_name

varchar(30)

да

NULL

Имя персонажа

role_key

varchar(100)

да

NULL

Строка разрешения роли

status

char(1)

да

NULL

Статус персонажа (0 нормальный, 1 отключенный)

del_flag

char(1)

да

0

Флаг удаления (0 означает существование, 2 означает удаление)

create_by

varchar(64)

да

Создатель

create_time

datetime

да

NULL

время создания

update_by

varchar(64)

да

Программа обновления

update_time

datetime

да

NULL

Время обновления

remark

varchar(500)

да

NULL

Примечание

sys_role_menu

Примечания к таблице: Таблица ассоциации ролей и меню

Поле

тип

нулевой

по умолчанию

Комментарий

идентификатор (первичный ключ)

bigint

нет

role_id

bigint

да

NULL

Идентификатор роли

menu_id

bigint

да

NULL

Идентификатор меню

sys_user

Примечания к таблице: Таблица информации о пользователе

Поле

тип

нулевой

по умолчанию

Комментарий

идентификатор (первичный ключ)

bigint

нет

ID пользователя

user_name

varchar(30)

да

NULL

Учетная запись пользователя

nick_name

varchar(30)

да

NULL

Никнейм пользователя

phonenumber

varchar(11)

да

номер телефона

password

varchar(100)

да

пароль

status

char(1)

да

0

Статус учетной записи (0 нормальный, 1 отключенный)

del_flag

char(1)

да

0

Флаг удаления (0 означает существование, 2 означает удаление)

create_by

varchar(64)

да

Создатель

create_time

datetime

да

NULL

время создания

update_by

varchar(64)

да

Программа обновления

update_time

datetime

да

NULL

Время обновления

remark

varchar(500)

да

NULL

Примечание

sys_user_role

Примечания к таблице: Таблица ассоциации пользователей и ролей

Поле

тип

нулевой

по умолчанию

Комментарий

идентификатор (первичный ключ)

bigint

нет

Идентификатор первичного ключа

user_id

bigint

да

NULL

ID пользователя

role_id

bigint

да

NULL

Идентификатор роли

sys_logininfor

Примечания к таблице: Таблица журнала входа в систему

Поле

тип

нулевой

по умолчанию

Комментарий

идентификатор (первичный ключ)

bigint

нет

Идентификатор доступа

user_id

bigint

да

NULL

ID пользователя

user_name

varchar(50)

да

Учетная запись пользователя

ipaddr

varchar(128)

да

IP-адрес для входа

login_location

varchar(255)

да

Место входа

browser

varchar(50)

да

Тип браузера

os

varchar(50)

да

Операционная система

status

char(1)

да

0

Статус входа (0 успешный, 1 неудачный)

msg

varchar(255)

да

Подсказка

login_time

datetime

да

NULL

время доступа

Подвести итог

Являясь надежным и мощным механизмом контроля доступа, система разрешений RBAC обеспечивает прочную основу для безопасности системы. Глубоко понимая основные концепции и принципы работы RBAC, мы можем лучше применять эту модель, чтобы гарантировать, что система достигает оптимальной производительности в управлении доступом, одновременно улучшая удобство обслуживания и гибкость системы. В некоторых системах введены такие функции, как временные роли и базовые роли, основанные на системе ролей RBAC, для дальнейшего повышения гибкости и адаптируемости RBAC.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода