Sandbox зменшує наслідки помилки
Permissions обмежують дозволені дії, а sandbox визначає середовище їх виконання. Пісочниця потрібна не лише для того, щоб заборонити небезпечну команду, а й для зменшення наслідків помилки.
Перед початком визначте дозволені paths і commands, заборонені системні або production-зони, мережеві доступи та тип даних, із якими можна працювати.
| Рівень ізоляції | Коли доречний | Що не вирішує |
|---|---|---|
| Окрема гілка | Малі зміни та обовʼязковий review | Не ізолює локальне оточення |
| Git worktree | Великі або експериментальні зміни | Не ізолює env, порти й локальні бази |
| Контейнер | Залежності, runtime і тестові сервіси | Не є повною VM-межею |
| Віртуальна машина | Особливо небезпечні системні експерименти | Потребує більше ресурсів і часу |
Ізолюйте код, середовище й дані разом
- використовуйте test DB замість production;
- генеруйте synthetic records;
- передавайте fake credentials або лише необхідні env;
- вмикайте test profile конфігурації;
- не вважайте навіть санітизований production dump автоматично безпечним.
Практичний sandbox workflow
- Класифікуйте ризик задачі.
- Оберіть branch, worktree, container або VM.
- Винесіть роботу з основної копії.
- Підключіть тільки test DB і синтетичні дані.
- Обмежте команди, paths, мережу та secrets.
- Запустіть build, тести й перевірку побічних ефектів.
- Перегляньте diff і прийміть окреме людське рішення.
- Після роботи приберіть тимчасові контейнери, дані, worktree й непотрібні гілки.
Вибір ізоляції за сценарієм
| Сценарій | Рекомендована межа |
|---|---|
| Документація або мала правка | Окрема гілка |
| Значна зміна коду | Гілка або worktree |
| Оновлення залежностей і складний build | Worktree разом із контейнером |
| Міграція або масове оновлення | Worktree, test DB і synthetic data |
| Записуваний MCP або неперевірений tool | Container або VM |
| Масове видалення | Одноразове середовище з контрольним набором |
Sandbox не замінює інші controls
- dry-run показує план, але не всі побічні ефекти;
- backup допомагає відновитися, але не робить помилку безпечною;
- staging може бути спільним і недостатньо ізольованим;
- Git, тести, review і людський контроль залишаються обовʼязковими.
Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush