Примітки до релізу 1.9.5

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

Розробка

Управління кадровиком посадовими особами

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

Ієрархічна модель заявників (не лише в рамках однієї юрособи) — референтний приклад

Управління повноваженнями та ієрархічна модель:
  • Створено ієрархічну модель заявників для управління повноваженнями отримувачів послуг на референтному бізнес-процесі. Це дозволяє керівникам ЮО/ФОП ефективно керувати дозволами діяти від імені їхньої організації.

Дата-модель та повідомлення:
  • Реалізовано дата-модель та сформовано шаблони повідомлень для бізнес-процесу.

Моделювання форм та сценаріїв:
  • Здійснено моделювання форм та сценаріїв бізнес-процесу, що підвищує зручність роботи користувачів.

Скасування ліцензій та управління повноваженнями:
  • Також, уповноваженим особам-отримувачам послуг надано можливість створювати запити на скасування ліцензій від імені ЮО/ФОП через референтний бізнес-процес. Це забезпечує більшу гнучкість та контроль над управлінням повноваженнями.

Управління керівником реєстру кадровиками та іншими посадовими особами

Управління кадровиками та посадовими особами у реєстрі:
  • Запроваджено референтний бізнес-процес для управління реєстром кадровиків та інших посадових осіб керівником реєстру.

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

Типові розширення для розробників регламенту:
  • Create officer user: дозволяє створювати посадових осіб з обов’язковим внесенням службових атрибутів та додаванням додаткових довільних атрибутів, з автоматичним призначенням системної ролі.

  • Save officer user attributes: дозволяє редагувати системні та додаткові атрибути посадових осіб з бізнес-процесу.

  • Get roles: дає змогу отримувати список доступних ролей заданого реалма із бізнес-процесу.

  • Get user roles: дозволяє отримувати перелік регламентних ролей користувача.

Делегати та шаблони element templates:
  • На рівні back-end розроблено делегати та element templates для вищезгаданих типових розширень, що значно спрощує процес інтеграції та розширення функціональності бізнес-процесів.

Створення елементів ієрархії (підрозділи…) із Кабінету посадової особи — референтний приклад

Розробка бізнес-процесу та моделі даних:
  • Розроблено референтний бізнес-процес (БП) для перегляду та виконання дій з елементами ієрархії з кабінету посадової особи.

  • Створено модель даних для управління ієрархією та заповнено довідники початковими значеннями.

  • Розроблено бізнес-процес для управління ієрархічною структурою, включаючи розробку форм.

  • Розроблено форми для редагування та створення документів у рамках бізнес-процесів.

  • Розширено модель даних необхідними критеріями пошуку (Search Conditions).

Робота з атрибутами користувачів:
  • Додано підтримку автоматичного пропагування додаткових атрибутів користувачів в Access Token / ID Token / UserInfo через "JsonWebToken#otherClaims".

  • Розроблено компонент oidc-usermodel-custom-attributes-mapper в EDP для обробки кастомних атрибутів користувачів для протоколу OIDC.

  • Додано mapper для кастомних атрибутів у збірку Keycloak та налаштування для клієнтів "officer-portal" та "citizen-portal".

  • Додано можливість отримання значень додаткових атрибутів користувача через функції "initiator()" та "completer()" у JUEL-виразах БП за допомогою "UserDto#attributes".

  • Додано метод (getter) "attributes" у клас "UserDTO" для використання у функціях "initiator()" та "completer()" JUEL.

Налаштування та використання атрибутів:
  • Налаштовано атрибут "КАТОТТГ" як ознаку приналежності до ієрархії та доступність для використання в RLS (Row-Level Security) та звітах на рівні регламенту реєстру разом з іншими додатковими атрибутами.

  • Позначено protocol mapper "КАТОТТГ" як deprecated у helm-чартах. Позначено відповідні java-класи та методи, які використовують "КАТОТТГ", як deprecated.

Робота з протоколами та компонентами:
  • Додано компонент "saml-user-custom-attributes-mapper" в EDP для обробки кастомних атрибутів користувачів для протоколу SAML.

  • Додано mapper для кастомних атрибутів у збірку Keycloak та налаштування для клієнтів "redash-viewer" та "redash-admin".

Розширення пошуку та швидкого пошуку:
  • Розроблено типове розширення "Search registry users by attributes" для пошуку користувачів з можливістю вказати атрибути, їх значення та тип пошуку.

  • Створено універсальний делегат для пошуку користувачів в Keycloak та розроблено відповідний елемент-шаблон.

  • Розширено Keycloak REST API extension новим методом для пошуку користувачів за атрибутами.

  • Додано можливість швидкого текстового пошуку в табличному компоненті для користувачів кабінету посадової особи/громадянина після SAML-автентифікації.

  • Додано компонент "Quick Search" для швидкого пошуку у компоненті "Edit Grid" для використання в "Officer-portal" та "Citizen-portal".

  • Додано можливість налаштування швидкого текстового пошуку у табличному компоненті за даними ("Quick Search").

Кешування JWT-токенів при взаємодії з іншими системами

Кешування тимчасових авторизаційних JWT-токенів:
  • Кешування тимчасових авторизаційних JWT-токенів, отриманих в рамках взаємодії із зовнішніми системами, згідно з визначеним специфікацією терміном дії у клеймі "exp".

  • Кешування тимчасових авторизаційних JWT-токенів, отриманих в рамках взаємодії із зовнішніми системами через "Універсальний REST-конектор", згідно з визначеним специфікацією часом дії у клеймі "exp".

Кешування тимчасових авторизаційних JWT-токенів для відправки push-повідомлень:
  • Кешування тимчасових авторизаційних JWT-токенів, отриманих в рамках взаємодії з "Дією" при обміні push-повідомленнями, згідно з визначеним специфікацією терміном дії у клеймі "exp".

  • Винесено логіку по кешуванню токена доступу в окремий клас.

Резервне копіювання реплікацій об’єктів S3

Керування розкладом реплікації об’єктів S3 через Control Plane:
  • Імплементовано керування розкладом реплікації (бекапування) об’єктів в S3.

  • Додано керування розкладом у Control Plane.

  • Налаштовано передачу до пайплайну створення резервних копій S3-бакетів значення з Vault.

Редагування внесених даних місця зберігання реплікації об’єктів в S3:
  • Імплементовано можливість редагувати внесені дані місця зберігання реплікації (бекапування) об’єктів в S3.

Єдиний URL для Кабінету посадової особи та інструменту Redash

Єдиний URL для Redash:
  • Винесено Redash Viewer за основний KONG API-шлюз за шляхом /reports.

Налаштування Redash Viewer:
  • Налаштовано Redash Viewer використовувати Kong DNS.

  • Налаштування маршрутизації в React для видачі статики /static за context path-ом REDASH_ROUTE_PREFIX.

Налаштування Redash Admin:
  • Винесено реєстровий адміністративний ендпоінт Redash Admin під Kong API Gateway.

  • Видалено функціональність по використанню власних DNS для Redash Viewer.

  • Видалено окреме налаштування DNS в control-plane-console для Redash.

Розгортання демо-реєстру із референтними прикладами

  • Реалізовано можливість розгорнути демо-реєстр із референтними прикладами моделювання регламенту, зокрема бізнес-процесів, UI-форм, схем моделі даних тощо.

  • Додано пакування consent-data як додаткового репозиторію Gerrit в Інсталері.

  • Додано версіонування по гілці у consent-data.

  • Адаптовано пайплайн публікації для можливості використання внутрішніх посилань до nexus у liquibase-файлах моделі даних.

  • Змінено для розгортання Nexus basePath CICD2-кластера (узгоджено зі значенням для Envone-кластера).

  • Додано сервіс для nexus для використання порту 80 (назва сервісу — artifactory).

  • Переведено consent-data на використання внутрішніх посилань до nexus у liquibase-файлах моделі даних.

  • Переведено empty-registry-reg template на використання внутрішніх посилань до nexus у liquibase-файлах моделі даних.

  • Оновлено структуру регламенту consent-data для розділення на unit та complex референтні приклади.

