Anwendung von ansible-vault zur Verschlüsselung

In modernen IT-Infrastrukturen und Automatisierungsprozessen ist der sichere Umgang mit sensiblen Daten von entscheidender Bedeutung. Ansible, ein beliebtes Automatisierungswerkzeug, bietet mit Ansible Vault eine leistungsstarke Lösung zur Verschlüsselung von Passwörtern, API-Schlüsseln, Konfigurationsdateien und anderen vertraulichen Informationen. In diesem Blogbeitrag zeige ich dir, wie Ansible Vault funktioniert, wie du sensible Daten verschlüsseln kannst und welche Best Practices bei der Verwendung von Ansible Vault zu beachten sind.


Was ist Ansible Vault?

Ansible Vault ist ein Tool, das in Ansible integriert ist und es ermöglicht, sensible Daten wie Passwörter oder Konfigurationsdateien sicher zu verschlüsseln. Der Hauptvorteil von Vault besteht darin, dass du verschlüsselte Inhalte in deinen Playbooks oder Variablen-Dateien speichern kannst, ohne die Sicherheit deiner Umgebung zu gefährden.

Vault-Dateien können dann während der Playbook-Ausführung mit einem Passwort oder Schlüssel entschlüsselt werden. So bleibt der Zugriff auf vertrauliche Informationen geschützt.


Einrichtung und Nutzung von Ansible Vault

1. Erstellen einer neuen verschlüsselten Datei

Um eine neue verschlüsselte Datei mit Ansible Vault zu erstellen, verwende den Befehl ansible-vault create. Nach der Eingabe des Befehls wirst du aufgefordert, ein Passwort festzulegen, mit dem die Datei später entschlüsselt werden kann.

ansible-vault create geheimnisse.yml

Nach Eingabe eines Passworts öffnet sich ein Texteditor (standardmäßig Vim), in dem du die vertraulichen Daten einfügen kannst, z. B.:

db_user: admin
db_password: geheimpasswort

Wenn du den Editor verlässt und die Datei speicherst, wird sie verschlüsselt und kann nicht mehr ohne das Vault-Passwort eingesehen werden.

2. Bearbeiten einer verschlüsselten Datei

Um eine bereits verschlüsselte Datei zu bearbeiten, verwendet man den Befehl ansible-vault edit. Auch hier wirst du nach dem Vault-Passwort gefragt, bevor du die Datei öffnen und Änderungen vornehmen kannst.

ansible-vault edit geheimnisse.yml

Nach Abschluss der Bearbeitung wird die Datei automatisch wieder verschlüsselt.

3. Verschlüsseln einer bestehenden Datei

Du kannst auch eine bestehende unverschlüsselte Datei verschlüsseln, indem du ansible-vault encrypt verwendest:

ansible-vault encrypt datei.yml

Die Datei wird verschlüsselt, und du musst ein Passwort festlegen, um den Inhalt später wieder entschlüsseln zu können.

4. Entschlüsseln einer Datei

Wenn du den Inhalt einer verschlüsselten Datei dauerhaft entschlüsseln möchtest, kannst du den Befehl ansible-vault decrypt verwenden:

ansible-vault decrypt geheimnisse.yml

Nach Eingabe des Passworts wird die Datei entschlüsselt und im Klartext gespeichert.

5. Verwendung von Ansible Vault in Playbooks

In einem Ansible-Playbook kannst du verschlüsselte Variablen oder Dateien genauso verwenden wie unverschlüsselte. Angenommen, du hast eine Datei geheimnisse.yml, die Anmeldeinformationen für eine Datenbank enthält:

- name: Datenbank-Setup
  hosts: dbserver
  vars_files:
    - geheimnisse.yml
  tasks:
    - name: Erstelle Datenbank-Benutzer
      mysql_user:
        name: "{{ db_user }}"
        password: "{{ db_password }}"
        state: present

Um dieses Playbook auszuführen, musst du Ansible mitteilen, dass es eine verschlüsselte Datei verwendet. Das geht, indem du beim Ausführen des Playbooks den Parameter --ask-vault-pass hinzufügst:

