Ответ
Приватный PGP-ключ — это критически важный актив, особенно в DevOps для подписи релизов, пакетов или commit'ов. Я никогда не храню его в виде файла на диске или в репозитории.
Моя стратегия хранения:
-
Аппаратный токен (YubiKey, Nitrokey) — это золотой стандарт. Ключ генерируется или импортируется на устройство и никогда его не покидает. Подпись происходит внутри токена. Это защищает от компрометации даже при зараженной рабочей станции.
# Перенос ключа на YubiKey gpg --edit-key KEY_ID > keytocard > save -
Для автоматизированных процессов (CI/CD) приватный ключ не используется напрямую. Вместо этого:
- Для подписи контейнеров использую cosign с ключами, хранящимися в KMS (Key Management Service) облачного провайдера или HashiCorp Vault.
- Для подписи артефактов настраиваю выделенный, изолированный сервис (например, на базе HashiCorp Vault с Transit Secrets Engine), который выполняет криптографические операции по запросу от доверенного CI-пайплайна.
Если ключ все же должен храниться в файле (крайний случай), он помещается в зашифрованный контейнер (LUKS, VeraCrypt) с сильной парольной фразой, а сам файл дополнительно шифруется gpg --symmetric.