Logo Craft Homelab Docs Нейросети Хостинг Обучение Контакты
Аварийный переезд инфраструктуры: секреты, доступы и сборки без Vault, SSO и GitLab Трендовые github проекты в нашем телеграм канале. Подпишись →
16 октября 2026 г.

Break-glass режим: как восстановить сервисы и не устроить вторую аварию

Типичный сценарий крупного сбоя: внутренний мессенджер лёг вместе с облаком, команда собралась в группе во внешнем приложении. Выясняется, что Vault недоступен, а ключи для восстановления лежат в нём же. Кто-то предлагает скинуть токен в чат «и потом поменять». GitLab тоже лежит, поэтому фикс собирают на ноутбуке разработчика. Журналы остались в старом облаке.

Каждый шаг по отдельности выглядит разумно. В сумме сервис поднят, но никто не может сказать, кто получил админские права, из какого кода собран образ и в скольких резервных копиях телефонов теперь лежит пароль. Ниже — что подготовить заранее, чтобы аварийный режим имел границы, ответственных и срок действия.

Старой среде нельзя доверять по умолчанию

Пока причина аварии не установлена, параллельно держите две версии: технический отказ и инцидент безопасности. Свежий бэкап может содержать украденный ключ, вредоносное изменение или лишнюю учётную запись. Восстановленный IAM вернёт старые аккаунты и права, а уволенный сотрудник, удалённый из каталога, может остаться во временной группе.

Для каждого аварийного действия полезно ответить на пять вопросов:

  1. Кто запросил действие и как подтверждена его личность?
  2. Какой минимальный доступ ему нужен?
  3. Где останется след?
  4. Когда доступ перестанет работать?
  5. Что придётся проверить или заменить после восстановления?

Резервный канал связи выбирают до аварии

Внешний мессенджер живёт в другом контуре доверия: корпоративный админ не управляет устройствами, сроком хранения и экспортом истории, а имя с аватаркой ничего не доказывают. Удалённое сообщение с паролем остаётся в уведомлениях на заблокированном экране и в облачной копии телефона.

Минимальный набор для запасного канала:

  • два и более назначенных администратора и заранее утверждённый список участников;
  • MFA и второй способ подтверждения личности — звонок по известному номеру;
  • запрет на секреты и пользовательские данные, отдельные комнаты для координации и технических событий;
  • срок хранения и порядок выгрузки хронологии в постоянную систему.

Телефонная конференция подходит для срочных решений, но письменного следа не оставляет — нужен человек, который записывает решения со временем. Личные мессенджеры допустимы только как последний резерв и без секретов. Канал стоит проверять на учениях: могут ли все войти, если корпоративный каталог не работает.

Секреты, когда Vault недоступен

Ключи нужны для восстановления инфраструктуры, а достать их можно только из работающей инфраструктуры — классическая циклическая зависимость. Разрывают её заранее:

  • аварийные реквизиты хранятся вне основного хранилища и его облака;
  • для доступа нужны два уполномоченных человека;
  • выдаётся отдельный краткоживущий секрет с минимальными правами, использование пишется в независимый журнал;
  • процедура регулярно прогоняется без раскрытия боевых значений.

Для Vault это защищённая копия снапшота Raft, доли unseal/recovery-ключей у разных хранителей и описанный порядок запуска чистого кластера. Отдельно проверьте auto-unseal: если он завязан на облачный KMS, при отказе KMS копия данных Vault без ключа шифрования секреты не вернёт.

Если запасного хранилища нет, а простой уже идёт, наименее плохой вариант такой: создать новый секрет под одну операцию с коротким TTL, зашифровать его публичным ключом получателя, сверить отпечаток ключа голосом по известному номеру, передать только зашифрованный файл, записать выдачу и после операции отозвать секрет с проверкой журналов. Разрезать пароль пополам и отправить половинки в два чата бесполезно, если оба чата открыты на одном телефоне.

Правило на потом: любой секрет, покинувший штатный контур во время аварии, считается раскрытым и подлежит ротации.

SSO и IAM

Если облако, GitLab, VPN, DNS и хранилище секретов логинятся через один identity provider, его отказ запирает команду снаружи. На критичных системах нужны именованные локальные аварийные учётки: независимые от SSO, с длинным уникальным паролем в аварийном контуре и вторым фактором, который не привязан к тому же телефону или каталогу. Каждый вход должен генерировать заметный алерт во внешнем мониторинге, а после использования пароль меняется.

