Обмеження доступу на рівні IP до SOAP-роутів ШБО "Трембіта"

Функціональність доступна для версії реєстру 1.9.5 та вище.

1. Загальний опис

Платформа надає можливість регулювати доступ до SOAP API-інтерфейсів реєстру через адміністративну панель Control Plane.

SOAP-інтерфейси використовуються для вхідної взаємодії із зовнішніми системами через Шлюз Безпечного Обміну (ШБО) "Трембіта", коли зовнішня система хоче отримати дані з вашого реєстру.

На рівні інфраструктури Платформи такі SOAP-інтерфейси називають роутами (routes). Кожен роут формується з певного хоста (host) та має свій унікальний шлях (path), що веде до відповідного API-сервісу, до якого й обмежується доступ.

Система передбачає два роути для взаємодії з SOAP API реєстру:
  • bp-webservice-gateway-trembita — API-шлюз для викликів бізнес-процесів зовнішніми системами. Направляє трафік до сервісу bp-webservice-gateway, який імплементує точки (ендпоінти) інтеграційної взаємодії із бізнес-процесами (наприклад, /startBp для запуску бізнес-процесу у цільовому реєстрі та отриманні результату виконання такого процесу).

  • registry-soap-api — API-шлюз для читання даних реєстру зовнішніми системами. Направляє трафік до однойменного сервісу registry-soap-api, який є імплементує точки (ендпоінти) інтеграційної взаємодії із Фабрикою даних реєстру.

Верхньорівнева діаграма взаємодії ШБО "Трембіта" та SOAP API-сервісів реєстру
Зображення 1. Верхньорівнева діаграма взаємодії ШБО "Трембіта" та SOAP API-сервісів реєстру

Щоб забезпечити контроль і безпеку використання SOAP API-інтерфейсів, адміністративна панель Control Plane надає можливість адміністратору обмежувати комунікацію лише для конкретного переліку IP-адрес.

Технічний адміністратор реєстру відповідає за перевірку відповідності вказаних IP-адрес реальним адресам "Трембіти" й за коректність їх налаштувань. Якщо жодна IP-адреса не вказана у списку ipList, то маршрут до SOAP API не створюється, і доступ до API відсутній.

Після внесення переліку дозволених IP-адрес, зміни потрапляють до конфігурації реєстру deploy-templates/values.yaml, звідки потрапляють до пакетного менеджера Helm, який додає їх до анотацій відповідного роута, таким чином дозволяючи доступ до SOAP API.

2. Налаштування доступу

2.1. Додавання IP-адрес у Control Plane

  1. Увійдіть до консолі Control Plane як адміністратор реєстру.

    update cluster mgmt 01

  2. Перейдіть до розділу Реєстри та оберіть необхідний.

    change key 01

  3. Натисніть кнопку Редагувати, що розташована у правому верхньому куті.

    Налаштування доступу до SOAP API доступне також при створенні реєстру, та не є обовʼязковим.

    change key 02

  4. Перейдіть до секції ШБО Трембіта. Тут можна вказати дозволи на доступ до SOAP API реєстру через ШБО "Трембіта". Активуйте перемикач, щоб увімкнути доступ.

    За замовчуванням доступ вимкнено для нових реєстрів.

    cp soap api access trembita 1

  5. У полі IP-адреси ШБО Трембіта додайте нову IP-адресу ШБО "Трембіта", з якої буде дозволено доступ до хосту, на якому розгортатимуться роути SOAP API.

  6. Натисніть Підтвердити та повторіть дію для кожної такої IP-адреси.

    cp soap api access trembita 2

    • Допустимі символи: "0-9", "." Наприклад: 127.0.0.1.

    • Необхідно вказувати лише IP-адресу, без маски.

    • Дозволено введення лише IP-адрес, а не підмереж (див. детальніше — CIDR).

    • Кількість IP-адрес обмежена 10-ма.

    • Якщо перелік ipList не містить жодної IP-адреси, доступ до SOAP API є відсутнім (роут не створюється).

    cp soap api access trembita 3

  7. Натисніть Підтвердити, щоб зберегти зміни до конфігурації.

    У результаті система формує запит на оновлення зі статусом Новий та типом Редагування реєстру.

  8. У розділі Реєстри > Запити на оновлення знайдіть необхідний запит.

    cp submit mr 1

  9. Відкрийте сформований запит, натиснувши іконку перегляду — 👁.

  10. У новому вікні зіставте 2 версії змін, переконайтеся, що внесені вами дані вірні, та натисніть Підтвердити. Ви також можете відразу відхилити зміни до конфігурації, натиснувши Відхилити.

    Запропоновані зміни вносяться до конфігурації файлу deploy-templates/values.yaml репозиторію реєстру у разі підтвердження.

    cp soap api access trembita 4

    cp submit mr 3

    У результаті запит набуває статусу Підтверджено.

  11. Розгортання змін займає певний час і виконується автоматично сервісом Jenkins. Сервіс запускає процес (пайплайн), що має назву Master-Build-<registry-name>, де <registry-name> — назва реєстру. Переглянути статус розгортання можна, перейшовши до розділу Реєстри > ваш реєстр > Конфігурація > CI.

    Під час розгортання реєстру система створює роут bp-webservice-gateway-trembita та додає до нього helm-анотацію з IP-адресами, вказаними у файлі values.yaml. Також до кожної адреси автоматично додається маска підмережі /32, що вказує на одну адресу.

    Приклад 1. Конфігурація trembita.ipList у файлі deploy-templates/values.yaml
    trembita:
      ipList:
        - 85.223.209.18
        - 85.223.209.19
        - 172.16.0.0
        - 127.0.0.1
    Приклад 2. Helm-анотація metadata.annotations, яка додається до SOAP API-роутів OpenShift
    metadata:
      annotations:
        haproxy.router.openshift.io/ip_whitelist: 85.223.209.18/32 85.223.209.19 172.16.0.0/32 127.0.0.1/32

    У результаті доступ до SOAP API через ШБО "Трембіта" буде дозволено.

    Слід відзначити, що роут для registry-soap-api буде створено лише після того, як відбудеться розгортання або оновлення моделі даних (data-model), і при цьому в реєстрі має бути хоча б одна дозволена адреса. Таким чином, при першому додаванні IP-адреси до списку дозволених, необхідно ініціювати процес оновлення моделі даних.

    Це можна здійснити шляхом ручного запуску Jenkins-пайплайну під назвою data-model, або через автоматичний запуск, який відбувається після внесення змін до моделі даних в результаті редагування регламенту.

    Детальніше про це див. у розділі Перезапуск Jenkins-процесу data-model у регламенті цього документа.

