Электронная подпись файлов и артефактов с помощью утилиты Cosign
В сервисе Key Management Service можно использовать ключевые пары электронной подписи, созданные с помощью утилиты Cosign
Перед началом работы
-
Установите специальную сборку Cosign для вашей операционной системы:
-
Получите IAM-токен и сохраните его в переменную среды
$YC_IAM_TOKEN
:BashPowerShellexport YC_IAM_TOKEN=$(yc iam create-token)
$env:YC_IAM_TOKEN = $(yc iam create-token)
Подпишите локальный файл
-
Создайте и сохраните в KMS ключевую пару электронной подписи:
cosign generate-key-pair \ --kms yckms:///folder/<идентификатор_каталога>/keyname/<имя_ключевой_пары>
Где:
<идентификатор_каталога>
— идентификатор каталога, в котором будет сохранена создаваемая ключевая пара.<имя_ключевой_пары>
— имя создаваемой ключевой пары подписи.
Результат:
client.go:183: Using IAM Token from 'YC_IAM_TOKEN' environment variable as credentials client.go:310: generated yckms KEY_ID: 'abj15qhhh98d********' Public key written to cosign.pub
Утилита вернет идентификатор созданной ключевой пары подписи и сохранит открытый ключ подписи в локальный файл. Сохраните идентификатор ключевой пары, он понадобится вам на следующих шагах.
Идентификатор ключевой пары подписи всегда можно получить в консоли управления
или с помощью команды CLI. -
Подпишите локальный файл:
cosign sign-blob \ --key yckms:///<идентификатор_ключевой_пары> \ --tlog-upload=false \ <путь_к_файлу>
Где:
<идентификатор_ключевой_пары>
— идентификатор ключевой пары подписи, полученный на предыдущем шаге.<путь_к_файлу>
— путь к локальному файлу, который требуется подписать.
Результат:
Using payload from: <путь_к_файлу> client.go:183: Using IAM Token from 'YC_IAM_TOKEN' environment variable as credentials <значение_электронной_подписи>
Сохраните полученное значение электронной подписи. Оно понадобится вам для проверки подписи на следующем шаге.
Проверьте электронную подпись
Для проверки подписи выполните команду:
cosign verify-blob \
--key yckms:///<идентификатор_ключевой_пары> \
--insecure-ignore-tlog \
--signature "<значение_электронной_подписи>" \
<путь_к_файлу>
Где:
--key
— идентификатор ключевой пары подписи, полученный ранее.--signature
— значение электронной подписи, полученное на предыдущем шаге.<путь_к_файлу>
— путь к локальному файлу, подпись которого требуется проверить.
Результат:
WARNING: Skipping tlog verification is an insecure practice that lacks of transparency and auditability verification for the blob.
client.go:183: Using IAM Token from 'YC_IAM_TOKEN' environment variable as credentials
Verified OK