Общий аккаунт admin с паролем в сейфе даёт доступ, но лишает действия авторства. Если причиной могла быть компрометация IAM, после восстановления проверьте роли, MFA-методы, ключи приложений и доверенные интеграции, завершите старые сессии и замените привилегированные реквизиты.

Сборка без GitLab и CI/CD

Локальные клоны спасают историю, но ноутбук разработчика — сомнительная сборочная среда: незакоммиченные изменения, другие версии зависимостей, расширения IDE. Если собирать вне CI всё-таки приходится:

  • сравните клоны нескольких участников по веткам, тегам и SHA;
  • один человек готовит изменение, второй сверяет коммит и lock-файлы;
  • собирайте в чистом одноразовом окружении с записью всех команд;
  • считайте контрольную сумму и подписывайте артефакт аварийным ключом с ограниченным сроком;
  • после возврата GitLab прогоните изменение через обычное ревью и пересоберите штатным пайплайном.

Две опасные реакции: скачать «похожий» образ из публичного реестра вместо пересборки от закреплённой базы и снять фиксацию версий, чтобы сборка прошла. Помогает небольшой независимый репозиторий с аварийным набором — IaC, скрипты восстановления, манифесты зависимостей, — без боевых секретов.

Журналы и административный доступ

На случай потери основной системы наблюдения нужны локальная очередь логов с лимитом размера, внешний приёмник для ключевых событий, синхронизированное время на узлах и отдельная запись админских входов, сетевых изменений, выдачи секретов и переключения DNS. Пароли, токены и строки подключения в логи не пишутся. Включённый на всякий случай максимальный debug с полными заголовками запросов превращает диагностику в утечку.

Когда VPN недоступен, первым приходит желание открыть SSH или админку всему интернету — такой порт находят сканеры почти сразу, и он часто переживает сам инцидент. Заготовьте бастион, который поднимается из кода: allowlist адресов, вход по ключам, запись сессий, короткий срок жизни узла и правил. У любого широкого правила с момента создания есть владелец и техническое время автоудаления — заметка «почистить потом» эту роль не выполняет.

Что проверить перед возвратом трафика

Зелёный healthcheck означает, что приложение отвечает. Вместе с данными могли вернуться старые сессии, лишние администраторы и отозванный ключ подписи. Список проверок: версия приложения и базового образа, порядок миграций, аутентификация и восстановление пароля, авторизация на админских маршрутах, инвалидация сессий после смены ключей, TLS, CORS, CSRF, подписи входящих вебхуков, rate limit на логин и OTP, отключённый debug, исходящие соединения, целостность образов.

Проверки удобно заранее разложить на три уровня:

УровеньПримерРешение
Блокирующийадминка открыта наружу, обход авторизации, известный скомпрометированный ключтрафик не переключать
Временный рискнедоступен второстепенный внешний журнал, события пишутся локальнозапуск с владельцем риска и сроком исправления
После запускаполное сканирование зависимостей, оптимизация правилпо плану после стабилизации

Реестр исключений

Каждое временное решение записывается: что изменено, почему штатный путь невозможен, кто согласовал, кто устраняет, точное время окончания, какие секреты потом менять. Примеры сроков:

ИсключениеКомпенсирующая мераСрокПосле стабилизации
Бастион с публичным IPallowlist, ключи, запись входов6 часовудалить VM и правило, проверить логи
Аварийный облачный токенминимальные права, один владелец2 часаотозвать, проверить операции
Сборка вне CI/CDчистое окружение, второй проверяющийдо возврата GitLabревью и штатная пересборка
Локальные журналышифрование, лимит диска24 часазагрузить в SIEM, удалить копию

После аварии запускается отдельная кампания по ротации всех секретов, которые передавались нестандартно, вводились на личных устройствах или светились в истории терминала.

Учения

Сценарий для тренировки: внутренний чат, SSO и Vault считаются недоступными одновременно. Если команда при этом не может восстановиться без отправки главного пароля в мессенджер — система небезопасна. Если секрет защищён так, что его невозможно получить при отказе одной зоны, — она спроектирована плохо в другую сторону. Обе проблемы закрываются одним набором мер: независимые каналы, минимальные права, короткоживущие доступы, журналирование и регулярные прогоны процедуры.