2.2. Перезапуск Jenkins-процесу data-model у регламенті

Запустіть пайплайн data-model, щоб оновити конфігурацію моделі даних реєстру та створити відповідний роут registry-soap-api. Це можна зробити декількома способами:

  • через внесення та commit змін до теки data-model регламенту registry-regulations у Gerrit-репозиторії (див. детальніше на сторінках: Процес розгортання регламенту в Gerrit та Розширення Liquibase для моделювання даних).
    У результаті оновлення моделі даних реєстру, запускається Jenkins-процес MASTER-Build-registry-regulations, який своєю чергою запускає пайплайн розгортання дата-моделі — data-model. Цей пайплайн створює другий роут — registry-soap-api із відповідною анотацією та записує в неї дозволені IP.

  • через внесення змін до файлів моделі даних реєстру в Кабінеті адміністратора регламентів (див. детальніше на сторінках: Моделювання структури таблиць БД реєстру в XML-редакторі коду та Застосування змін до майстер-версії).
    У результаті оновлення моделі даних реєстру, запускається Jenkins-процес MASTER-Build-registry-regulations, який своєю чергою запускає пайплайн розгортання дата-моделі — data-model. Цей пайплайн створює другий роут — registry-soap-api із відповідною анотацією та записує в неї дозволені IP.

  • через запуск Jenkins-пайплайну data-model вручну. У результаті запускається Jenkins-процес data-model, який створює другий роут — registry-soap-api із відповідною анотацією та записує в неї дозволені IP.

    Детальніше про це дивіться на сторінці Як запустити Jenkins-процес розгортання моделі даних?.

Таким чином ви матимете 2 роути для повноцінного обміну даними із зовнішніми системами через ШБО "Трембіта" за SOAP-протоколом.

3. Налаштування авторизації у регламенті та використання SOAP API

Після того, як ви надали доступ на рівні IP-адреси в Control Plane і створили роути для SOAP API, можна перейти до налаштувань регламенту для керування авторизацією, зокрема:

  • надання доступу до бізнес-процесів на рівні регламенту;

  • надання доступу до SOAP API-ендпоінтів, згенерованих у сервісі registry-soap-api.

Детальну інформацію можна знайти на сторінці Налаштування регламенту для надання доступу до даних через SOAP та REST API.

Наступним кроком, ви можете додати SOAP API-сервіси в ШБО для вхідної інтеграції з іншими системами.

Надалі ви зможете використовувати API для обміну даними за SOAP-протоколом через ШБО "Трембіта".

© 2023 Платформа Реєстрів.