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

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

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

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

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

  • Конечные пользователи имеют права доступа, определенные администратором или администратором тенанта, находящимся непосредственно над ними.

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

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

Сначала мы водимся в систему на сервере как администратор и создаем любой тестовый ресурс, например Virtual Device, и назовем его defaultAdminDevice.

Добавим устройство из контекстного меню, которое открывается при щелчке правой клавишей мыши по узлу «Устройства».

В нашем примере создано Virtual Device с именем defaultAdminDevice:

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

Мы создаем четыре группы пользователей с именами Admin, Tenant Admins, End Users 1, и End Users 2

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

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

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

Теперь создадим администратора тенанта с именем tenant1 в Tenant Admins группе с помощью контекстного меню Создать в группе»

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

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

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

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

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

Мы находим строку со значением маски контекста users.* и устанавливаем значение «Права доступа» на Observer. Обратите внимание, что мы использовали строку поиска, чтобы легко найти эту строку.

До сих пор мы предоставляли 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). Будьте осторожны при настройке прав для всех новых пользователей. Используйте правильные имена контекстов, когда хотите запретить или предоставить какие-либо права, а также соблюдайте порядок строк, как показано выше, чтобы избежать проблем.

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

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

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

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

Was this page helpful?