Блог "Дети ОИТа"
/поиск

Чек-лист безопасного деплоя: от CI/CD до production

Чек-лист безопасного деплоя: от CI/CD до production

Введение

Безопасность деплоя — это не отдельный этап, а сквозная дисциплина: от написания кода до выкатки в production. Данный чек-лист объединяет практики для CI/CD, контейнеров, секретов и observability. Подходит для Linux/Windows-окружений, Kubernetes и bare metal.

1. Репозиторий и CI/CD

  • Подписанные коммиты (GPG/SSH) и обязательные ревью (2+ аппрува).
  • Защищённые ветки: main/master защищены, force-push запрещён.
  • Секреты только в CI Secrets (не в коде), ротация по расписанию.
  • Кэш билдов изолирован и подписан; BuildKit/Buildx с sbom.
  • Сканирование зависимостей (SCA): Trivy/Grype/Dependabot в каждом PR.
  • Статический анализ кода: SonarQube/CodeQL, блокировка при критах.
  • Проверка IaC: Checkov/Terrascan для Terraform/Ansible/Kubernetes.

2. Контейнеры и образы

  • Минимальные базовые образы (distroless/alpine), non-root USER.
  • SBOM и подписи образов (cosign/sigstore), verify в деплое.
  • Отсутствие секретов в слоях (docker history чист, .dockerignore).
  • Fixed digest-теги, не latest; immutability.
  • Read-only root filesystem, drop capabilities, seccomp/apparmor профили.
  • Health-check и graceful shutdown настроены.

3. Секреты и конфигурация

  • Внешнее хранилище: HashiCorp Vault, SOPS+KMS, cloud secret manager.
  • Короткоживущие токены (OIDC для CI → cloud), без долгоживущих ключей.
  • No_log в Ansible, маскирование в CI, запрет echo секретов.
  • Разделение env по средам, строгие префиксы и RBAC.

4. Инфраструктура и runtime

  • NetworkPolicy / firewall: deny by default, explicit allow.
  • mTLS внутри mesh, короткие TTL сертификатов.
  • Ограничения ресурсов, QoS, PDB в Kubernetes.
  • auditd / syslog централизованы, неизменяемое хранилище.
  • SELinux/AppArmor включены и профилированы.

5. Observability и отклик

  • Метрики деплоя: длительность, откаты, failure rate.
  • Трассировка (OpenTelemetry) сквозная: от CI до runtime.
  • Алёрты на аномалии: рост ошибок 5xx, latency, auth failures.
  • Runbooks привязаны к алёртам, контакты актуальны.
  • Postmortem шаблон заведён, blameless culture.

6. Откат и resilience

  • Стратегия деплоя: blue/green или canary с автоматическим stop при деградации.
  • Health-gate на каждом шаге, таймауты консервативны.
  • Базы: миграции версионированы, downtime-free по возможности.
  • Backups проверены восстановлением (не только наличие).

7. Комплаенс и аудит

  • Логирование доступа к секретам, неизменяемый audit.
  • Карта данных (data flow) и классификация.
  • Обновление компонентов по CVE: SLA на критические.
  • Периодические пентесты и сканирование поверхности.

8. Windows-окружения (дополнительно)

  • MSI/EXE подписи Authenticode, AppLocker политики.
  • Windows Defender Application Control (WDAC) enabled.
  • Secrets в Windows LAPS, Azure Key Vault, DPAPI.
  • PowerShell Constrained Language Mode, Script Block Logging.
  • Windows Event Forwarding централизован.

Заключение

Чек-лист — это минимум. Внедрите его в CI как обязательные гейты и дополните под ваш стек. Дисциплина секретов, immutability и наблюдаемость — три кита безопасного деплоя.


Ключевые слова: security, devops, ci-cd, containers, kubernetes, vault, sops, observability, best-practices, windows