Перейти к содержанию

Cosign: проверять подпись образа перед деплоем

Безопасность · Supply chain
Не изучено

Добавлено 2026-10-29.

Проблема

Тег образа можно перезаписать. В марте 2026 года именно так подменили теги trivy-action: имя прежнее, содержимое — вредоносное.

Решение

Подписывать свои образы при сборке и проверять подпись перед деплоем. Проверка имеет смысл только с ожиданием: известный публичный ключ или ожидаемые identity и OIDC issuer для keyless-подписи. Наличие «какой-то подписи» ничего не доказывает.

Пример

Подпись ключом (ключ — в защищённой переменной CI, публичная часть — в репозитории):

cosign generate-key-pair
cosign sign --key cosign.key registry.example.ru/app@sha256:<digest>
cosign verify --key cosign.pub registry.example.ru/app@sha256:<digest>

Проверка чужого образа по ожидаемой identity:

cosign verify "$IMAGE" \
  --certificate-identity="$IDENTITY" \
  --certificate-oidc-issuer="$OIDC_ISSUER"

LiteLLM, например, подписывает свои образы в GHCR и публикует команду проверки с ключом, закреплённым по коммиту, — см. карточку LiteLLM.

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

Для образов, которые попадают в прод, и для сторонних образов с доступом к секретам.

Источник

Как применить у себя

  1. Выбрать один публикуемый образ и способ подписи: ключ или keyless.
  2. Подписывать по digest, а не по тегу.
  3. Проверить, что cosign verify проходит для своего образа и падает для неподписанного или с другой identity.
  4. Отметить «Изучено», когда проверка стала шагом деплоя.