Спецификация RBAC
RBAC
Спецификация:
- «Пользователь» – Человек, или IoT устройство.
- «Permissions» – разрешения или полномочия, список действий, которые можно совершать пользователь в системе.
- «Приложение» – Установленное облачное ПО.
- «Room» – комната.
- «Слой данных» или «Volume» – Логический уровень данных для приложений. Пространство c ID "-1" является зарезервированным для всей системы. И обозначает управление главной консолью. Для всех остальных пространств их ID должны быть положительными и больше нуля.
- «Roles» – список ролей. Каждая роль обладает идентификатором пространства.
- «Сессия» – текущая сессия пользователя или устройства.
- «Пользователь – Роль» – соотношение, какие пользователи, какими ролями обладают.
- «Роль – Действие» - соотношение, какие роли, какими действиями обладают.
- «Пользователь – Действие» - соотношение, какие пользовали, какими действиями обладают. Также можно запрещать конкретное действие для определенного пользователя.
- Один пользователь может иметь несколько ролей.
- Одну роль могут иметь несколько пользователей.
- Одна роль может иметь несколько действий (Permission).
- Одно действие может принадлежать нескольким ролям.
ID пользователей:
> 0 – реальные пользователи
от -9999 до -1 – зарезервированные системные пользователи
- 1000 – пользователь системной шины
от -32769 и ниже – IoT устройства
-1 - Системное приложение
Более подробно в соглашении об идентификаторах.
Модель данных
Рисунок - диаграма классов
Таблицы:
- Users - список пользователей. Он общий на всю систему.
- Room - комната, виртуальное пространство.
- Volume - том, слой данных
- Softwares - список установленного программного обеспечения (приложений).
- Permissions - список полномочий. У каждого приложения свой список полномочий.
- IoT - список подключенных внешних устройств. У каждого виртуального пространства свои подключенные устройства.
- App_Auth и User_Auth - таблицы авторизации для пользователей и IoT устройств. Содержат данные и методы для входа.
- Sessions - сессии пользователя
- Roles - список ролей. Для каждого пространства назначается свой список ролей.
- Users_Room - список пользователей в комнате. Для каждого пространства назначаются пользователи, которые имеют доступ к этому пространтву. И этим пользователям назначаются роли и даются разрешения.
- HavePermission - объект с описание разрешения