Как безопасно использовать приватные ключи s sh в AWX? - PullRequest
0 голосов
/ 02 марта 2020

У меня проблема с хранением моего личного ключа sh в AWX, я знаю, что он зашифрован, но он не настолько безопасен, как мне бы хотелось.

Знаете ли вы безопасный способ использования sh закрытые ключи с AWX?

Теперь я использую учетные данные машины по умолчанию, а s sh зашифровывается AWX и сохраняется в postgres дБ. Было бы здорово вообще не хранить s sh в AWX, а передавать его только при необходимости (что-то вроде приглашения при запуске, если это невозможно)

1 Ответ

0 голосов
/ 03 марта 2020

В AWX можно вообще не хранить учетные данные s sh. Для этого вам придется внести некоторые коррективы. Вам не требуется подсказка при запуске. Помните, что в шаблонах заданий учетные данные s sh являются необязательными. Лучшее место для хранения учетных данных s sh - в хранилище Ansible, а в AWX (шаблон задания) хранятся только учетные данные хранилища. Вам необходимо проверить, как вы определяете учетные данные и перенести эту информацию из своей книги / задания в свой инвентарь. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#connecting -to-hosts-поведенческие-инвентаризации-параметры

Вот изменения, внесенные для достижения этой цели -

  1. Определить среду c инвентаризация . Важно не изменять состояние узла в какой-либо другой среде, что помогает избежать неожиданностей во время выполнения. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#example -он-инвентаризации за охрану окружающей среды .
  2. Переместить учетные данные. из playbooks в инвентаризации - Вы можете настроить env. укажите c переменные на вашем уровне инвентаря вместе с магическими c переменными. Маги c переменные известны Ansible. Например -
    ansible_connection, ansible_user, ansible_ssh_pass . Ansible хорошо понимает, он должен войти в систему через s sh, используя ansible_user, ansible_ssh_pass .
    Таким образом, вам не нужно указывать учетные данные на AWX Job Шаблон и счастливо оставить параметр учетных данных компьютера пусто на уровне шаблона. https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#magic.
    Вот снимок переменных, которые я определяю на уровне инвентаря. enter image description here

  3. Переменные и хранилище - обратите внимание, что раздел учетных данных содержит значения как переменные. Очевидно, мы не хотим показывать какие-либо учетные данные в виде открытого текста. поэтому важно следовать рекомендациям Ansible, чтобы Ansible находил переменные в незашифрованном файле и все чувствительные переменные поступали из зашифрованного файла. https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#variables -and-vaults .
    Я сохраняю переменный файл, т.е. файл конфигурации, вместе с хранилищем, чтобы они отображались во время выполнения в книгах воспроизведения. Вы можете создать подкаталог скажем vars и отобразить переменные, указанные как значения в переменных инвентаризации, в файл vars / var.yml . vars.yml может иметь ключ, определенный как -

    ssh_secret_dev: "{{vault_secret_pass}}"
    ssh_user_dev: имя пользователя
    И зашифрованный файл хранилища может иметь окончательное значение -

    vault_secret_pass : very_secret_password

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

Выберите приглашение при запуске для инвентаризации на уровне шаблона работы - Так как мы задаем среду WorkFlows c, а не шаблоны работы, поэтому мы можем упомянуть Inventory на уровне WorkFlow и выбрать приглашение при запуске в Уровень шаблонов работ, позволяющий инвентаризации применяться ко всем шаблонам заданий, которые имеют подсказку при запуске. Отредактируйте Playbooks для загрузки этих двух переменных файлов (vault.yml и vars.yml).
- hosts: localhost
  vars_files:
    - ./vars/vault.yml
    - ./vars/vars.yml
  gather_facts: no
  no_log: true
  tasks:
     - .....some tasks...... 

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...