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

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

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

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

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

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

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

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

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

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

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

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

Выберите первый ряд и создайте новую запись users_group.endUser1.* в самом начале списка нажатием кнопки Добавить запись  ().

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

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

Эти шаги помогают настроить права доступа пользователя tenant1 для администрирования группы endUser1 и получить возможность видеть ресурсы пользователя Администратор.

Перед тем, как перейти к следующему шагу, вам необходимо запретить пользователю tenant1 видеть пользователя Администратор и других администраторов решений с их группами конечных пользователей. Чтобы это сделать, добавьте четыре записи: users.tenant2.*(эта запись необходима, потому что в последующих шагах мы будем создавать второго администратора решений с таким именем), users_groups.admin, users_groups.tenantAdmins, users_groups.endUser2, устанавливая права доступа на уровне Нет прав. Не забудьте сохранить ваши настройки, нажав кнопку Сохранить свойства  ().

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

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

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

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

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

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

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

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

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

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

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

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

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