Автоматическое управление лицензиями
Если в проекте много пользователей, то управлять лицензиями вручную неудобно.
В SaluteJazz можно настроить автоматическое управление лицензиями. Лицензии будут назначены или отнимутся в зависимости от заранее заданных условий, которые зависят от атрибутов пользователей.
Основные настройки
Для того, чтобы настроить автоматическое назначение лицензий нужно:
- Добавить передачу нужных атрибутов:
- в
access_token, если пользователи создаются через SSO или через интеграцию с каталогом пользователей; - в правила синхронизации, если пользователи создаются через Jazz Sync Tool.
- Сообщить в службу поддержки SaluteJazz названия атрибутов, на которые завязывается логика управления лицензиями.
- Передать в службу поддержки SaluteJazz описание логики, в соответствии с которой будет происходить управление лицензиями.
Атрибуты пользователей
Пользователи могут быть созданы различными путями:
- вручную через кабинет администратора SaluteJazz;
- частично через SSO;
- через интеграцию с каталогом пользователей, например, AD (только для OnPrem инсталляций);
- через Jazz Sync Tool (только для Cloud инсталляций).
Если пользователь создается через кабинет администратора SaluteJazz, то у пользователя будет ограниченный набор атрибутов:
- фамилия;
- имя;
- отчество;
- email;
- роль;
- тип — пользователь (user) или переговорная комната (room).
Если пользователь заводится через SSO, синхронизируется из каталога пользователей организации или посредством Jazz Sync Tool, то у такого пользователя могут быть дополнительные атрибуты, в зависимости от соответствующих настроек:
- настройки SSO;
- синхронизация пользователей из каталогов пользователей;
- найстрока Jazz Sync Tool.
Передача групп пользователя
Кроме пользовательских атрибутов у пользователя могут быть еще группы, которые также можно передать в access token и SaluteJazz будет их обрабатывать так же, как и пользовательские атрибуты.
В AD есть несколько способов передать группы в токен. Мы рекомендуем использовать следующий вариант:
- Запустите AD FS Management на сервере AD FS.
- В разделе AD FS > Application Groups выберите нужную группу, щелкнув дважды левой кнопкой мыши (или правая кнопка мыши > Properties).
- В открывшемся окне выберите ADFS из раздела Web API.
- В открывшемся окне выберите правило или нажмите Add Rule (если ранее еще не настраивали передачу пользовательских атрибутов).
- Выберите в левом столбце атрибутов Token-Groups > Unqualified Names.
- Выберите в правом столбце утверждений Group.
- Нажмите Apply и OK.
Пример описания правил
В примерах используется псевдокод для лучшего восприятия. Для описания правил работы с лицензиями вы можете использовать любой понятный вариант записи.
Допустим есть пользователь со следующими атрибутами:
- role (роль): ["speaker"];
- department (отдел): "hr";
- position (должность): "HR Manager";
- group (группа): "SaluteJazz".
Логика применения правил:
- SaluteJazz перед началом применения правил считает, что у пользователя не должно быть никаких лицензий.
- SaluteJazz просматривает все правила сверху вниз. Если правило применимо к пользователю, то SaluteJazz добавляет к текущему состоянию пользователя соответствующую запись или удаляет ее в соответствии с правилами.
- После прохода по всем правилам в текущем состоянии остаются те лицензии, которые должны быть у пользователя.
- Далее SaluteJazz выравнивает реальное состояние пользователя с текущим, которое должно быть:
- Если у пользователя не должно быть каких-то лицензий, но они были назначены ранее в автоматическом режиме, то такие лицензии отнимаются у пользователя.
- Если у пользователя должны быть какие-то лицензии, но ранее автоматически не были назначены, то такая лицензия назначится пользователю.
Пример
Текущее состояние лицензий пользователя: []
Правило 1. Добавить премиум
IF group == "SaluteJazz", THEN
должна быть лицензия "Премиум" (правило применимо к пользователю → текущее состояние лицензий: ["Премиум"])
Правило 2. Добавить вебинар500
IF department == "hr" AND (position == "head_of_hr" OR role == "speaker"),THEN
должна быть лицензия "Вебинар500" (правило применимо к пользователю → текущее состояние лицензий: ["Премиум", "Вебинар500"])
Правило 3. Добавить вебинар1000
IF department == "hr" AND (position == "head_of_hr" OR role == "speaker"),THEN
должна отсутствовать лицензия "Премиум" (правило НЕ применимо к пользователю → текущее состояние лицензий не меняется: ["Премиум", "Вебинар500"])
Правило 4. Убрать премиум
IF department == "hr" AND (position == "head_of_hr" OR role == "speaker"), THEN
должна отсутствовать лицензия "Премиум" (правило применимо к пользователю → текущее состояние лицензий: ["Вебинар500"])
После применения всех подходящих пользователю правил у пользователя должна быть только лицензия "Вебинар500":
- SaluteJazz проверяет, какие лицензии ранее были назначены пользователю автоматически.
- Если у пользователя есть автоматически назначенные лицензии, которых быть не должно (например, у пользователя ранее не было роли speaker и ему в прошлый раз в соответствии с правилами, назначился премиум), то все такие лицензии отнимаются у пользователя.
- После отнятия всех лишних лицензий SaluteJazz назначает требуемые лицензии пользователю, таким образом выравнивая реальное состояние пользователя с требуемым правилами
Допустимые правила сравнения
| Оператор | Описание | Применение к скалярным полям | Применение к массивам | Особенности |
|---|---|---|---|---|
| == | Равенство | Поле точно равно значению | Любой элемент массива точно равен значению | Работает со строками, числами, булевыми значениями |
| <> | Неравенство | Поле не равно значению | Ни один элемент массива не равен значению | Возвращает false только если хотя бы один элемент совпадает |
| AND | Логическое И | N/A | N/A | Объединяет несколько условий; все должны быть истинны |
| OR | Логическое ИЛИ | N/A | N/A | Объединяет несколько условий; хотя бы одно должно быть истинно |
| IN | Входит в массив | Для строк: регистронезависимое сравнение подстрок | Для строк: точное регистронезависимое сравнение | Работает как со скалярными полями, так и с массивами |
| NOT IN | Не входит в массив | Поле не равно ни одному из значений в списке | Ни один элемент массива не равен ни одному из значений в списке | Обратная операция к IN |
| REGEX | Регулярное выражение | Поле соответствует шаблону | Срабатывает если в массиве есть хоть один соответствующий элемент |