К основному контенту

💽 Шпаргалка Ansible Vault / Справочное руководство

Как зашифровать конфиденциальные данные с помощью Ansible Vault ?

Как защитить Ansible Playbook с Vault ?

Как использовать Ansible Vault ?

Это руководство было сделано в качестве справочного руководства/шпаргалки для энтузиастов Ansible, использующих Vault, чтобы обеспечить шифрование и защиту данных при работе с Ansible.

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

С большим внедрением возникает проблема безопасности.

Чтобы сохранить вашу конфиденциальную информацию, такую как пароли или секретные ключи, вам нужен Vault.

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

Ansible является обязательным требованием для этого руководства.

Убедитесь, что Ansible установлен в вашей системе и предоставляет инструмент командной строки ansible-vault, который мы будем использовать во всем этом руководстве.

Прежде чем начать, установите редактор по умолчанию для Ansible Vault.

--- Для Bash---$ echo "export EDITOR=vim" >> ~/.bashrc$ source ~/.bashrc--- Для Zsh ---$ echo "export EDITOR=vim" >> ~/.zshrc$ source ~/.zshrc
Замените vim вашим любимым редактором.

Шаг 1: Установите Ansible/Ansible Vault

Самый простой способ установить Ansible в Linux и большинстве систем Unix — через менеджер пакетов Ansible — pip.

Установить pip:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.pypython get-pip.py --user
После того, как pip установлен, используйте его для установки Ansible.
pip install --user ansible

Шаг 2: Использование Ansible Vault

В этом разделе мы увидим много примеров использования Ansible Vault.

Команда ansible-vault используется для управления зашифрованным содержимым в Ansible.

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

$ ansible-vault create create_users.yml

Вам будет предложено ввести и подтвердить безопасный пароль:

New Vault password: Confirm New Vault password:
Ansible откроет окно редактирования для ввода желаемого содержимого.

Пример 2: зашифровать существующий файл

Для существующих файлов используйте команду ansible-vault encrypt, чтобы установить пароль.

$ echo "SecurePassword" > passwords.txt$ ansible-vault encrypt passwords.txtNew Vault password: Confirm New Vault password: Encryption successful
Это заменит незашифрованный файл зашифрованным.

Пример 3: Редактировать зашифрованный файл

Для редактирования зашифрованного файла используйте команду ansible-vault edit.
$ ansible-vault edit passwords.yml
Это попросит вас ввести пароль для файла.
Vault password:

Пример 4: обновить пароль шифрования

Вы всегда можете обновить пароль шифрования с помощью команды ansible-vault rekey.

$ ansible-vault rekey create_users.ymlVault password: New Vault password: Confirm New Vault password: Rekey successful
Введите старый пароль и новый пароль для установки при появлении запроса. После обновления файл будет доступен с использованием нового пароля.

Пример 5: просмотр Ansible зашифрованного файла

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

Для этого вы будете использовать команду ansible-vault view.

$ ansible-vault view create_users.yml

Перед отображением содержимого вам необходимо ввести пароль файла.

Vault password:Secret information

Пример 6: Расшифровать зашифрованные файлы Vault

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

$ ansible-vault decrypt myfile.yml

Укажите пароль для шифрования файла.

Vault password:Decryption successful
Вы сможете увидеть фактическое содержимое файла после расшифровки.

Пример 7. Выполнение Ansible с файлами, зашифрованными в хранилище

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

Команды ansible и ansible-playbook могут расшифровывать файлы, защищенные хранилищем, если указан правильный пароль.

Использование пароля

Для выполнения playbook передайте флаг —ask-vault-pass.

$ ansible-playbook --ask-vault-pass .yaml

Для Ansible версии моложе или 2,4, вы можете использовать флаг –vault-id @prompt.

Смотрите пример ниже.

$ ansible-playbook --ask-vault-pass -i hosts osp-pre.yml Vault password: PLAY [Run presetup on OSP nodes] ******************************************************************************************************************TASK [Gathering Facts] ****************************************************************************************************************************...................................................................................

или

$ ansible-playbook -i hosts osp-pre.yml --vault-id @promptVault password (default): 

Использование файла паролей

Если вы хотите избежать интерактивного запроса пароля во время выполнения playbook, рассмотрите возможность использования Ansible Vault с файлом паролей.

Создать файл паролей.

$ echo 'MyStrongVaulPassword' > .ansible_vault_pass
Для парней, использующих системы контроля версий, такие как git, рассмотрите возможность добавления файла .ansible_vault_pass в список игнорируемых файлов.
$ echo '.ansible_vault_pass' >> .gitignore
Теперь используйте файл пароля при запуске команды ansible или ansible-playbook.
$ ansible --vault-password-file=.ansible_vault_pass ...$ ansible-playbook --vault-password-file=.ansible_vault_pass ....

Пример:

$ ansible-playbook --vault-password-file=.ansible_vault_pass -i hosts osp-pre.yml PLAY [Run presetup on OSP nodes] ******************************************************************************************************************TASK [Gathering Facts] ****************************************************************************************************************************

Как показано выше, нет запроса на ввод файла пароля.

Установите переменную среды

ANSIBLE_VAULT_PASSWORD_FILE

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

Это достигается путем установки переменной среды ANSIBLE_VAULT_PASSWORD_FILE с путем к файлу пароля:

export ANSIBLE_VAULT_PASSWORD_FILE=./.ansible_vault_pass
Чтобы сохранить конфигурацию, установите ее в локальном файле ansible.cfg.
$ vim ansible.cfg[defaults]........vault_password_file = ./.ansible_vault_pass
Ansible будет использовать пароль конфигурации для всех операций шифрования и создания.

Пример 8. Шифрование только чувствительных переменных

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

Создать файл зашифрованных переменных.

$ vim vars/vault.ymlvault_db_pass: MyStrongPassword$ ansible-vault encrypt vars/vault.ymlNew Vault password: Confirm New Vault password: Encryption successful

Подтвердите, что это все зашифровано.

$ cat vars/vault.yml $ANSIBLE_VAULT;1.1;AES256623839613538323332633563333564656336356337313930393038346238326261626132353439306238663730366237616639326233393361626639616136300a393665326434633438613436316630616562616161323664366464343938336130643265313466316666306165356635353530386661353732333338313739340a656434633336666662393161393663303662616264643364313630383163306437633230383961613163396630373536326264626262333638363464616562383930356235336531353930326133656165326130303661303965316464306330
Затем мы определим другие незашифрованные переменные и ссылку, зашифрованные в переменных хранилища.
$ vim vars/plain.ymldb_user: computingforgeeksdb_port: 3306db_pass: "{{ vault_db_pass }}"

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

Создать файл Playbook.

 $ vim vault.yml ---- name: Create usershosts: localhosttasks:- name: Include varsinclude_vars:dir: vars- name: Generate dummy variables datablockinfile:path: /tmp/vaultblock:Database user: "{{ db_user }}"Database Port: "{{ db_port }}"Database Password: "{{ db_pass }}"

Запустим плейбук:

$ ansible-playbook --connection=local vault.yml --ask-vault-passVault password: PLAY [Create users] *******************************************************************************************************************************TASK [Gathering Facts] ****************************************************************************************************************************ok: [localhost]TASK [Include vars] *******************************************************************************************************************************ok: [localhost]TASK [Generate dummy variables data] **************************************************************************************************************changed: [localhost]PLAY RECAP ****************************************************************************************************************************************localhost: ok=3changed=1unreachable=0fa

Давайте проверим содержимое созданного файла.

$ cat /tmp/vault# BEGIN ANSIBLE MANAGED BLOCKDatabase user: "computingforgeeks"Database Port: "3306"Database Password: "MyStrongPassword"# END ANSIBLE MANAGED BLOCK

Заключение

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

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…