Cosign
Что такое Cosign?
CosignOpen-source CLI из проекта Sigstore для подписи, верификации и аттестации OCI-артефактов и другого ПО, поддерживающий рабочие процессы как с ключами, так и без них.
Cosign — это пользовательский инструмент стека Sigstore, созданный как ответ на атаки на цепочку поставок — от SolarWinds до захваченных npm-пакетов, — которые нацелены на конвейер сборки и распространения, а не на работающие системы. Он умеет подписывать контейнерные образы, OCI-артефакты, blob-файлы, SBOM и аттестации in-toto, сохраняя подписи рядом с артефактом в OCI-реестре.
Его определяющая инновация — подпись без ключей (keyless signing). Вместо того чтобы просить разработчиков хранить долгоживущий приватный ключ, Cosign запрашивает сертификат у Fulcio — удостоверяющего центра, который проверяет OIDC-идентичность (workflow GitHub Actions, пользователя Google или GitHub) и выдаёт сертификат, действительный примерно десять минут. Cosign подписывает в течение этого окна, а затем отбрасывает эфемерный приватный ключ; поскольку сертификаты столь короткоживущие, нет необходимости в списках отзыва или OCSP. Событие подписи записывается в Rekor — журнал прозрачности с добавлением только в конец и защитой от подделки, — так что любой может позже доказать, что было подписано, какой идентичностью и когда.
Поэтому политики верификации могут требовать, кто подписал, а не каким ключом подписано — например, «допускаются только образы, собранные нашим переиспользуемым workflow release.yml». Контроллеры допуска Kubernetes, такие как Kyverno, Connaisseur и OPA Gatekeeper, применяют эти проверки на этапе развёртывания, а созданные Cosign аттестации лежат в основе происхождения (provenance) SLSA, превращая иначе самопровозглашённые утверждения о сборке в криптографически проверяемые.
flowchart TD
A[CI-задание собирает образ] --> B[cosign sign --identity-token OIDC]
B --> C[Fulcio проверяет OIDC-идентичность<br/>выдаёт сертификат на ~10 минут]
C --> D[Cosign подписывает, отбрасывает ключ]
D --> E[Подпись + сертификат записаны в Rekor<br/>журнал прозрачности]
E --> F[Отправка образа + подписи в реестр]
F --> G[Контроллер допуска<br/>Kyverno / Connaisseur]
G --> H{Подписано доверенной<br/>идентичностью/workflow?}
H -->|Да| I[Развёртывание разрешено]
H -->|Нет| J[Заблокировано]● Примеры
- 01
cosign sign --identity-token $OIDC_TOKEN ghcr.io/org/app:v1.2
- 02
Политика Kyverno, проверяющая, что production-образ подписан определённым workflow GitHub Actions.
● Частые вопросы
Что такое Cosign?
Open-source CLI из проекта Sigstore для подписи, верификации и аттестации OCI-артефактов и другого ПО, поддерживающий рабочие процессы как с ключами, так и без них. Относится к категории Безопасность приложений в кибербезопасности.
Что означает Cosign?
Open-source CLI из проекта Sigstore для подписи, верификации и аттестации OCI-артефактов и другого ПО, поддерживающий рабочие процессы как с ключами, так и без них.
Как защититься от Cosign?
Защита от Cosign обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Cosign?
Распространённые альтернативные названия: cosign.