Image signing (Cosign)

Тема дорожной карты · Kubernetes

Подписание образов контейнеров — практика криптографического подтверждения происхождения и целостности OCI-образов перед их развёртыванием в кластерах Kubernetes, предотвращающая попадание изменённых или несанкционированных образов в production-нагрузки. Cosign (из проекта Sigstore) — стандартный инструмент подписания образов контейнеров: cosign sign --key cosign.key <image>@<digest> прикрепляет подпись к образу в OCI-реестре, а cosign verify --key cosign.pub <image> проверяет её; бесключевое подписание использует OIDC-токены и центр сертификации Fulcio для привязки подписей к идентичностям разработчиков без управления долгоживущими ключами. В Kubernetes политики подписания образов применяются на этапе admission с использованием движков политик — Kyverno или OPA/Gatekeeper, — которые вызывают cosign verify в рамках ClusterPolicy или ConstraintTemplate, блокирующих Pod'ы, ссылающиеся на неподписанные или непроверенные образы. Подписание образов контейнеров интегрируется с экосистемой SBOM (Software Bill of Materials) — Cosign также может прикреплять SBOM-документы и аттестации сканирования уязвимостей к образам через cosign attest — и является фундаментальным контролем безопасности цепочки поставок в K8s-средах.

Как это работает

Image signing (Cosign) в Kubernetes слоится через несколько контролей: RBAC (кто может делать что на каких ресурсах), Network Policies (какие pods могут общаться с какими), Pod Security Standards (ограничения privileged-операций), admission controllers (валидируют/мутируют ресурсы до persistence), underlying container runtime sandbox. Defence-in-depth: предполагайте, что любой single control будет обойдён, и проектируйте несколько слоёв.

Когда применять

Внедряйте Image signing (Cosign) с создания кластера, не retrofit-ом позже — добавление RBAC в permissive кластер ломает десятки нагрузок. Начните с restrictive defaults и давайте доступ по нужде (least-privilege); применяйте NetworkPolicies в default-deny режиме; включайте PSS на уровне namespace. Регулируемые отрасли (банки, медицина) требуют это с дня 1; consumer-приложения выигрывают от этого до первого production-инцидента.

Типичные ошибки

Security-ловушки: cluster-admin role выдан разработчикам (полная власть; одна плохая команда сносит prod); image pull из ненадёжных registries без верификации подписи; serviceaccount tokens auto-mount в каждом pod (network access к API = lateral movement); пропуск CIS Kubernetes Benchmark-аудитов. Регулярный pentest находит реальные проблемы до того, как их найдут атакующие.

Связанные понятия

Полезные ресурсы