Как правильно работать с секретами в CI/CD и инфраструктуре?
- Разработчик закоммитил пароль в Git. Что делать?
Секреты не хранят в коде, образах и логах. Источник — хранилище секретов (Vault, облачный менеджер, секреты CI), выдача — по минимальным правам и по возможности короткоживущая (OIDC вместо статических ключей облака). Утёкший в Git секрет считается скомпрометированным: сначала отозвать и заменить, потом уже чистить историю.
- Удаление коммита не помогает: история уже у всех, в форках и кэшах
- Сканеры секретов в pre-commit и CI (gitleaks, trufflehog)
- CI маскирует секреты в логах, но echo в base64 или опечатка обходят маску
А ещё Секреты из CI не доступны сборкам из форков — иначе любой PR их украдёт
Подробно
Иерархия решений:
- Не иметь секрета: OIDC-федерация CI с облаком, workload identity в Kubernetes — временные токены вместо постоянных ключей.
- Короткоживущие динамические секреты (Vault выдаёт пароль к БД на час).
- Статические секреты в хранилище с ротацией и аудитом доступа.
Утечка в Git — порядок действий:
- Отозвать ключ, выпустить новый, обновить потребителей.
- Проверить журналы использования ключа.
- Почистить историю (git filter-repo) — для гигиены, а не защиты.
- Добавить сканер, чтобы не повторилось.
Частые ошибки: .env в репозитории, секреты в ARG Dockerfile, вывод переменных окружения в логи при отладке, один общий ключ на всё, self-hosted раннер с доступом к проду, на котором запускаются чужие PR.
Что хотят услышать
- Хранилище и минимальные права, короткоживущие учётные данные.
- Правильная реакция на утечку.
- Профилактика: сканеры, маски, изоляция раннеров.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Утёкший в Git секрет достаточно удалить новым коммитом и почистить историю: после этого его никто не увидит и менять его не нужно
- ✗Секреты удобно хранить в переменных образа
- ✓Секреты из хранилища по минимальным правам, лучше короткоживущие; утёкший секрет сначала отзывают и заменяют
- ✗Секреты можно печатать в лог CI для отладки
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.