Управління обмеженнями на завантаження цифрових документів та можливість скриптування завантаження та вивантаження файлів

Завантаження цифрових документів:
  • Додано можливість скриптування завантаження цифрових документів, завантажених користувачами або отриманих із зовнішніх систем, у межах виконання бізнес-процесу.

  • Розроблено JUEL-функцію load_digital_document().

Отримання метаданих:
  • Розроблено внутрішній ендпоінт для вивантажування файлів із сервісу цифрових документів.

  • Розроблено JUEL-функцію get_digital_document_metadata() для отримання метаданих цифрових документів у рамках бізнес-процесу.

  • Додано розроблену JUEL-функцію для вивантажування файлу в автопідказки Groovy в адміністративному порталі.

  • Розроблено референтний приклад з використанням двох JUEL-функцій для роботи з файлами.

Збереження файлів у сховище:
  • Додано службову JUEL-функцію save_digital_document() для скриптування збереження файлів, які були сформовані або вивантажені з зовнішніх систем, у сховище цифрових документів в рамках бізнес-процесу.

  • Розроблено внутрішній ендпоінт для збереження файлу до Сервісу цифрових документів.

  • Додано розроблену JUEL-функцію для збереження файлу в автопідказки Groovy в адміністративному порталі.

Налаштування обмежень розмірів файлів:
  • Додано можливість налаштовувати обмеження на розмір файлів цифрових документів, які завантажуються до реєстру.

  • Додано параметри до конфігурації сервісу для встановлення обмежень на розмір файлів.

  • Виконано валідацію розмірів файлів при завантаженні та редагуванні компонента на формі.

Застосування обмежень на завантаження файлів:
  • Додано обмеження на максимальний розмір файлів цифрових документів, завантажених користувачами через UI-форми, налаштовані на рівні конфігурації реєстру.

  • Замінено використання параметра max-remote-file-size-mb на digitalDocuments.maxFileSize.

  • Додано механізм перевірки розширення файлу, завантаженого за віддаленою адресою, на доступність.

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

  • Можливість обмежувати доступ до SOAP API-роутів, що використовуються ШБО "Трембіта".

  • Можливість задавати дозволені IP-адреси для налаштування вхідних інтеграцій через ШБО "Трембіта".

  • Додано логіку: не створювати registry-soap-api роут за відсутності адрес в ipList.

  • Реалізовано можливість додавати IP-адреси в анотацію роутів компонентів bp-webservice-gateway-trembita та registry-soap-api.

  • Змінено роут bp-webservice-gateway-trembita на path-based.

  • Додано валідацію IP-адреси на рівні Jenkins-пайплайну.

  • Внесено зміни до бібліотеки для тестів після додавання нового роуту bp-webservice-gateway-trembita.

Декларативний підхід до налаштування емуляторів зовнішніх систем для спрощення тестування зовнішніх інтеграцій реєстру

Налаштування емуляторів для зовнішніх інтеграцій у Control Plane:
  • Розширено можливості control-plane-console для виконання налаштувань.

  • Оновлено Control Plane Jenkins-пайплайн для розгортання реєстру з урахуванням описаних змін.

  • Видалено роут для Wiremock.

  • Прибрано з примітки біля чек-боксу "для версій реєстру 1.9.4 та вище".

  • Змінено URL емулятора реєстру з url = http://wiremock:<port>/ на http://wiremock.{NAME_REGІSTRy}:<port>/.

Додавання нових емуляторів для інтеграції зовнішніх систем:
  • Реалізовано можливість додавати нові емулятори для інтеграції зовнішніх систем.

  • Додано правила валідації регламенту.

  • Додано етап для імпорту mappings до пайплайну registry-regulations.

  • Додано network-policy для взаємодії з реєстровим WM-сервісом.

Зв’язок зі службою підтримки при виникненні некритичних помилок у Кабінетах користувачів

  • Додано можливість отримання ідентифікатора трасування (Trace ID) при виникненні некритичних помилок на інтерфейсах користувачів.

  • Додано можливість скопіювати Email та зв’язатися зі службою підтримки при виникненні некритичних помилок.

  • Створено попереджувальне вікно нотифікацій, яке відображає інформацію про помилку.

  • Додано відображення нотифікації у Кабінетах користувачів (посадової особи, отримувача послуг та адміністратора регламенту).

Оновлення Платформи для сумісності з OpenShift версії 4.12

  • Оновлено платформу для сумісності з OpenShift версії 4.12 (крім Istio).

  • Підготовлено підсистеми Платформи та реєстрів до оновлення на OKD 4.12.

  • Оновлено версію API awsproviderconfig.openshift.io/v1beta1machine.openshift.io/v1beta1 для control-plane-gerrit, storage, logging.

  • Додано версію ocs-operator для 4.12 в storage.

  • Оновлено компонент noobaa.

  • Оновлено autoscaling/v2beta2 до autoscaling/v2.

  • Переміщено на використання pod security admission.

  • Мігрували з batch/v1beta1 на batch/v1.

  • Оновлено версії oc та kubectl до відповідних OKD 4.12 / Kubernetes 1.25.

  • Мігрували з використання анотації service.beta.kubernetes.io/load-balancer-source-ranges на специфікацію CR IngressController.

  • Проведено тестування на зворотну сумісність з OKD 4.11.

  • Змінено NETWORK_TYPE для таргет-кластерів.

Інші впровадження

Ці оновлення включають покращення в автентифікації, оптимізацію роботи з базами даних, перехід на односторінкові застосунки (SPA) у control-plane-console, а також збільшення стабільності та ефективності тестування.

  • При автореєстрації використано hash як ім’я користувача в id-gov-ua реалмі.

  • Внесено зміни в автентифікатор на back-end.

  • Застосовано міграційні скрипти для Keycloak PostgreSQL.

  • Створено SPA на сторінці dashboard в control-plane-console.

  • Перенесено сторінку edit registry на SPA в control-plane-console.

  • Перенесено сторінку create registry на SPA в control-plane-console.

  • Встановлено можливість визначення ApplicationName у налаштуваннях JDBC-підключень до PostgreSQL на back-end.

  • Додана можливість включення/виключення перевірки по allowed-keys в DSO на back-end.

  • Реалізовано можливість розгортання оновлення платформи в VSphere без коментування Terraform для Vault/Minio.

  • Курсор тепер автоматично розташовується на першій лінії редактора коду під час редагування скрипту.

  • Вилучено Crunchy PGO function для міграції 1.9.3→1.9.4 з інсталятора 1.9.5.

  • Оновлено кластер БРДО до останньої версії (1.9.3).

Покращення у пайплайнах безпеки CICD2:
  • Додано етап create-machine-set: До пайплайнів безпеки було додано етап create-machine-set. Це забезпечує більш гнучке та безпечне керування ресурсами машин.

  • Розв’язано проблему з доступом до Kibana: було розв’язано проблему, через яку Kibana була недоступна. Це покращує моніторинг та аналітику для користувачів.

Автоматизація тестування:
  • Для можливості постійної регресії було створено набір автоматичних тестів NoTrembita у проєкті E2E. Це дозволяє забезпечити вищу якість та стабільність продукту.

Онбординг та керування Користувачами:
  • Onboarding: здійснено процес онбордингу для нових користувачів, що спрощує їх інтеграцію у систему.

  • Створення користувачів та надання дозволів: були створені необхідні користувачі та надано дозволи новим користувачам.

Публікація репозиторіїв Gerrit до GitHub:
  • Було опубліковано перелік репозиторіїв Gerrit в GitHub з частковим збереженням історії та можливістю подальшої реплікації. Це поліпшує процес співпраці та контроль версій.

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

  • У цьому релізі також акцентовано увагу на наданні прямої підтримки та допомоги користувачам для забезпечення гладкої та ефективної роботи з системою.

Регресійні дефекти

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

Список регресійних дефектів. Натисніть, що розгорнути або згорнути блок.
  • Додано зовнішню систему до переліку після натискання кнопки "Додати".

  • Видалено зовнішню систему з переліку зовнішніх налаштувань після підтвердження її видалення.

  • Виявлено нестачу ресурсів для повторного розгортання на реєстрі розгорнутому на 5 нодах.

  • При оновленні сертифікатів реєстру або платформи створюється нечитабельний запит на оновлення для файлу CACertificates.

  • Запит на оновлення має статус "У процесі виконнання", який не зміниться до оновлення сторінки.

  • При оновленні реєстру з 1.9.2 до 1.9.3 налаштування для бекапу CrunchyPostgres в values.yaml перетирається.

  • Обмежено можливість користувача підтверджувати нові запити на оновлення доки не завершиться попередній запит.

  • У values.yaml створюється дві секції налаштування резервного копіювання реєстру.

  • Після відновлення реєстру паролі в secrets та БД різняться.

  • Виправлено некоректне ім’я на інтерфейсі запиту на оновлення для деяких операцій.

  • Розроблено механізм стягування версії backup-management відповідної до версії реєстру.

  • Оновлено процедуру Cleanup з послідовним видаленням спочатку Redash дашбордів, а потім ролей.

  • Перенесено pgpool image в інсталятор і зафіксовано версію.

  • Виявлено проблему з розгортанням регламенту після відновлення реєстру.

  • CleanUp завдання не виконується, якщо не були видалені старі репозиторії в Gerrit.

  • Виконано спеціальні кроки на кластері BRDO.

  • Розв’язано проблему з неробочим SMTP-сервером на кластері.

  • AWS S3 policy зміни блокують всі OCP встановлення на AWS.

  • Control plane console затирає дані щодо CrunchyPostgres.

  • Додано поле вводу для CrunchyPostgres на UI.

  • Redash сервіс впадає через нестачу ресурсів пам’яті.

  • Після підтвердження оновлення платформи через Control plane консоль створюються два дублікати запита.

  • Виправлено неправильний шлях до документації в KEYCLOAK DNS. Центральний Kafka operator впадає через обмеження RAM.

  • Адміністратор платформи тепер має доступ до перегляду всіх реалмів в Keycloak.

  • Виявлено проблему зі створенням create-release після відновлення реєстру.

  • Адміністратор реєстру не має доступу до реєстрового Nexus при переході за посиланням з Control Plane-консолі.

  • При автентифікації з атрибутом subjectType виникає помилка.

  • Виправлено проблему з взаємодією між реєстрами.

  • CIDR адреси не передаються з форми при редагуванні реєстру.

  • Виправлено проблему з кнопкою видалення в "Перелік дозволених ключів".

  • Виправлено неправильне сортування по даті в запитах на оновлення.

  • Зміни зі сторінки "Ресурси Реєстру" для реєстру не передаються.

  • Один ключ REDASH_SECRET_KEY використовується для redash-admin & redash-viewer.

  • Не відбувається валідація на унікальність імен під час надання доступу до реєстру, що призводить до конфлікту.

  • Помилка при повторному генеруванні сервісів при видачі аналітичних прав.

  • Пошук на карті не працює при введенні символів після точки.

  • Create-release-пайплайни не збираються при першому розгортанні реєстру через неготовність Redash-сервера приймати запити.

  • Неправильний код відповіді коли сутність підписана неправильно.

  • Видалити секрети sh.helm.release.v1.citus.v* для видалення інформації про реліз citus після перейменування на registry-postgres.

  • Немає смужок переходу у підпроцесі між User Task та формою підпису.

  • Помилка PostgreSQL JDBC Driver pid 627: ERROR: invalid memory alloc request size 18446744073709551592 у pgPool.

  • Можливість видалення dracs-registry, edr-registry, dp-exchange-service-registry повинна бути заблокована.

  • При збірці інсталера підтягнулась не правильна версія dataplatform-jenkins-agent-image.

  • Відсутня обробка валідаційної помилки у випадку, коли користувач завантажує у файл компонент на формі файл розміром > 100МБ.

  • Властивість "Property Name" не повинна залежити від поля "Label" у компонентах Form IO.

  • Змінився колір placeholder, яких зовсім не видно на сторінці додавання адміністраторів платформи та реєстру.

  • Змінився колір шрифту placeholder для полів, яких зовсім не видно на сторінці додавання адміністраторів платформи та реєстру.

  • Не відображається статус та tooltip у блоці Конфігурація.

  • Регресійні дефекти 1.9.5.

  • Проаналізувати поведінку БП, який працює в асинхронному режимі з оновлюванням сутностей при перезапуску поди BPMS або додаванні нового поду.

  • Не відбувається пошук об’єкта на мапі з кластеризацією.

  • При незбереженому редагуванні точки на карті при натисканні кнопки Submit форма зависає на завантаженні.

  • Редагувати мокапи критичних помилок у дизайнах.

  • При очищенні карти за допомогою кнопки "Clear All" дані про об’єкти на мапі зберігаються.

  • Видалено pet project зі swagger-ui.

  • Додано посилання на Gerrit MR з огляду версії кандидату в Адміністративному порталі.

  • Помилка в КП консолі при подвійному натисканні кнопки Підтвердити при оновленні реєстру.

  • error: could not lock config file .git/config: File exists помилка виникає під час створення нових тимчасових БД під версії кандидат у admin-tools.

  • Видаляються поди та роути реєстрових сервісів після падіння пайплайну публікації регламенту.

  • Користувачі кабінету посадової особи без атрибута hierarchy_code бачать усю ієрархію в процесі "Управління ієрархічною структурою".

  • Якщо не увімкнути налаштування розкладу бекапів реєстру в control-plane-console, то не відпрацює запущена руками пайплайн Create-registry-backup.

  • Помилка при переході на пункт меню у Кабінеті чиновника, якщо був виконаний вхід у Redash.

  • Кастомний УРЛ для Redash не можна задати окремо для 1 реєстру.

  • Незмінений path в адмін-порталі для використання API Redash.

  • На оновленому consent-data не відбувається запис у таблицю audit_event.

