Многопользовательский контроль доступа

Каждую большую систему необходимо администрировать и контролировать на должном уровне. Существует множество решений и моделей, показывающих, как это сделать разными способами. Сейчас мы обратим внимание на модель, которая помогает объединить пользователей с разным уровнем доступа в "дерево". Корнем этого "дерева" является пользователь Администратор, у которого есть разрешение на выполнение любого действия. На других уровнях находятся такие пользователи, как администратор решения и конечный пользователь с меньшими правами доступа, так называемые "ветви дерева". Самая значимая возможность этой схемы в том, что вы можете добавлять неограниченное количество уровней администрирования и создавать "дерево" настолько сложным, насколько понадобится. В этом практическом уроке мы будем создавать модель многопользовательского контроля доступа со структурой, изображенной ниже:

Эта схема показывает отношения между тремя типами пользователей:

  • Администратор, у которого есть полный доступ к пользователям с более низким уровнем доступа,

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

  • Конечные пользователи, которые администрируются пользователями с более высокими правами доступа. Каждая "ветвь" изолирована друг от друга (Tenant Admin1 может управлять только своими конечными пользователями и "не знает" об Администраторе и других администраторах решений. Конечные пользователи могут видеть только свои ресурсы).

Теперь нужно проверить, как это реализовать на платформе Tibbo AggreGate.

Создание тестового ресурса

Прежде всего вам необходимо подключиться к AggreGate Server под учетной записью администратора:

И создать любой тестовый ресурс, например Virtual Device, и назвать его defaultAdminDevice:

Создание групп пользователей

Создайте четыре группы с именами: Admin, Tenant Admins, End Users 1, End Users 2, используя опцию Скрывать членов группы в их основном местоположении, как показано ниже:

Перетащите пользователя Администратор в соответствующую группу.

Создание пользователя администратор решения и его доступ

Теперь вам необходимо создать администратора решения с именем tenant1 в группе Tenant Admins и установить параметр Права доступа к собственным ресурсам на уровне Администратор.

После этого вы можете открыть Редактировать настройки аккаунта, закладку Права доступа.

На вкладке "Права доступа" (1) окна "Настройки аккаунта пользователя" мы добавим строку (2) и откроем селектор маски контекстов (3), чтобы выбрать группу пользователей, которую будет администрировать tenant1.

Следуя по контекстному дереву, находим Группы пользователей и группу End Users 1, которую мы хотим, чтобы tenant1 администрировал, и выбираем опцию * Все дочерние контексты. Обратите внимание, что текст контекстной маски указан в нижней части модального окна как users_groups.end_users_1.*

Установите права доступа на уровень Администратор.

Установите права доступа для записи users.* на уровень Наблюдатель.

До сих пор мы предоставляли tenant1 разрешение на администрирование группы endUser1 и просмотр других ресурсов.

Наконец, мы запретим пользователю tenant1 просматривать пользователя Admin , других пользователей Tenant или их группы пользователей. Для этого мы добавим следующие записи с разрешениями, установленными на None:

  • users.tenant2.* (Эта запись понадобится, когда мы создадим второго администратора Tenant на следующих шагах).

  • users_groups.admin

  • users_groups.tenantAdmins

  • users_groups.endUsers2

Теперь у нас должны быть следующие строки в таблице разрешений для tenant1 :

Создание тестового устройства на уровне конечного пользователя и администратора решения

Все готово к созданию конечного пользователя. Зайдите на сервер под учетной записью tenant1 и создайте тестовое устройство, как описано в Шаге №1. Назовите его defaultTenant1Device.

Создайте пользователя user1 в группе End User 1.

Установите уровень Оператор в поле Права доступа к собственным реурсам.

Выберите пункт Редактировать настройки аккаунта в контекстном меню пользователя user1, откройте вкладку Права доступа.  

Добавьте первую запись с маской контекстов users_groups.* и правами доступа Нет прав, чтобы запретить user1 видеть информацию про всех остальных пользователей.

Добавьте далее запись с маской контекстов users.tenant1.* и правами доступа Наблюдатель, чтобы пользователь user1 мог видеть все родительские ресурсы.

Последний шаг настройки и результат

Теперь, когда вы знаете, как создать администраторов решений и конечных пользователей, вы можете шаг за шагом добавлять вторую ветвь дерева для второго администратора решений (назовите его tenant2) и его конечного пользователя (назовите его user2). Будьте внимательны при настройке доступа для всех новых пользователей. Используйте корректные имена контекстов, когда вы захотите разрешить или запретить доступ. Соблюдайте указанный выше порядок правил на вкладке Права доступа.

Если вы выполните все действия без ошибок, вы получите результат, показанный ниже.

На уровне доступа пользователя Администратор вы увидите все ресурсы остальных пользователей, также будете иметь полный доступ к ним.

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

Конечному пользователю доступны для чтения все ресурсы пользователей более высокого уровня его ветви.