Підсистема управління даними реєстру

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

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

Підсистема, призначення якої є надання доступу до даних реєстру через REST API та Підсистему асинхронного обміну повідомленнями, з можливістю запису, читання, зміни та видалення даних. Також підсистема відповідальна за управління збереженими файлами, перевіркою цілісності даних та виявленням несанкціонованих змін.

2. Функції підсистеми

  • Створення, читання, зміна та видалення записів реєстру.

  • Пошук даних за параметрами.

  • Реалізація рольового доступу до даних (RBAC).

  • Ведення історичності змін.

  • Збереження інформації про походження даних.

  • Збереження пов’язаних файлів реєстру.

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

3. Технічний дизайн підсистеми

registry management overview.drawio

3.1. Аудит та журналювання подій

Події маніпуляцій з даними реєстру фіксуються у журналі аудиту з повним контекстом.

Тип події

Спосіб фіксації

Службова назва

Опис

USER_ACTION

До та після події

SEARCH ENTITY

Надходження запиту про пошук даних до Сервіс синхронного управління даними реєстру

USER_ACTION

До та після події

SEARCH

Надходження запиту про пошук даних до Сервіс синхронного управління даними реєстру

USER_ACTION

До та після події

READ ENTITY

Надходження запиту про отримання даних за ідентифікатором до Сервіс синхронного управління даними реєстру

USER_ACTION

До та після події

UPDATE ENTITY

Надходження запиту про внесення змін до Сервіс синхронного управління даними реєстру

USER_ACTION

До та після події

UPSERT ENTITY

Надходження запиту про внесення створення або зміну сутності до Сервіс синхронного управління даними реєстру

USER_ACTION

До та після події

DELETE ENTITY

Надходження запиту про видалення запису до Сервіс синхронного управління даними реєстру

USER_ACTION

До та після події

SELECT FROM TABLE

Операція пошуку даних в БД

USER_ACTION

До та після події

KAFKA_REQUEST_UPDATE

Надходження запиту про внесення змін до Сервіс асинхронного управління даними реєстру

USER_ACTION

До та після події

KAFKA REQUEST CREATE

Надходження запиту про створення нового запису до Сервіс асинхронного управління даними реєстру

USER_ACTION

До та після події

KAFKA REQUEST DELETE

Надходження запиту про видалення запису до Сервіс асинхронного управління даними реєстру

USER_ACTION

До та після події

UPDATE TABLE

Операція внесення змін в БД

USER_ACTION

До та після події

DELETE FROM TABLE

Операція видалення запису з БД

USER_ACTION

До та після події

INSERT INTO TABLE

Операція створення нового запису до БД

USER_ACTION

Під час виникнення

CONSTRAINT ERROR

Збереження або зміна даних порушують наявні обмеження БД

USER_ACTION

Під час виникнення

CLIENT ERROR

Клієнтська помилка при синхронному запиті

USER_ACTION

Під час виникнення

RUNTIME ERROR

Помилка в процесі опрацювання запита

USER_ACTION

Під час виникнення

INVALID_HEADER_VALUE

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

USER_ACTION

Під час виникнення

HEADERS_ARE_MISSING

Один або декілько обов’язкових заголовків відсутні

USER_ACTION

Під час виникнення

LIST_SIZE_VALIDATION_ERROR

Кількість елементів для завантаження перевищено

USER_ACTION

Під час виникнення

VALIDATION_ERROR

Помилка вхідних даних при синхронному запиті

USER_ACTION

Під час виникнення

PROCEDURE_ERROR

Помилка виклику процедури

USER_ACTION

Під час виникнення

THIRD_PARTY_SERVICE_UNAVAILABLE

При опрацюванні запитів одна з систем Платформи не була доступна

USER_ACTION

Під час виникнення

NOT_FOUND

При пошуку сутності по ідентифікатору, сутність не було знайдено.

Детальніше з дизайном Підсистеми журналювання подій аудиту можна ознайомитися за посиланням.

4. Складові підсистеми

