Skip to content

Пароль Ansible Vault в GPG

Рассмотрим метод повышения безопасности путем шифрования парольной фразы Ansible Vault с использованием GPG (GNU Privacy Guard). Этот метод особенно хорошо работает с аппаратными ключами безопасности, такими как Yubikey, обеспечивая дополнительный уровень защиты ваших секретных данных.

1. Генерация новой парольной фразы Vault

Для начала мы сгенерируем новую парольную фразу Vault и повторно зашифруем ключ для всех уже зашифрованных файлов Vault.

pwgen -n 71 -C | head -n1 | gpg --armor --recipient GPG_ID -e -o vault_passphrase.gpg

Просмотреть эту парольную фразу хранилища: gpg --batch --use-agent --decrypt vault_passphrase.gpg

Теперь, когда у вас есть новая парольная фраза, повторно введите все уже зашифрованные файлы Vault. grep -rl '^$$ANSIBLE_VAULT.*' . | xargs -t ansible-vault rekey

Эта команда запросит у вас старую и новую парольную фразу хранилища, а затем попытается повторно ввести ключи для всех файлов, которые начинаются со строки $$ANSIBLE_VAULT (обычно указывает на зашифрованный файл Ansible Vault).

2. Использование флага Ansible --vault-password-file

Следующее, что нам нужно сделать, это найти способ сделать расшифровку максимально безболезненной, и именно здесь на помощь приходит флаг Ansible --vault-password-file.

Одна из вещей, которую принимает аргумент --vault-password-file — это скрипт.

Создайте исполняемый файл с именем vault_pass.sh:

#!/bin/sh
VAULT_PW_FILENAME="vault/vault_passphrase.gpg"
gpg --quiet --batch --use-agent --decrypt $VAULT_PW_FILENAME

3. Проверка работоспособности

Теперь, когда все части на месте, вручную вызовите ansible-vault и убедитесь, что повторный ввод ключей работает должным образом.

ansible-vault --vault-password-file=vault_pass.sh view /path/to/an/encrypted/vault/file.yml

Вы также можете немного облегчить себе жизнь, добавив это в свой ansible.cfg, и в этом случае вы можете опустить аргумент --vault-password-file.

[defaults]
vault_password_file     = vault/vault_pass.sh