Hartcodierte Zugangsdaten in einem Ansible-Playbook, im Terraform-State oder in Git sind eine tickende Bombe. Ein geleaktes Repository und ein Angreifer hat die Schlüssel zum Königreich. HashiCorp Vault und Terraform lösen das systematisch — und machen Infrastruktur zu auditierbarem Code.

Zwei Werkzeuge, zwei Rollen

Terraform beschreibt Infrastruktur als Code. Statt in einer Konsole zu klicken, haben Sie deklarative Dateien. Terraform gleicht auf den Zielzustand ab — wiederholbar, auditierbar, mit Änderungshistorie in Git.

Vault verwaltet Secrets: Passwörter, API-Keys, Zertifikate, Datenbankzugänge. Statt im Klartext gibt Vault sie dynamisch und temporär aus. Ein Leak ist keine Katastrophe mehr.

Die Regel, die wir bei Kunden durchsetzen: Secrets gehören niemals in Git. Auch nicht verschlüsselt. Vault ist die einzige Quelle.

So sieht es in der Praxis aus

  • Terraform provisioniert Infrastruktur (RHEL, OpenShift, F5, Netze) und schreibt das Ergebnis in NetBox als Source of Truth.
  • Vault gibt dynamische Secrets aus — ein Ansible-Playbook holt F5- oder DB-Zugang nur für die Laufzeit.
  • Ansible (Red Hat AAP) orchestriert alles — kein Admin sieht je ein Produktivpasswort.

Reality Check

  • Vault ist im Betrieb nicht kostenlos. Es ist eine kritische Komponente und wird im HA-Cluster mit Auto-Unseal betrieben.
  • Terraform-State ist sensibel. Er gehört in ein gesichertes Remote-Backend, nicht in Git.
  • Die Migration einer bestehenden Umgebung dauert. Wir machen es in Wellen.

Warum jetzt

Regulierung (NIS2, DORA) und Cyber-Versicherer verlangen zunehmend nachweisbares Secrets-Management und eine Audit-Spur. Vault + Terraform liefern genau das.

vault-creds.ymlAnsible
# Dynamische DB-Credentials aus Vault — kein Passwort in Code oder Git
- name: Kurzlebige Credentials holen und Config ausrollen
  hosts: app_servers
  tasks:
    - name: Authentifizieren und dynamische Credentials holen
      community.hashi_vault.vault_read:
        url: "https://vault.internal:8200"
        auth_method: approle           # Maschinen-Identität, kein geteiltes Passwort
        role_id: "{{ lookup('env','VAULT_ROLE_ID') }}"
        secret_id: "{{ lookup('env','VAULT_SECRET_ID') }}"
        path: "database/creds/billing-app"
      register: db
    - name: Config mit dem Secret rendern
      ansible.builtin.template:
        src: app.conf.j2
        dest: /etc/billing/app.conf
        mode: "0600"
      vars:
        db_user: "{{ db.data.username }}"   # 1 Stunde gültig, dann rotiert
        db_pass: "{{ db.data.password }}"
      no_log: true                      # Secret wird nie geloggt

Wichtiger Punkt: Credentials liegen nie im Repo oder Playbook — Vault gibt sie dynamisch aus, sie laufen selbst ab. Details in Vault Dynamic Secrets Docs.

1.200 → 0
Anonymisierter Kunde · Telco, CZ

Ein Audit fand 1.200+ hartcodierte Credentials über Playbooks, Skripte und Git-Historie. Nach der Migration zu Vault: 0 statische Secrets im Code, vollautomatische Rotation. Illustrative Werte — vor Veröffentlichung verifizieren.

Häufige Fragen

Was ist der Unterschied zwischen Vault und Terraform?

Terraform definiert Infrastruktur als Code (was erstellt wird), Vault verwaltet Secrets (wer worauf wie lange zugreift). Zusammen bilden sie eine Pipeline, in der Infrastruktur deklarativ provisioniert wird und Credentials nie in den Code gelangen.

Ist der Terraform-State nicht auch ein Risiko?

Ja, wenn er auf der Platte liegt. Deshalb verschlüsseln wir den Terraform-State und legen ihn in einem gesicherten Backend mit Locking ab. Sensible Outputs werden zudem zur Laufzeit aus Vault geholt, nicht aus der State-Datei.

Brauchen wir Vault Enterprise oder reicht Open Source?

Open-Source-Vault reicht für die meisten Szenarien. Die Enterprise-Edition empfehlen wir bei DR-Replikation, Namespaces für Multi-Tenant oder HSM-Integration. Wir starten meist Open Source und skalieren nach Bedarf.

Wie passt es zu unserer Ansible-Automatisierung?

Natürlich — Ansible holt Secrets zur Laufzeit über die offizielle Collection aus Vault. Keine vars mit Passwörtern, keine ansible-vault-Datei im Repo. Mehr zu unserem Ansatz im NetBox-Source-of-Truth-Artikel.

Nächster Schritt

Secrets im Code?

Buchen Sie einen 20-Minuten-Call — wir prüfen, wo Sie hartcodierte Credentials haben und wie Sie sie nach Vault bringen, ohne die ganze Automatisierung neu zu schreiben. Kein Sales-Pitch.

20-Min-Call buchen
Das könnte Sie auch interessieren
Networking·7 min

F5 BIG-IP als Code: Schluss mit manuellen Change-Tickets

Backup & DR·6 min

Veeam und Automatisierung: Backups, die sich selbst testen

Monitoring·7 min

Zabbix: Open-Source-Monitoring, das von einem Server bis zu Hunderttausenden skaliert

Hören Sie auf, Brände zu löschen — steuern Sie IT strategisch

Finden Sie heraus, wie Enterprise-Automatisierung gerade Ihrem Unternehmen helfen kann — ohne Verkaufsdruck, direkt mit einem Experten.