Налаштування доступу до публічних даних реєстру
- 1. Загальний опис
- 2. Сценарії використання
- 3. План дій з налаштування та використання
- 4. Моделювання регламенту
- 5. Публікація API у регламенті
- 6. Перегляд опублікованих API у Swagger
- 7. Налаштування доступу до публічних даних
- 8. Моніторинг показників у Grafana
- 9. Створення сервісного облікового запису для виконання публічних запитів
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний опис
Сторонні системи та користувачі мають можливість отримувати публічну інформацію з реєстру в актуальному стані, обробляти та візуалізувати її без автентифікації, використовуючи публічні точки доступу API.
Цей документ складається з двох основних частин: створення та публікація точок доступу на рівні регламенту реєстру та налаштування доступу на рівні конфігурації реєстру.
2. Сценарії використання
- Платформа надає наступну функціональність для роботи із публічними даними у реєстрі:
-
-
Публікація пошукових запитів
-
Конфігурація ресурсів публічного API
-
Створення точок інтеграції для публічного API технічним адміністратором реєстру
-
Отримання документації та використання публічного API
-
Моніторинг стану та використання публічних пошукових критеріїв
-
Зміна рейт-лімітів для наявних точок інтеграції
-
3. План дій з налаштування та використання
Скористайтеся наступним планом дій для налаштування та використання публічних API у реєстрі:
- Налаштування на рівні регламенту:
- Налаштування на рівні конфігурації реєстру:
4. Моделювання регламенту
-
Відкрийте Адміністративний портал та створіть версію-кандидат.
Детальніше про це читайте на сторінці Створення запитів на внесення змін. -
Перейдіть у Таблиці > Файл опису структури та додайте новий changeset із критерієм пошуку (Search Condition).
-
Детальніше про файл опису структури читайте на сторінці Моделювання структури таблиць БД реєстру в XML-редакторі коду.
-
Детальніше про критерії пошуку (Search Conditions) читайте на сторінці Розширення Liquibase для моделювання даних.
-
-
Визначте, який саме пошуковий критерій ви хочете зробити публічним. Для цього додайте новий changeset із тегом
exposeSearchCondition
та атрибутомpublicAccess
.<exposeSearchCondition publicAccess="true" name="vpo_person_type_contains_name_public_test"/>
Більш детально про exposeSearchCondition
— див. Тег налаштування доступу до API реєстру.Рекомендуємо налаштувати посторінкову пагінацію (тип
page
) для управління відображенням повернутих зexposeSearchCondition
даних (count
). Також налаштуйтеlimit
до кількості даних реєстру, які повертаються у відповіді.Дізнайтеся більше про
limit
таpagination
у наступних розділах документації: -
Перейдіть до наступного розділу для публікації моделі даних у регламенті.
5. Публікація API у регламенті
Опублікуйте модель даних, застосувавши зміни до майстер-версії регламенту. API-точка доступу до даних буде згенерована на базі кожного визначеного пошукового критерію.
Детальніше про публікацію змін до регламенту читайте у розділі Застосування змін до майстер-версії. |
6. Перегляд опублікованих API у Swagger
Після успішного проходження всіх етапів публікації, можна переглянути внесені пошукові запити, які доступні для публічного доступу, в OpenAPI-специфікації. Для цього:
-
Перейдіть до вебінтерфейсу управління кластером OpenShift.
-
Оберіть проєкт із вашим реєстром, відкрийте Networking > Routes та перейдіть за посиланням до сервісу
platform-gateway-kong-proxy
.Обов’язково додайте в кінець URL-адреси
/openapi
, інакше ви потрапите до sandbox-середовища із pet-точками доступу. Ваш URL у браузері має виглядати так:https://example.com/api/public/data-factory/openapi
-
Відкрийте openapi та знайдіть опубліковані публічні точки доступу.
-
Скопіюйте ім’я ендпоінту до буфера обміну та перейдіть до наступного кроку налаштувань.
Для зменшення навантаження на сервіс Kong API Gateway, для посилань до API-документації, для GET-запитів встановлюється TTL-based кешування. Відповідь кешується за допомогою плагіну Налаштувати значення кешу можна на рівні конфігурації плагіну через Gerrit. Значення за замовчуванням — 15 хв. Кеш зберігається в пам’яті API Gateway. |
7. Налаштування доступу до публічних даних
7.1. Налаштування доступу до публічних даних та встановлення рейт-лімітів
Відкрийте доступ до публічних даних та налаштуйте рейт-ліміти.
-
Увійдіть до адміністративної панелі Control Plane.
-
На вкладці Інформація про реєстр знайдіть секцію Публічний доступ.
-
Натисніть кнопку
Надати доступ
. -
У новому вікні заповніть поля:
-
Службова назва запита: введіть службову назву запита. Наприклад,
city-lab
. -
Точка інтеграції: вкажіть точку інтеграції, налаштовану розробником регламенту на етапі Моделювання регламенту та опубліковану в сервісі API реєстру. Наприклад,
/search-laboratories-by-city
. -
Встановіть рейт-ліміти на доступ — кількість запитів від користувачів/систем за одиницю часу. Наприклад, за годину, місяць тощо.
-
-
Натисніть кнопку
Надати
. -
Перейдіть до секції Запити на оновлення, відкрийте та підтвердьте новий запит. Запропоновані зміни будуть застосовані до налаштувань реєстру у файлі deploy-templates/values.yaml.
Див. детальніше про підтвердження змін на сторінці Підтвердження запитів на внесення змін до реєстру. Після налаштування, конфігурація реєстру матиме такий вигляд:
publicApi: - name: vpo-person-type-test url: /vpo-person-type-contains-name-public-test limits: second: 5 hour: 100 enabled: true - ...
Після виконання пайплайну розгортання, публічний доступ до даних через вказаний API-ендпоінт буде відкритий.
7.2. Перевірка роботи публічного доступу
-
Відкрийте браузер у режимі Інкогніто й вставте скопійоване у розділі Перегляд опублікованих API у Swagger посилання на доданий пошуковий запит.
-
Неавтентифікований користувач/система отримає дані у форматі JSON.
При досягненні ліміту, формується відповідь від API Gateway з кодом 429 та тілом
{ "message": "API rate limit exceeded" }
7.3. Керування доступом
-
Редагуйте точки інтеграції та рейт-ліміти: ::
-
Натисніть на іконку редагування 🖉 біля відповідного запита.
-
Внесіть необхідні зміни та підтвердьте їх.
-
-
Заблокуйте доступ натисканням іконки блокування 🔒. Технічно це означатиме призупинення доступу до певного API-ендпоінту.
Доступ можна відновити, натиснувши на розблокування (повторний клік на заблокований елемент 🔒). -
Анулюйте доступ повністю натисканням іконки видалення 🚫.
Після кожної дії перевірте та підтвердьте застосування змін у секції Запити на оновлення.
Якщо видалити наявні точки інтеграції або тимчасово вимкнути їх, користувач отримає повідомлення про помилку HTTP 404 при спробі доступу. |
Зміна іконок статусу навпроти публічного API у секції Публічний доступ означає, що створений запит на оновлення застосовано до |
8. Моніторинг показників у Grafana
Платформа має Grafana-дашборд, призначений для моніторингу показників виконання і кількості запитів до публічних точок інтеграції від неавтентифікованих користувачів і сторонніх систем.
Технічний адміністратор реєстру може користуватися даними з дашборду для відстеження динаміки й стану показників. Ці дані можуть допомогти у визначенні потреби в оптимізації налаштувань, таких як коригування лімітів на запити.
Детальну інформацію щодо моніторингу ви можете переглянути на сторінці Моніторинг метрик публічного API. |
9. Створення сервісного облікового запису для виконання публічних запитів
Попри те, що формально точки інтеграції є публічними, для підтримання однорідності аудиту та логування в середині Платформи, такі запити будуть здійснюватись від імені службового користувача із Keycloak-реалму external-system
. Система автоматично створить службового користувача public-user
для авторизації на рівні platform-gateway
.
Переконайтеся, що такий системний користувач створений у відповідному реалмі сервісу Keycloak. Для цього:
-
Відкрийте сервіс автентифікації та авторизації Keycloak
-
Знайдіть реалм
-external-system
для вашого реєстру. -
Відкрийте меню Clients >
public-user
.