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.
Когда применять
Для образов, которые попадают в прод, и для сторонних образов с доступом к секретам.
Источник
Как применить у себя
- Выбрать один публикуемый образ и способ подписи: ключ или keyless.
- Подписывать по digest, а не по тегу.
- Проверить, что
cosign verifyпроходит для своего образа и падает для неподписанного или с другой identity. - Отметить «Изучено», когда проверка стала шагом деплоя.