Manchmal möchte ich Ansible's lineinfile
oder blockinfile
Module verwenden, um ein Passwort in eine Konfigurationsdatei zu schreiben. Wenn ich das tue, landet die ganze Zeile oder der gesamte Block, einschließlich des Passworts, in meinem syslog
.
Wie syslog
kann ich Ansible anweisen, mein Passwort nicht zu verlieren, da ich es nicht als sicheren Ort für die Speicherung meiner Passwörter betrachte syslog
? Ich hoffe, es gibt einen Weg, dies zu tun, sonst würde ich dies als ein großes Sicherheitsproblem in Ansible betrachten.
Sie können es beispielsweise mit diesem Ad-hoc-Befehl reproduzieren:
ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'
Folgendes endet 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
Für das Beispiel habe ich Ansible 2.0.0.2 von der offiziellen Ansible Ubuntu PPA auf einem Debian "Jessie" 8-System verwendet.
syslog
ausgeblendet, gleichzeitig wird jedoch die Protokollierungsausgabe in der Konsolenausgabe deaktiviert. Gibt es eine Möglichkeit, das zu ändern?password = XXX
.Ich habe ein Callback-Plugin entwickelt, um Passwörter für Standardausgaben auszublenden. Es analysiert das Ausgabewörterbuch nach Schlüsseln, die ein Passwort enthalten . Für jedes von ihnen wird der Wert durch ******** ersetzt.
Erstellen Sie eine Datei mit dem Namen
protect_data.py
in Ordner ./plugins/callback diesen Code hinzufügen hinzuzufügen:In der Datei ansible.cfg :
stdout_callback
und setzen Sie diesen Plugin-Namen auf einen Wert (stdout_callback=protect_data
)callback_plugins
und Wert einstellen./plugins/callback
quelle
ansible-playbook --diff
(Datei-Diff-Änderungen)?Man könnte vorschlagen, dass die Verwendung von Vault das Problem umgehen würde.
quelle