Спецификация RBAC

RBAC

Спецификация:

  1. «Пользователь» – Человек, или IoT устройство.
  2. «Permissions» – разрешения или полномочия, список действий, которые можно совершать пользователь в системе.
  3. «Приложение» – Установленное облачное ПО.
  4. «Room» – комната.
  5. «Слой данных» или «Volume» – Логический уровень данных для приложений. Пространство c ID "-1" является зарезервированным для всей системы. И обозначает управление главной консолью. Для всех остальных пространств их ID должны быть положительными и больше нуля.
  6. «Roles» – список ролей. Каждая роль обладает идентификатором пространства.
  7. «Сессия» – текущая сессия пользователя или устройства.
  8. «Пользователь – Роль» – соотношение, какие пользователи, какими ролями обладают.
  9. «Роль – Действие» - соотношение, какие роли, какими действиями обладают.
  10. «Пользователь – Действие» - соотношение, какие пользовали, какими действиями обладают. Также можно запрещать конкретное действие для определенного пользователя.
  11. Один пользователь может иметь несколько ролей.
  12. Одну роль могут иметь несколько пользователей.
  13. Одна роль может иметь несколько действий (Permission).
  14. Одно действие может принадлежать нескольким ролям.

ID пользователей:

> 0 – реальные пользователи
от -9999 до -1 – зарезервированные системные пользователи
- 1000 – пользователь системной шины
от -32769 и ниже – IoT устройства

-1 - Системное приложение

Более подробно в соглашении об идентификаторах.

Модель данных


Рисунок - диаграма классов

Таблицы:

  • Users - список пользователей. Он общий на всю систему.
  • Room - комната, виртуальное пространство.
  • Volume - том, слой данных
  • Softwares - список установленного программного обеспечения (приложений).
  • Permissions - список полномочий. У каждого приложения свой список полномочий.
  • IoT - список подключенных внешних устройств. У каждого виртуального пространства свои подключенные устройства.
  • App_Auth и User_Auth - таблицы авторизации для пользователей и IoT устройств. Содержат данные и методы для входа.
  • Sessions - сессии пользователя
  • Roles - список ролей. Для каждого пространства назначается свой список ролей.
  • Users_Room - список пользователей в комнате. Для каждого пространства назначаются пользователи, которые имеют доступ к этому пространтву. И этим пользователям назначаются роли и даются разрешения.
  • HavePermission - объект с описание разрешения