Запланированная команда с защищенными личными учетными данными

Я не уверен, что у меня есть четкое название, но вот моя история:

Я работаю над облаком Openstack (Openstack не здесь важно), и мне нужно устанавливать свое имя пользователя / пароль каждый раз, когда мне нужно вызвать Openstack API, это классический вариант.

Я создал программу (с Ansible, но здесь это не важно), которая создает веб-сайт из данных Openstack, предоставляемых его API.Мне нужно запускать его вручную каждый раз, потому что я не могу сохранить свои учетные данные.

Теперь я хочу автоматизировать это. Как создать запланированную задачу (например, с помощью cron), которая запускает мой скрипт с моими учетными данными. Эта задача не может быть изменена кроме меня, учетные данные должны быть скрыты, скрипт, вызываемый задачей, также должен быть защищен (например, проверка контрольной суммы).

Ограничения: На всех виртуальных машинах у нас (я и моя команда) есть уникальный пользователь для входа в систему, и я хочу защитить свои учетные данные даже от пользователя root.

Любой инструмент, который может помочь мне в этом, приветствуется (cron, Jenkins, ...)

0
задан 9 August 2019 в 19:10
1 ответ

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

Итак - использование Ansible с управляющей машины, которая имеет доступ ко всей системе. Вы запускаете там playbook, который делает то, что нужно сделать на целевом хосте. Затем Ansible потребуются учетные данные. Их можно передать через Ansible-vault. Конечно, у Ansible Vault есть внутренние учетные данные для шифрования / дешифрования ansible-vault, но вы находитесь на управляющей машине. И на вашем уровне паранойи должна быть конечная точка. Если вы никому не доверяете, вы не можете хранить какие-либо учетные данные и должны вводить их каждый раз. Ansible можно вызвать через cron.

Итак,

  • создайте с помощью ansible-vault файл с некоторыми зашифрованными параметрами.
  • поместите эти зашифрованные параметры в ваши переменные хоста / группы.
  • вызовите playbook с помощью ansible-playbook --vault-password-file vault ..
  • определить задание cron для этого

Лично я заменил задание cron на AWX. В этом случае вы можете определить пользователей, которые имеют доступ к плейбукам, инвентарю и т. Д., Не имея прямого доступа к контенту. Вы можете настраивать расписания в AWX. Для этого также есть пример docker-compose.

0
ответ дан 17 March 2020 в 09:09

Теги

Похожие вопросы