Вы, наверное, слышали о Mozilla/SOP , но даже если Readme удивительно подробно, пример с нуля всегда приятно иметь.
SOP , в двух словах, мостит разрыв между различными услугами управления ключами (PGP, AWS KMS, GCP KMS, Vault Key Azure), и вы. Этот пост будет пытаться заставить вас на ноги как можно быстрее, в 3 простых шагах: от « Я понятия не имею, что делать с моими руками » — « » Ни в коем случае это так просто! «.
Установите зависимости:
$ brew install sops gnupg
И запустите эти команды 3-ish, чтобы убедить себя:
# Clone the example repository $ git clone https://github.com/ervinb/sops-gpg-example.git $ cd sops-gpg-example # Import the encryption key ## The path is Keybase specific and it will work on any platform - no need to use your local filesystem path $ gpg --import <(keybase fs read /keybase/team/sopsgpgexample/pgp/key.asc) ## Or if you don't have Keybase set up yet $ gpg --import <(curl -L https://gist.githubusercontent.com/ervinb/288c44a45cf2614a0684bea333b3aa36/raw/sops-gpg-example.asc) # Decrypt and open the file $ sops secrets/mysecrets.dev.enc.yaml
Ваше повседневное взаимодействие с этим было бы только последней строкой.
GPG --import Должен быть выполнен только один раз, после чего ключ будет частью локального брелочного бренда (сохраняется также перезагрузки). Это буквально все, что есть к нему, после последующей следующей ниже шагов.
Сделай сам
Запустите секундомер — у нас есть 2 минуты.
- Генерировать ключ PGP
$ gpg --batch --generate-key <
Ключ создан без парольной фразы из-за % без защиты вариант. В противном случае A Фраза лома: потребуется.
- Создайте файл конфигурации SOP с отпечатками пальцев клавиш. Это ✨ Magic ✨ ингредиент, который делает бортовое настолько без трения.
$ gpg --list-keys
pub rsa2048 2020-12-06 [SC]
7E6DC556C66C43D928A95EA3715A56B718EAF0B6
uid [ultimate] Foo Bar
sub rsa2048 2020-12-06 [E]
$ cat .sops.yaml
creation_rules:
- path_regex: secrets/.*\.dev\.enc\.yaml$
pgp: 7E6DC556C66C43D928A95EA3715A56B718EAF0B6
Это также идеально, если вы хотите больше контроля над секретами, например, используя разные клавиши для разных сред. Например Секреты/*. Dev.enc.yaml может использовать один ключ, а Секреты/*. prod.enc.yaml Еще один. Подробнее об этом здесь Отказ
- Использовать
SOPредактировать и создать новые секреты
$ sops secrets/mysecrets.dev.enc.yaml
Тогда это просто вопрос распространения ключей к нужным людям и/или окружающей среде.
Который приводит нас к KeyBase.
Примечание для пользователей Linux
Я обнаружил, что как на Fedora и Ubuntu, по какой-то причине, создавая новый файл с SOP бросает следующую загадочную ошибку:
$ sops secrets/new.dev.enc.yamlFile has not changed, exiting.
Решение — сначала создать файл и шифровать его впоследствии впоследствии:
$ vi secrets/new.dev.enc.yaml $ sops -i -e secrets/new.dev.enc.yaml
Распространение ключа к друзьям и семье
Чтобы извлечь ключ PGP из вашего локального брелока, используйте:
$ gpg --list-keys
-------------------------------
pub rsa2048 2020-12-06 [SC]
7E6DC556C66C43D928A95EA3715A56B718EAF0B6
uid [ultimate] Foo Bar
sub rsa2048 2020-12-06 [E]
$ gpg --armor --export-secret-keys 7E6DC556C66C43D928A95EA3715A56B718EAF0B6 > key.asc
--Armor Делает это так, чтобы вывод был отформатирован ASCII ( .asc ), а не в двоичном (по умолчанию).
Один из самых беспрепятственных способов распространения ключей и других чувствительных файлов является Keybase. Он имеет низкий барьер входа, и вы можете контролировать гранулярность доступа с «командами». Это также хорошо интегрируется с файловой системой.
- Установите Keybase
$ brew install keybase
- Завести аккаунт
- Храните секретный ключ под папкой команды
После этого вы захватите универсальный путь и импортируйте ключ в куда угодно с GPG установлен.
Используйте его в ваших приложениях
Чтобы использовать дешифрованные значения в вашем приложении, вы можете просто добавить строку в сценарии настроек для запуска:
sops -d secrets/mysecret.dev.enc.yaml > configuration.yaml
(Обязательно добавьте дешифрованные файлы на .gitignore )
Для проектов Terraform используют Террафор-SOP И если вы в TerrageRunt, У него есть встроенный sops_decrypt_file функция.
Вы будете работать SOP Только для создания или редактирования секретов, в противном случае он будет невидимым (и невероятно).
Оригинал: «https://dev.to/ervinb/from-zero-to-encyrpted-secrets-in-2-minutes-with-sops-and-gpg-2l9a»