Розмежування прав доступу на рівні ролей
Вступ
Lowcode-платформа повинна унеможливити неавторизований доступ до системи в процесі використання Кабінетів посадової особи та особи-отримувача послуг. Окрім цього, адміністратор регламенту повинен мати можливість налаштування прав доступу на рівні бізнес-процесів та створення ролей для регламенту.
Ролі
Типи ролей
Доступ до функціональності Платформи для ролей Посадова особа та Особа-отримувач послуг надається виключно через Kong API Gateway.
Кожний запит повинен бути заздалегідь автентифікований Сервісом управління ідентифікацією та доступом Keycloak. В залежності від контексту запита,
автентифікація виконується в реалмі[1] officer або citizen.
Обліковий запис користувача може мати одну чи декілька ролей.
Ролі розподіляються на 3 групи:
1) Системні — створюються в процесі розгортання Платформи та надаються за замовчуванням користувачам відповідного реалму.
Ця група включає наступні типи ролей:
- 
officerдля реалму Посадова особа;
- 
citizenдля реалму Особа.
| Видалення системних ролей може призвести до неконсистентного[2] стану системи. | 
2) Системні ролі суб’єкта — ролі, які відображають категорію громадянина.
До такої групи належать наступні типи:
- 
individual;
- 
entrepreneur;
- 
legal;
- 
unregistered_individual;
- 
unregistered_entrepreneur;
- 
unregistered_legal.
На відміну від системних ролей officer та citizen, системні ролі суб’єкта не використовуються для обмеження доступу
на рівні API. Вони потрібні для реєстрації отримувача послуг в системі та розмежування послуг за категорією на рівні регламенту.
| Детальніше про категорії громадян можна дізнатися за посиланням. | 
3) Регламентні — ролі, які є частиною регламенту та створються в процесі публікації змін до регламенту.
Наявність системних ролей відповідає за доступ до системи в цілому. Тобто, cервіс управління задачами
користувача та Сервіс управління бізнес-процесами користувача надають доступ до ресурсів тільки за наявності
ролі officer або citizen.
Регламентні ролі використовуються для надання доступу до окремих бізнес-процесів. Розмежування прав доступу до бізнес-процесів є також частиною регламенту.
Мапінг[3] ролей
Модель авторизації Camunda BPMN Engine використовує групи для налаштування спільних правил доступу до ресурсів.
В процесі запита до Сервісу виконання бізнес-процесів, виконується зіставлення ролей, що є в токені, з групами
в Camunda. Тобто, якщо користувач має роль officer-first-rank, яка була надана йому у Keycloak, то при
виконанні запита він отримує права доступу, що належать групі officer-first-rank у Camunda BPMN Engine.
Запуск бізнес-процесу
Для того, щоб користувач системи мав право на запуск бізнес-процесу, необхідне виконання наступних правил:
- 
Користувач повинен мати налаштовану роль у Keycloak, яка матиме відповідну групу в Camunda. 
- 
Група в Camunda повинна мати налаштовані правила авторизації для відповідного бізнес-процесу (Process definition authorization). Приклад: 
| Type | Group | Permissions | Resource Id | 
|---|---|---|---|
| Allow | officer-first-rank | READ, CREATE_INSTANCE | add-lab | 
- 
Група в Camunda має налаштовані правила авторизації для створення нових екземплярів бізнес-процесів (Process instance authorization). Приклад: 
| Type | Group | Permissions | Resource Id | 
|---|---|---|---|
| Allow | officer-first-rank | CREATE | * |