ansible-playbook db-setup.yml --ask-vault-pass

Ansible wird dich dann nach dem Vault-Passwort fragen, um die Datei zu entschlüsseln und die enthaltenen Variablen im Playbook zu verwenden.


Automatisierung der Passwortabfrage

Wenn du nicht bei jedem Playbook-Lauf nach dem Passwort gefragt werden möchtest, kannst du ein Passwort-Datei verwenden, die Ansible automatisch zur Entschlüsselung nutzt. Diese Datei sollte sehr gut geschützt werden, da der Zugriff auf sie das Vault-Passwort offenlegt.

Erstelle eine Datei, z. B. vault_pass.txt, die nur das Vault-Passwort enthält:

geheimpasswort

Nun kannst du die Playbook-Ausführung mit dem Parameter --vault-password-file automatisieren:

ansible-playbook db-setup.yml --vault-password-file vault_pass.txt

Achte darauf, dass die Passwort-Datei mit den richtigen Berechtigungen versehen wird, sodass sie nur von autorisierten Benutzern gelesen werden kann:

chmod 600 vault_pass.txt

Verschlüsselung mehrerer Dateien

Ansible Vault erlaubt es auch, mehrere Dateien gleichzeitig zu verschlüsseln. Du kannst dies durch Angabe mehrerer Dateinamen bei den Vault-Befehlen erreichen. Beispielsweise:

ansible-vault encrypt datei1.yml datei2.yml

Alle angegebenen Dateien werden in einem Durchgang verschlüsselt und mit demselben Passwort versehen.


Best Practices für die Arbeit mit Ansible Vault

  1. Passwort-Management: Verwende für Ansible Vault ein starkes, komplexes Passwort und achte darauf, es sicher zu speichern. Tools wie ein Passwort-Manager können hierbei hilfreich sein.
  2. Passwort-Datei sichern: Wenn du eine Passwort-Datei für die automatische Entschlüsselung verwendest, stelle sicher, dass sie nur den minimal notwendigen Benutzern zugänglich ist und setze strenge Dateiberechtigungen (z. B. chmod 600).
  3. Vermeide Passwörter im Klartext: Gib keine sensiblen Informationen im Klartext in Playbooks oder Variablen-Dateien an. Verschlüssele sie mit Ansible Vault, um sicherzustellen, dass sie nur für autorisierte Personen zugänglich sind.
  4. Versionskontrolle: Lege keine unverschlüsselten sensiblen Daten in einem Versionskontrollsystem wie Git ab. Verschlüsselte Dateien sind sicherer, sollten jedoch regelmäßig auf ihre Sicherheit überprüft werden.
  5. Vault-Schlüsselrotation: Es ist ratsam, die Vault-Passwörter in regelmäßigen Abständen zu ändern. Ansible Vault unterstützt eine Schlüsselrotation durch die Funktion rekey, mit der du das Passwort einer verschlüsselten Datei ändern kannst:
ansible-vault rekey geheimnisse.yml
  1. Kombination mit Tools wie HashiCorp Vault: Für größere Umgebungen empfiehlt es sich, Ansible Vault mit weiteren Tools zur Verwaltung von Geheimnissen, wie HashiCorp Vault, zu kombinieren. So kannst du Passwörter zentral verwalten und sicher bereitstellen.

Fazit

Ansible Vault ist ein unverzichtbares Werkzeug, wenn es darum geht, sensible Daten in automatisierten Playbooks sicher zu verwalten. Durch die einfache Verschlüsselung von Variablen-Dateien und die Möglichkeit, sensible Informationen geschützt in Playbooks zu verwenden, bietet Ansible Vault einen effizienten Schutz vor unbefugtem Zugriff.

Mit den hier vorgestellten Befehlen und Best Practices kannst du sicherstellen, dass deine vertraulichen Daten in Ansible sicher bleiben und trotzdem einfach in deinen Automatisierungsprozessen eingesetzt werden können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert