Ответ вслух Senior Безопасность цепочки поставки обновлено

Защищённый путь от коммита до прода

Вопрос

Интервьюер: «Как гарантировать, что в проде работает ровно тот код, который прошёл ревью, и ничего больше?»

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Цепочка доверия от ревью до кластера. Main защищён: мерж только после ревью и зелёного CI, файлы пайплайна под CODEOWNERS платформенной команды.

Что должно прозвучать в ответе

  • Защищённые ветки, обязательное ревью и CODEOWNERS, включая файлы пайплайна

  • Изолированная сборка: одноразовые раннеры, минимальные права, OIDC вместо ключей

  • Зафиксированные зависимости, actions и базовые образы, свой прокси-реестр

  • Provenance и подпись артефакта в CI: из какого коммита и каким пайплайном собран

  • Проверка подписи и происхождения при деплое admission-политикой

  • Запрет ручных изменений в проде, аудит

Что могут спросить следом

  • Как защититься от администратора CI, который может изменить пайплайн?
  • Что такое воспроизводимая сборка и зачем она?

Разбор

Образцовый ответ: «Цепочка доверия от ревью до кластера. Main защищён: мерж только после ревью и зелёного CI, файлы пайплайна под CODEOWNERS платформенной команды. Сборка на одноразовых раннерах, зависимости по lock-файлам через наш прокси-реестр, базовые образы и actions по digest и SHA. CI генерирует SBOM и provenance по SLSA и подписывает образ cosign в keyless-режиме, удостоверением выступает OIDC-токен пайплайна main нашего репозитория. В кластере Kyverno пропускает только образы из нашего реестра с подписью именно этого удостоверения. Ручной kubectl set image невозможен: права только у GitOps-агента. От злонамеренного админа CI защищает разделение ролей и журнал прозрачности: подпись не от того пайплайна не пройдёт проверку».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.