Поиск по сайту:

Используйте Ansible Vault для защиты конфиденциальных данных Playbook

Учебное пособие по Ansible Vault | Шифрование контента с помощью Ansible Vault

В этой статье мы узнаем, что такое Ansible Vault и как использовать Ansible Vault для защиты конфиденциальных данных playbook путем шифрования данных в Linux.

Что такое Ansible Vault?

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

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

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

Сохранение этой информации видимой для всех вредно для безопасности, особенно если вы храните ее в общедоступных репозиториях.

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

Работа с командой Ansible Vault

По умолчанию ansible-vault поставляется с установкой ansible. Запустите терминал и выполните следующую команду, которая предоставит вам список параметров, которые вы можете использовать с командой ansible vault.

ansible-vault --help

Раздел справки Ansible

Шифрование файлов с помощью Ansible Vault

Если вы хотите создать новый файл, записать в него некоторые данные и зашифровать его, выполните следующую команду. Здесь "секретный ключ" — это имя файла.

ansible-vault create secretkey

Давайте разберемся, что происходит, когда вы запускаете эту команду.

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

Зашифруйте новый файл с помощью Ansible Vault

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

Просмотр зашифрованного файла

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

Вы также можете зашифровать существующие файлы.

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

echo "api_key: 'XUITZ89776XX'" > secretkey2 # Writing random data to file
ansible-vault encrypt secretkey2

Зашифровать существующий файл

Как изменить пароль Ansible Vault

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

ansible-vault rekey secretkey2

Изменить пароль хранилища Ansible

Как расшифровать зашифрованный файл

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

ansible-vault decrypt secretkey2

Расшифровать зашифрованный файл

Вы также можете просмотреть содержимое зашифрованного файла без расшифровки, выполнив следующую команду с "view" вместо "decrypt".

ansible-vault view secretkey2

Просмотр содержимого зашифрованного файла без его расшифровки

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

Изменить содержимое зашифрованного файла

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

ansible-vault edit secretkey2

Изменить содержимое зашифрованного файла

Преимущество команды «edit» заключается в том, что вам не нужно расшифровывать файл и шифровать его снова. Он откроет файл для редактирования, и как только вы закроете файл, он будет автоматически зашифрован.

Зашифрованный контент с помощью Ansible Playbook

До сих пор мы видели, как шифровать и расшифровывать данные на уровне файлов. Вы также можете зашифровать строку. Давайте возьмем пример.

У меня есть несколько переменных, используемых для удаленного подключения, а также пароль подключения. Чтобы зашифровать пароль, выполните следующую команду. Здесь я использую пароль как "пароль".

Запомните пароль хранилища, который понадобится для расшифровки строки.

ansible-vault encrypt_string "password"

В приведенной ниже книге я создал несколько переменных, имитирующих детали соединения, и "connect_pwd" будет хранить зашифрованные данные. Я печатаю переменную «connection_pwd», используя модуль отладки в задаче.

- name: "Test playbook for ansible vault"
  gather_facts: False
  hosts: local

  vars:
    remote_user: produser
    default_role: prodrole
    connect_pwd: << COPY PASTE THE ENCRYPTED PASSWORD HERE >>

  tasks:

    - name: print the password
      debug:
        msg: "{{ connect_pwd }}"

Используйте Ansible Vault в Playbook

При запуске плейбука вы должны использовать либо --ask-vault-password, либо --ask-vault-pass, который предложит вам ввести пароль хранилища для расшифровки строки.

ansible-playbook playbook.yml --ask-vault-pass

Запустите Playbook с помощью Ansible Vault

Если вы попытаетесь запустить playbook без флага --ask-vault-password или --ask-vault-pass, задача завершится ошибкой со следующей ошибкой.

fatal: [master.anslab.com]: FAILED! => {"msg": "Attempting to decrypt but no vault secrets found"}

Вы также можете сохранить пароль хранилища в файле и передать его в качестве аргумента --vault-password-file или --vault-pass-file.

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

echo "password" > .secretkey
chmod 600 .secretkey

Я создал файл с именем .secretkey и установил разрешение 600. Теперь этот файл можно использовать для расшифровки строки в моей книге игр.

ansible-playbook --vault-password-file .secretkey playbook.yml

Сохраните пароль хранилища в файле конфигурации Ansible

Вы также можете сохранить пароль хранилища в файле ansible.cfg. В этом случае вы можете запустить команду playbook без необходимости использования каких-либо дополнительных флагов хранилища.

vault_password_file = .secretkey

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

export ANSIBLE_VAULT_PASSWORD_FILE="./.secretkey"

Заключение

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

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

Ресурс:

  • Шифрование содержимого с помощью Ansible Vault

Изображение Джагрита Параджули с сайта Pixabay.

Статьи по данной тематике