Рубрики
Uncategorized

От нуля, чтобы зашифрованные секреты за 2 минуты с SOP и GPG

Вы, вероятно, слышали о Mozilla / SOP, но даже если Readme удивительно подробно, от царапин … Теги с DevOps, безопасность.

Вы, наверное, слышали о 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.yaml

File 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»