[*] Не вдається підтвердити додавання інтеграції зовнішньої системи під час першого додавання інтеграції з WireMock.

[*] Зміщений чек-бокс на поп-апах налаштувань взаємодії з реєстрами через Трембіту та з іншими системами.

  • Не повертаються внесені раніше IP у поле "IP-адреса ШБО Трембіта" при активації перемикача в рамках цієї ж сесії.

  • Невірна підказка формату IP для введення для поля "IP-адреси ШБО Трембіта" на поп-апі.

  • Поле "IP-адреси ШБО Трембіта" приймає невірний формат IP.

  • Немає валідації обов’язковості для поля: "IP-адреса ШБО Трембіта".

  • Не створився роут registry-rest-api після додавання таблиці у data-model.

  • Не видаляються значення IP з МР з values.yaml якщо вимкнути слайдер.

  • Існує можливість додати дублікат IP-адреси.

  • IP не додається у анотацію роута registry-soap-api після виконання пайплайну MASTER-Build-<nameRegistry>.

  • Доступ до роута registry-soap-api залишається при вимкненні інтеграції з "Трембітою" у Control Plane.

Безпека

У релізі 1.9.5 було покращено декілька аспектів, що стосуються безпеки. Основні зміни включають:

  • Оновлення базових образів: оновлено базові образи до версій openjdk:11.0.16-jre-slim та maven:3.8.6-jdk-11-slim, що забезпечує покращення з безпеки.

  • Виправлення дефектів безпеки: виправлено ряд дефектів, що стосуються безпеки. Особлива увага була приділена розробці процесу збірки, зокрема вказівкам для користувачів — Build Process: Missing User Instruction.