Cosign#
Cosign - утилита для подписи образов контейнеров.
Утилита поддерживает:
«бесключевую подпись», используя публичный Центр Сертификации Fulcio и публичный сервис Rekor (настройки по умолчанию);
подпись с использованием аппаратных и KMS-ключей;
подпись с помощью Cosign, сгенерированного зашифрованной парой частных/открытых ключей;
подпись и проверку образов контейнеров, сохранение подписи в OCI-совместимом реестре (OCI - Open Container Initiative);
приватную PKI-инфраструктуру.
Сценарий подписи образов#
Для подписи образов используется утилита Cosign и пара ключей: закрытый и открытый.
Сгенерируйте ключи:
./cosign generate-key-pairВывод:
# Enter password for private key: # Enter password for private key again: # Private key written to cosign.key # Public key written to cosign.pubПодпишите образ командой:
cosign sign --key cosign.key <IMAGE DIGEST>При выполнении команды в реестре образа будет загружена подпись.
Пример:
./cosign sign --tlog-upload=false --key cosign.key <path>/dapp-runc-2/runc@sha256:<hash> Enter password for private key: Pushing signature to: <path>/dapp-runc-2/runc
Сценарий проверки образов#
Для проверки образов выполните команду:
IMAGE_URI="dapp-runc-2/runc@sha256:<hash>"
./cosign verify --private-infrastructure --key cosign.pub $IMAGE_URI
Вывод будет следующим:
Verification for <path>/dapp-runc-2/runc@sha256:<hash>
The following checks were performed on each of these signatures:
- The cosign claims were validated
- The signatures were verified against the specified public key
[{"critical":{"identity":{"docker-reference":"<path>/dapp-runc-2/runc"},"image":{"docker-manifest-digest":"sha256:<hash>"},"type":"cosign container image signature"},"optional":null}]
В результате, если подпись, соответствующая открытому ключу, найдена, будет получен файл JSON с объектом подписи.