Керування розкладом та часом зберігання резервних копій реєстру
Загальний опис
В поточній версії Платформи реєстрів не передбачено процесу керування налаштуваннями підсистеми бекапування реєстрів. Для впровадження такої функціональності пропонується поліпшення інтерфейсу адмін-консолі, використовуючи яку адміністратор реєстру може налаштовувати розклад та час зберігання резервних копій реєстру.
Функціональні сценарії
-
Введення розкладу резервного копіювання через адмін-консоль
-
Налаштування часу зберігання резервних копій через адмін-консоль
Загальні принципи та положення
-
Введення розкладу резервного копіювання в unix-cron форматі задається адміністратором
-
Налаштування часу зберігання резервних копій вказується в днях адміністратором та встановлюється в годинах для системи бекапування
-
Налаштування розкладу резервного копіювання та часу зберігання резервних копій не є обовʼязковим при створенні реєстру
-
При закінченні строку зберігання система бекапування видаляє застарілі резервні копії
-
Введений розклад повинен відповідати unix-cron формату та валідуватись адмін-консоллю
-
Час зберігання резервних копій повинен бути більше або дорівнювати одиниці, бути цілим числом та не містити спеціальних символів
-
Автоматичне створення резервних копій можна вимкнути або ввімнути за допомогою перемикача
-
При введені розкладу резервного копіювання адмін-консоль повинна показати коли відбудуться наступні три запуски резервного копіювання
-
При оновленні реєстру на нову версію, налаштування розкладу резервних копій та часу зберігання резервних копій повинно залишитись незмінним
-
За замовчуванням налаштування автоматичних резервних копій вимкнено для нових реєстрів
-
Адмін-консоль повинна показувати дату останньої успішної резервної копії та термін її видалення
-
За замовчуванням тайм-зона
Europe/Kiev
встановлюється уvalues.yaml
та на рівні поди з Jenkins, як змінна середовища -
При вимкнені резервного копіювання існуючі резервні копії не видаляються
-
Адмін-консоль повинна відображати заданий часовий пояс в
values.yaml
при налаштуванні розкладу резервного копіювання.
Поточний технічний дизайн
В поточній версії платформи резервне копіювання реєстрів доступне тільки при ручному запуску відповідної джоби. Налаштування часу зберігання резервних копій не передбачено.
Технічний дизайн рішення
На даній діаграмі зображено залучені для реалізації вимог сервіси та взаємодію між ними. Додатково зображено важливі особливості, які необхідно брати до уваги в рамках реалізації.
Розклад резервних копій та час зберігання резервних копій передаються в values.yaml
global:
timeZone: Europe/Kiev
.....
registryBackup:
enabled: true
schedule: "30 19 * * *"
expiresInDays: 3
та в анотацію registry-parameters/values
codebase ресурсу реєстру.
Оператор повинен зреагувати на зміну в codebase CR та тригернути job provisioner, який перестворить Create-registry-backup
джобу з новими параметрами. Приклад налаштування розкладу в Jenkins:
30 19 * * *
Інтерфейс керування
Приклад заповнення параметрів резервного копіювання. Якщо розклад заповнений коректно, то показуємо наступні дати виконання.
Розгорніть, щоб побачити більше мокапів
-
Початковий стан. Резервне копіювання вимкнено:
-
Попередні резервні копії існують в системі. Виводимо дату створення копії та кількість днів до її видалення:
Високорівневий план розробки
План розробки
-
Розширення функционалу codebase оператора тригером jenkins job provisioner після оновлення codebase CR
-
Розширення UI функціоналу адмін-консолі по введенню / збереженню налаштувань розкладу резервних копій та часу їх зберігання
-
Розробка groovy-функцій в jenkins job provisioner по оновленню параметрів в
Create-registry-backup
job.
Міграція даних при оновленні реєстру
-
Під час оновлення реєстру на нову версію налаштування розкладу бекапів поточні налаштування повинні залишитись незмінними.
-
Необхідно передбачити можливість вимкнення автоматичного бекапування реєстра.
Безпека
Бізнес Дані
Категорія Даних |
Опис |
Конфіденційність |
Цілісність |
Доступність |
Технічні дані що містять відкриту інформацію |
Налаштування системи, конфіги, параметри з не конфіденційними значеннями але зміна яких може негативно вплинути на атрибути системи |
Відсутня |
Висока |
Висока |
Механізми протидії ризикам безпеки та відповідність вимогам безпеки
Ризик |
Засоби контролю безпеки |
Реалізація |
Пріорітет |
Віддалене виконання команди (RCE). Значення expiresInDays без санітізації комітається в геріт з інтерфейсу адмін консолі. Під час запуску процедури резервного копіювання значення передається в скрипт backup-registry.sh як аргумент знову без санітізації що дає змогу виконати будь-яку системну команду на провіженері |
|
Частково враховано в початковому дизайні. Залишилось реалізувати механізм санітізації аргументів в скрипті backup-registry.sh |
Критичний |
Відмова в обслуговуванні через вичерпання обчислювальних ресурсів (DOS) шляхом задання розкладу виконання резервного копіювання кожну хвилину |
|
Не враховано в початковому дизайні |
Високий |
Ризик втрати даних при занадто малому терміну зберігання резервних копій |
|
Не враховано в початковому дизайні |
Високий |
Ризик втрати даних при відсутності увімкненого резервного копіювання за замовчуванням. (Secure by default) |
|
Не враховано в початковому дизайні |
Високий |
Відмова від авторства. Відсутність аудит логу і інформації хто займався конфігурацією резервного копіювання. |
|
Не враховано в початковому дизайні |
Середній |
Ризик витоку даних при використання зовнішнього простору домених імен |
|
Частково враховано в початковому дизайні. Деякі сервіси можуть використовувати зовнішні адреси. Потрібно перевести усі сервіси на комунікацію всередині приватної мережі |
Середній |
Вимоги з безпеки: Налаштування мережевих політик безпеки |
|
Враховано в початковому дизайні |
Середній |