Получить доступ

Как правильно работать с секретами в CI/CD и инфраструктуре?

MiddleCI/CD и Git
Ещё спрашивают так:
  • Разработчик закоммитил пароль в Git. Что делать?
Коротко

Секреты не хранят в коде, образах и логах. Источник — хранилище секретов (Vault, облачный менеджер, секреты CI), выдача — по минимальным правам и по возможности короткоживущая (OIDC вместо статических ключей облака). Утёкший в Git секрет считается скомпрометированным: сначала отозвать и заменить, потом уже чистить историю.

  • Удаление коммита не помогает: история уже у всех, в форках и кэшах
  • Сканеры секретов в pre-commit и CI (gitleaks, trufflehog)
  • CI маскирует секреты в логах, но echo в base64 или опечатка обходят маску

А ещё Секреты из CI не доступны сборкам из форков — иначе любой PR их украдёт

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Иерархия решений:

  1. Не иметь секрета: OIDC-федерация CI с облаком, workload identity в Kubernetes — временные токены вместо постоянных ключей.
  2. Короткоживущие динамические секреты (Vault выдаёт пароль к БД на час).
  3. Статические секреты в хранилище с ротацией и аудитом доступа.

Утечка в Git — порядок действий:

  1. Отозвать ключ, выпустить новый, обновить потребителей.
  2. Проверить журналы использования ключа.
  3. Почистить историю (git filter-repo) — для гигиены, а не защиты.
  4. Добавить сканер, чтобы не повторилось.

Частые ошибки: .env в репозитории, секреты в ARG Dockerfile, вывод переменных окружения в логи при отладке, один общий ключ на всё, self-hosted раннер с доступом к проду, на котором запускаются чужие PR.

Что хотят услышать

  • Хранилище и минимальные права, короткоживущие учётные данные.
  • Правильная реакция на утечку.
  • Профилактика: сканеры, маски, изоляция раннеров.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем