Налаштування авторизації: розмежування доступу до бізнес-процесів та API-представлень реєстру через SOAP та REST
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний опис
Якщо ваш реєстр є власником даних, і ви хочете виставляти інтеграційні API-точки, отримувати запити та віддавати дані іншим реєстрам або системам, виконайте наступні налаштування регламенту:
-
Виконайте авторизаційні налаштування — надайте доступ для виклику бізнес-процесу.
-
Створіть модель даних (надайте доступ на читання даних реєстру через API-представлення)
-
Змоделюйте бізнес-процес, який викликатимуть інші реєстри або зовнішні системи.
-
Виконайте окремі налаштування для REST-інтеграції.
Для REST-взаємодії необхідно також надати доступ до реєстру в адміністративній панелі Control Plane. Детальніше — див. на сторінці Налаштування доступу до реєстрів.
Про це також окремо сказано у розділі Додавання ролей для REST-взаємодії цього документа.
2. Терміни та поняття
Будь ласка, звертайте увагу на ці визначення, щоб уникнути плутанини під час налаштування доступу та інтеграційних процесів. |
3. Налаштування авторизації для доступу до бізнес-процесів
Для ефективного управління доступом до бізнес-процесів у реєстрі, адміністраторам необхідно налаштувати авторизацію згідно з регламентом.
Платформа надає два основних підходи для регулювання доступу зовнішніх систем до бізнес-процесів:
Ми наполегливо рекомендуємо використовувати стратегію диференціації доступу за ролями, оскільки це забезпечує більшу гнучкість і вищий рівень безпеки при інтеграції систем. Така можливість доступна для версій Платформи та реєстрів 1.9.8 та вище. |
3.1. Надання доступу через універсальну системну роль (не рекомендовано до використання)
Контекст
Цей метод є робочим, але використовується, щоб забезпечити зворотну сумісність зі старими інтеграціями й вважається застарілим. Він включає:
-
Використання єдиного ендпоінта
startBp
для ініціації бізнес-процесів у реєстрі. ЕндпоінтstartBp
відповідальний за активацію бізнес-процесу. -
Присвоєння всім зовнішнім системам єдиного клієнта в Keycloak — trembita-invoker. Клієнт trembita-invoker створюється в системі автоматично.
-
Використання однієї системної ролі для цього клієнта —
trembita-invoker
. Системна рольtrembita-invoker
автоматично призначається клієнту trembita-invoker і відразу з’являється у списку Assigned Roles відповідного клієнта без необхідності додавання додаткових ролей.
Налаштування
|
-
У файлі bp-auth/external-system.yml налаштуйте параметри для контролю доступу до бізнес-процесів вашого реєстру. Це дозволить іншим системам ініціювати обмін даними через ваш API.
Приклад конфігурації доступуauthorization: realm: 'external-system' process_definitions: - process_definition_id: 'my-process-id' process_name: 'Ваш бізнес-процес' process_description: 'Опис бізнес-процесу' roles: - 'trembita-invoker'
-
Цей фрагмент вказує, що доступ до бізнес-процесу
my-process-id
надається роліtrembita-invoker
з Keycloak. -
process_name
іprocess_description
надають додаткову інформацію, але не впливають на авторизацію.
-
-
Далі, у файлі bp-trembita/external-system.yml вкажіть параметри, які будуть використовуватись для запуску та взаємодії з бізнес-процесами.
Налаштування змінних для ініціації та відповіді бізнес-процесуtrembita: process_definitions: - process_definition_id: 'my-process-id' start_vars: - eduname return_vars: - id - name
-
У цьому прикладі для запуску бізнес-процесу
my-process-id
необхідно передати стартовий параметрeduname
. -
Тут ми налаштовуємо, що бізнес-процес повертатиме параметри
id
таname
. Вони будуть записані до змінної результату у секції Output Parameters сервісної задачі з делегатом бізнес-процесу.Деталі про приймання та обробку цих параметрів у цільовому бізнес-процесі можна знайти в розділі нижче: Моделювання бізнес-процесу для виклику у цільовому реєстрі.
-
3.2. Розмежуванням доступу до API бізнес-процесів для різних ролей
Контекст
Рекомендуємо застосувати стратегію диференціації доступу за ролями, щоб забезпечити більш гнучкі налаштування доступу та підвищити рівень безпеки при інтеграції з іншими системами. |
Завдяки цьому підходу ви зможете точно контролювати доступ до бізнес-процесів, забезпечуючи високий рівень безпеки та адаптивність інтеграційної взаємодії. Зокрема цей підхід включає:
-
Використання окремих ендпоінтів для кожного бізнес-процесу у вашому реєстрі, забезпечуючи цільовий доступ.
-
Для SOAP-взаємодії через "Трембіту":
-
Встановлення єдиного клієнта в Keycloak — trembita-invoker для всіх зовнішніх систем. Цей клієнт автоматично створюється в системі та використовується для уніфікованого доступу до API через ШБО "Трембіта".
-
Призначення різних регламентних ролей для цього клієнта, що дозволяє деталізовано налаштовувати права доступу. Необхідно створити ці ролі та додати їх до списку Assigned Roles клієнта trembita-invoker у Keycloak.
-
-
Для REST-взаємодії із зовнішніми реєстрами та системами:
-
Встановлення окремого клієнта у Keycloak для кожної зовнішньої системи. Ці клієнти автоматично створюються в системі після конфігурацій у Control Plane та використовуються для розмежування доступу API через REST.
-
Призначення різних регламентних ролей клієнтів, що дозволяє деталізовано налаштовувати права доступу. Необхідно створити ці ролі та додати їх до списку Assigned Roles відповідного клієнта у Keycloak.
-
-
Використання спеціалізованого конфігураційного файлу — roles/external-system.yml - для опису та створення регламентних ролей.
Налаштування
|
-
Створіть регламентні ролі для зовнішніх систем. Після розгортання регламенту, вони будуть доступні у реалмі
-external-system
сервісу Keycloak.Файл roles/external-system.yml. Створення регламентних ролей для зовнішніх системroles: - name: my-role-1 description: External system role
Пояснення до файлу-
roles
визначає масив регламентних ролей. -
name
— службова назва ролі, яка буде використовуватися в системі. -
description
— опис призначення ролі. Параметр не впливає на авторизацію.
-
-
Налаштуйте доступ до бізнес-процесів у цільовому реєстрі, який надаватиме свій API для обміну даними.
Для цього перейдіть до файлу bp-auth/external-system.yml у регламенті та додайте створену роль до масиву
authorization.process_definitions.roles
:Файл bp-auth/external-system.yml. Надання доступу до бізнес-процесів у цільовому реєстріauthorization: realm: 'external-system' process_definitions: - process_definition_id: 'my-process-id' process_name: 'Назва вашого бізнес-процесу' process_description: 'Опис вашого бізнес-процесу' roles: - 'my-role-1'
-
authorization
— цей блок визначає авторизаційні налаштування. -
realm
визначає Keycloak-реалм, в якому будуть створені регламентні ролі. -
process_definitions
визначає масив бізнес-процесів, до яких ви хочете надати доступ для певної ролі. -
process_definition_id
— ідентифікатор бізнес-процесу у регламенті, до якого ви хочете надати доступ. -
process_name
визначає бізнес-назву процесу (не системну). Параметр є опціональним і не впливає на авторизаційні налаштування. -
process_description
дозволяє вказати опис призначення бізнес-процесу, до якого ви надаєте доступ. Параметр є опціональним і не впливає на авторизаційні налаштування. -
roles
визначає масив регламентних ролей, яким необхідно видати права доступу до відповідного бізнес-процесу.
У цьому прикладі ми вказуємо, що доступ необхідно надати до бізнес-процесу
my-process-id
для роліmy-role-1
з Keycloak-реалму-external-system
.Наполегливо НЕ рекомендуємо застосовувати системну роль trembita-invoker
в рамках цього методу доступу. Хоча технічно це можливо, присвоєння такої ролі одночасно з новоствореними регламентними ролями може призвести до конфлікту в системі. У такому випадку, система автоматично надасть пріоритет роліtrembita-invoker
, що ігноруватиме специфічні обмеження доступу. -
-
Налаштуйте файл bp-trembita/external-system.yml у регламенті:
-
Налаштуйте змінні старту бізнес-процесу. Для цього вкажіть, які параметри очікуватиме бізнес-процес у блоці
start_vars
.Без визначення start_vars
бізнес-процес не запрацює. -
Налаштуйте змінні повернення. Для цього вкажіть у блоці
return_vars
, які параметри повертатиме бізнес-процес.Файл bp-trembita/external-system.yml. Налаштування API-контракту для бізнес-процесуtrembita: process_definitions: - process_definition_id: 'my-process-id' start_vars: - eduname return_vars: - id - name
У цьому прикладі ми вказуємо, що для запуску бізнес-процесу
my-process-id
у цільовому реєстрі, необхідно передати стартові змінні. Без них ви не зможете ініціювати бізнес-процес. Тут ми передаємо параметрeduname
— умовне ім’я учня.Приклад, як прийняти змінні у цільовому процесі, див. у розділі нижче: Моделювання бізнес-процесу для виклику у цільовому реєстрі. -
Також налаштуйте змінні повернення. Тут ми налаштовуємо, що бізнес-процес повертатиме параметри
id
таname
. Вони будуть записані до змінної результату в Output Parameters цієї ж сервісної задачі з делегатом.
-
4. Додавання ролей клієнта у Keycloak
4.1. Додавання ролей для SOAP-взаємодії через ШБО "Трембіта"
Під час розгортання реєстру, системний обліковий запис trembita-invoker автоматично створюється в Keycloak під реалмом -external-system
. Цей обліковий запис є ключовим для всіх зовнішніх систем, що потребують доступу до реєстру через SOAP-інтеграцію на Платформі. Окрім того, під цим обліковим записом також автоматично створюється системна роль за замовчуванням — trembita-invoker
.
Щоб призначити специфічні регламентні ролі вашому клієнту, виконайте наступні кроки:
-
Увійдіть до інтерфейсу Keycloak.
-
Виберіть реалм
-external-system
для потрібного реєстру. Повна назва реалму буде у форматі<registry-name>-external-system
, де<registry-name>
є назвою вашого реєстру. -
Перейдіть до меню Clients і знайдіть клієнта trembita-invoker. Цей клієнт слугує єдиним системним обліковим записом для усіх SOAP-інтеграцій.
-
У налаштуваннях клієнта перейдіть до вкладки Service Account Roles.
-
У списку Available Roles знайдіть роль, яку ви створили раніше у файлі roles/external-system.yml, наприклад,
my-role-1
, та натиснітьAdd
для її додавання до секції Assigned Roles.
Налаштування зберігаються автоматично. Після завершення, ваша зовнішня система зможе взаємодіяти з реєстром, маючи доступ лише до визначених системних ролей і бізнес-процесів.
4.2. Додавання ролей для REST-взаємодії
Під час використання цього метода, Платформа автоматично створює облікові записи для зовнішніх систем на основі ваших налаштувань конфігурації. Розглянемо налаштування більш детально:
-
Відкрийте Control Plane і знайдіть потрібний реєстр.
-
Перейдіть до секції Доступ для реєстрів Платформи та зовнішніх систем.
-
Дотримуйтесь інструкцій зі сторінки Налаштування доступу до реєстрів для надання доступу.
-
Після налаштування доступу, Keycloak автоматично створить обліковий запис для кожної зовнішньої системи, наприклад,
test-0001
. -
Увійдіть до Keycloak і виберіть реалм
-external-system
вашого реєстру. Це можна зробити, обравши реалм з назвою<registry-name>-external-system
, де<registry-name>
— це назва вашого реєстру. -
Знайдіть обліковий запис клієнта test-0001 у меню Clients. Цей клієнт буде використовуватися для всіх REST-інтеграцій з цією зовнішньою системою.
-
У налаштуваннях клієнта перейдіть до вкладки Service Account Roles.
-
Виберіть необхідну роль, наприклад
my-role-1
, створену через файл roles/external-system.yml, і додайте її до Assigned Roles.
Налаштування збережуться автоматично, дозволяючи зовнішній системі взаємодіяти з вашим реєстром.
Під час REST-інтеграції, для кожного клієнта автоматично створюється і призначається системна роль Обов’язково додайте визначені регламентні ролі до Assigned Roles для належного розмежування доступу. |
5. Налаштування моделі даних
Створіть модель даних реєстру. Додайте нові критерії пошуку, що надаватимуть доступ на читання даних БД через API-представлення реєстру.
Детальніше про налаштування моделі даних ви можете переглянути на сторінці Налаштування доступу до API-представлень реєстру. |
6. Моделювання бізнес-процесу для виклику у цільовому реєстрі
Змоделюйте бізнес-процес, до якого звертатимуться інші реєстри для отримання даних. Це може бути будь-який процес, передбачений бізнес-логікою вашого реєстру.
Для того, щоб запустити бізнес-процес у вашому реєстрі, вам необхідно прийняти надіслані стартові змінні, які очікуються. Це можна зробити за допомогою скрипт-задачі, як показано на прикладі. ![]() Зображення 1. Приймання стартових змінних процесу у цільовому реєстрі
|
Де можна знайти приклад референтного бізнес-процесу?Адміністратор Платформи може розгорнути для вас демо-реєстр — еталонний реєстр, що містить референтні та інші приклади файлів для створення цифрового регламенту. Він містить різноманітні елементи для розробки моделі даних, бізнес-процесів, UI-форм, аналітичної звітності, витягів, сповіщень, зовнішніх інтеграцій та багато іншого. Еталонний регламент з прикладами для України зберігається в репозиторії Детальну інструкцію щодо розгортання демо-реєстру та отримання референтних прикладів моделювання ви знайдете на сторінці Розгортання демо-реєстру із референтними прикладами. Приклад BPMN-схеми процесу буде доступний у регламенті демо-реєстру за пошуком по ключовим словам — create-school-auto-sign. Назви форм ви можете знайти всередині відповідних користувацьких задач (User Task) бізнес-процесу у полі |