awesome-everything EN
↑ Обратно к восхождению

Безопасность

Управление секретами: подъём по лестнице зрелости

Суть Практический проект — взять сервис с утёкшим захардкоженным секретом и подняться по лестнице зрелости к управляемой, сканируемой, короткоживущей схеме, доказывая каждую ступень фактами.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 240 min

Читать про утечки секретов — не то же самое, что устранять одну. Начните с сервиса, у которого живая креда закоммичена в git, отнеситесь к этому как к реальному взлому и поднимайтесь по лестнице зрелости юнита ступень за ступенью — ротируя, централизуя, сканируя и сокращая время жизни — с фактами на каждом шаге.

Цель

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

Проект
0 из 7
Цель

Взять небольшой сервис с захардкоженной кредой БД (и/или третьей стороны), закоммиченной в историю git, и привести его к управляемой, сканируемой, least-privilege схеме с короткоживущими секретами — относясь к существующему коммиту как к реальной утечке и доказывая каждую ступень лестницы фактами.

Требования
Критерии приёмки
  • До/после утечки: секрет виден в истории git в начале и отсутствует в истории, а креда ротирована (старое значение доказуемо отвергается) в конце.
  • Приложение аутентифицируется секретом, взятым из manager в рантайме, с показанной записью аудит-лога, называющей читателя — никакого секрета в репозитории, образе или отслеживаемом файле.
  • Сканер блокирует повторно внесённый тестовый секрет на этапе коммита (вставьте вывод хука), а CI-скан проходит на очищенной истории.
  • Динамическая креда доказуемо истекает: зафиксированная сессия, работающая внутри TTL и отвергаемая после, плюс один абзац, сопоставляющий каждый шаг со ступенью лестницы зрелости и объясняющий, почему он там.
Senior-стретч
  • Добавьте envelope encryption для at-rest конфиг-блоба: зашифруйте локально data key, выданным KMS, храните только обёрнутый data key и покажите, что расшифровка работает, при этом KMS никогда не видит payload.
  • Подключите автоматическую ротацию одного статического секрета (управляемая manager-ом задача/лямбда ротации) и докажите, что приложение подхватывает новое значение без простоя.
  • Напишите одностраничный runbook инцидента: обнаружить утёкший ключ, сначала ротировать, проверить аудит/биллинг провайдера, вычистить историю, отсканировать и проверить — с точными командами для вашего стека.
  • Добавьте CI-гейт, который роняет сборку, если какой-либо сервис всё ещё читает долгоживущий статический секрет там, где доступна динамическая креда, и задокументируйте политику.
Итог

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

Продолжить восхождение ↑Безопасность цепочки поставок: твоя реальная поверхность атаки — это зависимости
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.