Czasami chciałbym użyć Ansible's lineinfile
lub blockinfile
modułów do napisania hasła do jakiegoś pliku konfiguracyjnego. Jeśli to zrobię, cała linia lub blok, łącznie z hasłem, trafi do mojego syslog
.
Ponieważ nie uważam syslog
za bezpieczne miejsce do przechowywania haseł, w jaki sposób mogę powiedzieć Ansible, aby nie ujawniał mojego hasła syslog
? Mam nadzieję, że jest na to sposób, w przeciwnym razie uważałbym to za duży problem bezpieczeństwa w Ansible.
Możesz go odtworzyć na przykład za pomocą tego polecenia ad-hoc:
ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'
Oto, co kończy się w syslog
:
ansible-blockinfile: Invoked with directory_mode=None force=None remote_src=None insertafter=None owner=None follow=False marker=# {mark} ANSIBLE MANAGED BLOCK group=None insertbefore=None create=True setype=None content=None serole=None state=present dest=/tmp/ansible_password_leak selevel=None regexp=None validate=None src=None seuser=None delimiter=None mode=None backup=False block=Password = secret
Na przykład użyłem Ansible 2.0.0.2 z oficjalnego Ansible Ubuntu PPA w systemie Debian „Jessie” 8.
syslog
ale jednocześnie wyłącza rejestrowanie danych wyjściowych konsoli. Czy można to zmienić?password = XXX
.Opracowałem wtyczkę zwrotną do ukrywania haseł do domyślnych danych wyjściowych, parsuje ona wyjściowy słownik dla klucza zawierającego hasło , dla każdego z nich zamienia wartość na ********.
Utwórz plik o nazwie
protect_data.py
w folderze ./plugins/callback dodaj dodaj ten kod:W pliku ansible.cfg :
stdout_callback
i ustaw tę nazwę wtyczki na wartość (stdout_callback=protect_data
)callback_plugins
i ustaw wartość./plugins/callback
źródło
ansible-playbook --diff
(zmiany różnic plików)?Ktoś mógłby zasugerować, że zamiast tego korzystanie z Vault rozwiązałoby problem.
źródło