Назва компоненти Представлення в реєстрі Походження Репозиторій Призначення

Сервіс синхронного управління даними реєстру

registry-rest-api-deployment

origin

github:/epam/edp-ddm-service-generation-utility

github:/epam/edp-ddm-rest-api-core-base-image

github:/epam/edp-ddm-kafka-api-core-base-image

Обробляє синхронні REST API запити на читання та запис даних реєстру.

Сервіс асинхронного управління даними реєстру

registry-kafka-api-deployment

origin

Обробляє асинхронні запити на читання та запис даних реєстру.

Операційна БД реєстру

registry

origin

github:/epam/edp-ddm-registry-postgres

База даних що містить службові таблиці сервісів і всі таблиці реєстру змодельовані адміністратором регламенту. Вона також фіксує історію змін даних та перевіряє права згідно з RBAC.

Операційне сховище цифрових документів реєстру

ceph:file-ceph-bucket

origin

-

Зберігання цифрових документів реєстру

Сховище вхідних даних

ceph:datafactory-ceph-bucket

origin

-

Зберігання підписаних даних при внесенні в реєстр

Сховище вихідних даних

ceph:response-ceph-bucket

origin

-

Тимчасове зберігання даних для передачі в рамках міжсервісної взаємодії всередині підсистеми

5. Технологічний стек

При проектуванні та розробці підсистеми, були використані наступні технології:

6. Атрибути якості підсистеми

6.1. Scalability

Підсистема управління даними реєстру підтримує як горизонтальне, так і вертикальне масштабування.

Детальніше з масштабуванням підсистем можна ознайомитись у відповідних розділах:

6.2. Observability

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

Детальніше з дизайном підсистем можна ознайомитись у відповідних розділах:

6.3. Auditability

Підсистема управління даними реєстру фіксує значимі технічні та бізнес події, пов’язані з експлуатацією системи кінцевими користувачами використовуючи підсистему журналювання подій аудиту.

6.4. Security

Автентифікація запитів відбувається на рівні KeyCloak підсистемою управління користувачами та ролями.

Механізм авторизації включає в себе розмежування прав доступу до даних на основі ролей (RBAC).

За втілення підходу найменший привілеїв відповідає адміністратор реєстру який повинен налаштувати таблиця ролей відповідним чином після створення регламенту реєстру. Процес зміни прав доступу описаний у статі.

Задля забезпечення стійкості системи та запобігання зловживанню сервісами підсистема надає механізм керування рейт лімітами для публічного REST API. Встановлення рейт лімітів може обмежити зловмисне або неправомірне використання сервісів, наприклад, запобігаючи автоматизованому збору даних (web scraping) або спаму, брутфорс, сканування на вразливості, зменшення навантаження та DDoS.

Підсистема являється учасником Service Mesh та відповідно усі мережеві взаємодії контролюються Підсистемою управління міжсервісною взаємодією. На іншому рівні мережеве спілкування з підсистемою також контролюється мережевими політиками Openshift.

Дані під час внутрішньої комунікації на рівні платформи а також з зовнішніми системами через REST API захищені надійним шифруванням каналу звязку яке використовує надійний протокол TLS 1.2. Підсистема не зберігає дані а лише оброблює їх відповідно шифрування при зберігання не використовується.

Компоненти підсистеми підлягають моніторингу та логуванню згідно вимог безпеки.

Підсистема журналювання подій аудиту зберігає події доступу до та модифікації даних. Події аудиту місять інформацію про користувача, який ініціював подію, або про систему, з якої було здійснено запит. Події аудиту забезпечують достатній рівень деталізації з яких можна зрозуміти що відбувалося в системі включно з результатами виконання запитів або відповіді від систем.

Для забезпечення характеристики невід’ємності події аудиту логують результат виконання дії з повним контекстом тож існує достатньо доказів того, що певна подія відбулася, і заперечити це неможливо.

Детальніше з принципами безпечного дизайну можна ознайомитись у відповідних розділах: