Clonio CLI копіює базу даних із продакшн-середовища у розробку, CI або тести, автоматично замінюючи конфіденційні дані. Інструмент генерує фейкові імена та імейли, маскує токени та перепризначає Primary Keys — дані залишаються цілісними та придатними для роботи, але більше не ідентифікують реальних людей.
- Поколонкова анонімізація за допомогою стратегій
fake,mask,hash,static,nullтаtemplate. - Key remapping — перепризначення Primary Keys із автоматичним оновленням Foreign Keys, що на них посилаються.
- Детекція PII — автоматичне виявлення чутливих колонок (Personally Identifiable Information), для яких не налаштовано трансформацію.
- Підписані звіти про аудит, які можна зберігати локально, в S3 або надсилати у Slack, Teams та на пошту.
- Гнучкість розгортання — Standalone Binary, PHAR-архів, Docker-образ або Composer dev-залежність.
Конфігурація зберігається у файлі .cloning.yaml. Оскільки він містить лише назви підключень, а не логіни та паролі, його безпечно додавати в Git разом із кодом вашого застосунку.
# Стратегії трансформації колонок
Для кожної колонки, яку потрібно змінити, ви визначаєте стратегію в YAML-файлі. Колонки, не вказані в конфігу, копіюються без змін. Доступні такі варіанти:
fake— генерація синтетичних значень через FakerPHP;mask— збереження кількох перших символів із маскуванням решти;hash— незворотне хешування (псевдонімізація, але не повна анонімізація);static— заміна на фіксований рядок;null— встановлення значенняNULL;template— комбінування довільного тексту з плейсхолдерами Faker;remapping— генерація нових Primary Keys зі збереженням зв’язків.
Приклад конфігурації для таблиці users:
version: "1"
connection: production
options:
faker_locale: de_DE
tables:
users:
rows:
strategy: last
limit: 5000
sort_by: created_at
columns:
email:
strategy: fake
faker_method: safeEmail
first_name:
strategy: fake
faker_method: firstName
phone:
strategy: mask
internal_notes:
strategy: "null"
Clonio попереджає: згідно з нормами GDPR, результат роботи hash усе ще вважається персональними даними. Якщо потрібно виключити будь-яку можливість ідентифікації, варто обрати fake або null.
# Remapping ключів у зв’язаних таблицях
Копіювання рядків у цільову базу може спричинити конфлікти Primary Keys. Стратегія remapping замінює ключі новими значеннями та синхронно оновлює Foreign Keys у залежних таблицях. Це гарантує цілісність даних після імпорту.
# Детекція PII-даних
Clonio автоматично знаходить колонки, що можуть містити персональні дані. Команда matchers:init створює базові шаблони, matchers:list показує активні правила, а matchers:check перевіряє таблиці на наявність нових колонок (як-от email чи tax_id), які розробники могли додати, забувши про анонімізацію.
# Аудит та логування
Кожен запуск створює підписаний звіт та структуровані логи. Команда cloning:verify-audit дозволяє перевірити цілісність цих логів — це критично важливо для підтвердження того, що дані з продакшну були належним чином анонімізовані перед потраплянням у середовище з нижчим рівнем доступу.
# Встановлення
Clonio доступний як Standalone Binary (для Linux x86_64/aarch64 та macOS Apple Silicon, PHP не потрібен), PHAR-архів для PHP 8.5+, Docker-образ (ghcr.io/clonio-dev/clonio:latest) або Composer-залежність:
composer require --dev clonio-dev/clonio-cli
Базовий робочий процес виглядає так: ініціалізація проєкту, додавання підключення до продакшну, генерація конфігурації на основі схеми бази та запуск процесу:
clonio init
clonio connection:add production --production
clonio cloning:dump --connection production
clonio cloning:run production.cloning.yaml --target ci
Вихідний код, документація та релізи доступні на GitHub.