Класична модель «зупинимо систему вночі на 4 години для оновлення» прийнятна для невеликих внутрішніх систем. Для систем 24/7 — це втрата довіри і потенційні штрафи за порушення SLA. Стаття описує, як оновлювати UBD без простою, і коли це насправді можливо, а коли — ні.
Типи оновлень
| Тип | Зміна функціональності | Простой | Регуляторика |
|---|---|---|---|
| Security patch | Без зміни поведінки | Не потрібен (rolling) | Не вимагає повторної експертизи |
| Мінорна версія (1.2.3 → 1.2.4) | Bug fixes, мінорні покращення | Не потрібен (rolling) | Зазвичай не вимагає |
| Мажорна версія (1.x → 2.0) | Нові функції, зміна API | Можливий простой кілька хвилин | Може вимагати повторної експертизи функцій безпеки |
| Прикладна логіка | Нові моделі, зміна політик | Не потрібен у більшості випадків | Залежить від обсягу — модель загроз може потребувати оновлення |
Коли потрібна повторна експертиза
Експертиза захищеності прив'язана до конкретної версії системи на момент видачі висновку. Будь-яке оновлення формально вимагає оцінки впливу на захищеність.
Не потребує повторної експертизи:
- Виправлення помилок без зміни функцій безпеки.
- Покращення продуктивності без зміни алгоритмів.
- Косметичні зміни UI.
- Додавання нових прикладних об'єктів моделі (нові форми, нові таблиці) без зміни моделі прав.
Потребує повторної експертизи:
- Зміна алгоритмів криптографії.
- Зміна моделі авторизації (RBAC → ABAC, нові типи політик).
- Зміна формату WORM-журналу.
- Додавання нових каналів автентифікації.
- Зміна архітектури кластера (single → distributed).
Сіра зона (вимагає консультації з експертною організацією):
- Додавання нових інтеграцій (нові ЦСК, нові SSO-провайдери).
- Зміна СУБД (Oracle → MS SQL).
- Перехід у хмару.
Rolling deployment у кластері
Стандартний підхід для кластера UBD з 3+ нодами:
- Вивести 1 ноду з ротації load balancer (drain).
- Дочекатися, поки всі активні запити завершаться (graceful shutdown, 30-60 секунд).
- Оновити ноду.
- Запустити, health check'нути.
- Повернути у ротацію.
- Дочекатися стабілізації (5-10 хвилин — моніторинг помилок).
- Повторити для наступної ноди.
Для кластера з 5 нод і 10 хв на ноду — повне оновлення займає ~1 годину без простою. Користувачі помічають тільки якщо потрапили на ноду під час drain (рідко, при правильно налаштованому graceful shutdown — не помічають взагалі).
Blue-green deployment
Підхід для випадків, коли rolling не підходить (наприклад, несумісна зміна формату даних):
- «Зелений» (поточний) кластер працює на проді.
- «Синій» (новий) кластер розгортається паралельно, з новою версією.
- Дані синхронізуються у «синій» (для read-only — реальний час, для write — як підготовка).
- «Синій» тестується внутрішньо (smoke tests, не з користувачами).
- Load balancer переключається на «синій». Перехід — секунди.
- «Зелений» залишається у standby на 24-72 години для можливого rollback.
- Якщо все добре — «зелений» виводиться, через 1-2 тижні стає основою для наступного циклу.
Перевага: миттєвий rollback при проблемі (повертаємось на «зелений»). Недолік: подвійні ресурси на час deployment.
Канарковий випуск (canary)
Для функцій з невпевненістю — поступова розкатка:
- Нова версія розгортається на 1% нод.
- Моніторинг метрик: помилки, latency, скарги користувачів.
- Якщо все добре через 1-2 години — 5%.
- Потім 25%, 50%, 100%.
Підходить для функцій, які важко відтестувати в lab: специфіка реальних навантажень, інтеграцій, користувацьких патернів.
Відкат
План відкату — обов'язкова частина процедури оновлення. Перед запуском:
- Бекап БД на момент перед оновленням.
- Збережена попередня версія бінарних файлів і конфігурації.
- Документована послідовність дій для повернення.
- Чітка точка прийняття рішення «йдемо далі / відкочуємось» (наприклад, через 30 хвилин після завершення розгортання).
- Відповідальна особа з повноваженнями приймати рішення.
Тонкий момент: якщо нова версія міняла схему БД — відкат складніший. Іноді міграцію треба робити двома фазами: фаза 1 — додає нові колонки/таблиці (сумісно зі старою версією), фаза 2 — видаляє старі (вже після стабілізації нової версії).
Комунікація з користувачами
Навіть rolling deployment без простою — комунікується заздалегідь:
- Оголошення за 1-2 тижні з планованим часом.
- Повідомлення про початок і завершення.
- Можливі візуальні попередження у системі.
- Контакти support для проблем після оновлення.
Для систем КІІ і держсектору — додатково повідомлення регулятора, особливо якщо оновлення зачіпає функції безпеки.
Особливості air-gapped середовищ
Системи в air-gapped мережі (без виходу у інтернет) — окремий випадок:
- Файли оновлення передаються через контрольований канал (USB-носій з санітизацією).
- Підпис файлів оновлення обов'язково перевіряється перед запуском.
- Тестування — у ідентичній air-gapped тестовій мережі, не у lab з інтернетом.
- Rolling deployment — за тим самим алгоритмом, що у звичайних мережах.
- Регуляторні особливості: для систем з державною таємницею — узгодження кожного оновлення з СБУ.
UBD підтримує rolling updates у stateless кластері з мінімізацією розривів сесій. Сесії зберігаються поза вузлами кластера (у Redis або БД), тому наступні запити у штатних сценаріях переходять на доступний вузол без повторного входу. Graceful shutdown коректно завершує активні запити перед вимкненням вузла. Це покриває NIST 800-40 рекомендації щодо patch management у виробничих середовищах.
UnityBaseDefense — технічна довідка →