Ansible Vault: Sensible Daten sicher verwalten

In vielen Automatisierungsprojekten müssen Passwörter, API-Keys oder andere sensible Informationen in Playbooks oder Variablen verwendet werden. Diese Daten dürfen jedoch keinesfalls im Klartext in Versionskontrollsystemen oder Konfigurationsdateien stehen.
Mit Ansible Vault bietet Ansible eine integrierte Lösung, um sensible Daten sicher zu verschlüsseln und gleichzeitig einfach in Automatisierungen einzubinden.


Warum Ansible Vault?

  • Schutz sensibler Informationen: Passwörter oder private Schlüssel werden verschlüsselt gespeichert.
  • Integration in bestehende Workflows: Nutzung in Playbooks ohne manuelles Entschlüsseln.
  • Automatisierbar: Lässt sich in CI/CD-Pipelines integrieren.
  • Versionskontrolle möglich: Verschlüsselte Dateien können sicher in Git gespeichert werden.

Erstellen einer verschlüsselten Datei

Mit folgendem Befehl lässt sich eine neue verschlüsselte Datei anlegen:

ansible-vault create secrets.yml

Daraufhin öffnet sich ein Editor, in dem sensible Daten eingetragen werden können.
Die Datei wird automatisch mit AES-256 verschlüsselt.


Verschlüsseln und Entschlüsseln bestehender Dateien

  • Verschlüsseln: ansible-vault encrypt vars.yml
  • Entschlüsseln: ansible-vault decrypt vars.yml
  • Passwort ändern: ansible-vault rekey vars.yml

Verwendung in Playbooks

Verschlüsselte Dateien können in Playbooks wie jede andere Variablen-Datei genutzt werden:

---
- name: Beispiel mit Vault
  hosts: webserver
  vars_files:
    - secrets.yml
  tasks:
    - name: Passwort anzeigen
      debug:
        msg: "Das Passwort ist {{ db_password }}"

Beim Ausführen des Playbooks wird das Vault-Passwort abgefragt oder über eine Passwortdatei bereitgestellt:

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

Automatisierung und CI/CD-Integration

In CI/CD-Pipelines kann das Vault-Passwort aus sicheren Umgebungsvariablen oder Secret Managern wie HashiCorp Vault, AWS Secrets Manager oder Azure Key Vault bereitgestellt werden.


Best Practices

  • Ein Vault pro Projekt: Für einfache Verwaltung und klare Strukturen.
  • Getrennte Vaults pro Umgebung: z. B. dev, staging, production.
  • Kein Klartext in Git: Nur verschlüsselte Dateien versionieren.
  • Automatisierte Passworteingabe: Sichere Integration in Build-Pipelines.


Kommentare

Schreibe einen Kommentar

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