Как использовать Ansible Vault для хранения секретных ключей – CloudSavvy IT

При большинстве средств автоматизации учетные данные необходимы для аутентификации и использования защищенных ресурсов. Проблема всегда заключалась в том, как лучше хранить эти учетные данные надежно. анзибль это система автоматизации, которая обеспечивает предоставление программного обеспечения, управление конфигурацией и развертывание приложений.

Как и любой другой системе автоматизации, Ansible нужен безопасный способ хранения секретов. В случае Ansible эта система называется Ansible Vault, Ansible Vault предоставляет кроссплатформенное решение для безопасного хранения учетных данных.

Представляем Ansible Vault

Ansible Vault можно использовать для шифрования любого файла или самих переменных из книги воспроизведения. По умолчанию используется AES – шифрование на основе общего секретного ключа. Оба метода шифрования файлов и переменных имеют свои преимущества и недостатки.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Шифрование файлов

Чтобы создать новый зашифрованный файл с именем secrets.yml, просто используйте следующее ansible-vault команда.

ansible-vault create secrets.yml

После запроса пароля, ansible-vault Команда запустит редактор системных файлов по умолчанию, который при сохранении приведет к зашифрованному файлу.

Точно так же, чтобы зашифровать ранее незашифрованный файл, используйте следующее ansible-vault команда. Обратите внимание, что это использует encrypt параметр, а не create параметр.

ansible-vault encrypt secrets.yml

Недостатком использования шифрования файлов является удобочитаемость. Если вы откроете файл, то обнаружите, что без расшифровки невозможно расшифровать содержимое.

Переменное шифрование

В пределах книги игр можно использовать зашифрованную переменную, предварительно добавив зашифрованные данные к !vault тег. Запуск encrypt_string аргумент ansible_vault Команда приведет к зашифрованной строке, которую вы можете использовать в своих playbooks.

ansible-vault encrypt_string 'secret_data' --name 'my_secret'

После запроса пароля вы получите следующую зашифрованную строку.

my_secret: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          37636561366636643464376336303466613062633537323632306566653533383833366462366662
          6565353063303065303831323539656138653863353230620a653638643639333133306331336365
          62373737623337616130386137373461306535383538373162316263386165376131623631323434
          3866363862363335620a376466656164383032633338306162326639643635663936623939666238
          3161

Переменное шифрование отлично подходит для удобочитаемости, но при использовании этого метода жертвуется возможность использовать повторное использование командной строки.

Использование Ansible Vault на практике

Вы можете осознать, что использование Ansible Vault в производстве – это сложная задача. Чтобы эффективно использовать Ansible Vault, следующие методы облегчают этот процесс.

  • Непроверенная расшифровка
  • Несколько хранилищ
  • смена ключей

Непроверенная расшифровка

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

ansible-playbook --vault-password-file /path/vault-password-file secrets.yml

Это расшифрует любые включенные зашифрованные файлы или переменные, используя включенный пароль.

Очень важно не фиксировать ваш файл с открытым текстом пароля в вашей системе контроля версий. Аналогичным образом защитите этот файл только для пользователя или группы, которым необходим доступ к сохраненному паролю в файловой системе с использованием списков контроля доступа (ACL).

Несколько хранилищ

Несмотря на то, что удобно иметь одно хранилище со всеми зашифрованными секретами, лучшей практикой безопасности является разделение защищенных учетных данных на отдельные соответствующие хранилища. Примером этого может быть разделение среды производства и разработки. К счастью, Ansible Vault позволяет нам создавать несколько хранилищ и ссылок, которые хранят зашифрованные данные с помощью метки.

ansible-vault create --vault-id prod@prompt prod-secrets.yml

Приведенный выше код создаст prod хранилище и запросить пароль во время выполнения (как отмечено @prompt строка). Если у вас уже есть файл пароля, который вы хотели бы использовать, просто укажите путь к файлу.

ansible-vault create --vault-id prod@/path/prod-vault-password-file prod-secrets.yml

Допустим, мы хотим зашифровать то же самое my_secret переменная, но на этот раз хранить, что в нашем prod свод. Как и раньше, используя encrypt_string но с соответствующими vault-id позволяет хранить секрет в указанном месте.

ansible-vault encrypt_string --vault-id prod@/path/prod-vault-password-file 'secret_data' --name 'my_secret'

Вы заметите, что после AES256 строка, новый фрагмент текста, prod Показано. Это указывает на хранилище, в котором находится зашифрованный текст.

my_secret: !vault |
          $ANSIBLE_VAULT;1.1;AES256;prod
          37636561366636643464376336303466613062633537323632306566653533383833366462366662
          6565353063303065303831323539656138653863353230620a653638643639333133306331336365
          62373737623337616130386137373461306535383538373162316263386165376131623631323434
          3866363862363335620a376466656164383032633338306162326639643635663936623939666238
          3161

Что, если вы хотите включить несколько хранилищ в одну книгу? Вы можете легко перейти в несколько vault-id декларации о ansible-playbook командная строка.

ansible-playbook --vault-id dev@/path/dev-vault-password-file --vault-id prod@/path/prod-vault-password-file site.yml

смена ключей

Наконец, важно регулярно циклически повторять ваши пароли. Для файлов, которые зашифрованы, вы можете использовать командную строку ниже. Проходя в new-vault-id Параметр позволяет легко сменить пароль, которым зашифрованы секреты.

ansible-vault rekey --vault-id prod@/path/prod-vault-password-file-old --new-vault-id prod@/path/prod-vault-password-file-new site.yml

Как отмечено выше, повторное использование командной строки не работает для зашифрованных переменных. В этом случае вам нужно будет индивидуально перешифровать строки и заменить их в заданной книге.

Лучшие практики

Безопасность сложна, особенно когда речь идет об использовании секретов в системах автоматизации. Имея это в виду, ниже приведены несколько рекомендаций, которые следует использовать при использовании Ansible Vault. Хотя мы рассмотрели некоторые из них ранее, было бы целесообразно повторить эту практику.

  • Защищенные ACL и неверсированные файлы паролейФайлы паролей не должны храниться в системах контроля версий, таких как GIT. Кроме того, убедитесь, что только соответствующие пользователи могут получить доступ к файлу паролей.
  • Отдельные хранилищаОбычно используется много разных сред. Поэтому лучше всего разделить необходимые учетные данные на соответствующие хранилища.
  • Регулярное изменение пароля к файлу и переменнойВ случае повторного использования или утечки пароля лучше всего регулярно вводить новые пароли, чтобы использовать их для ограничения риска.

Заключение

Как и в случае любой системы автоматизации, очень важно, чтобы секреты были должным образом защищены и контролировались. Благодаря Ansible Vault этот процесс становится простым и гибким. Использование лучших практик, описанных выше, хранение и использование секретов в Ansible является безопасным и надежным.

Чтобы еще больше расширить Ansible Vault и поднять этот процесс на новый уровень, вы можете использовать сценарии, которые интегрируются в решения для управления паролями. Как вы можете видеть, Ansible Vault – отличный способ использовать секреты в игровых книгах Ansible.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *