Sichere Verwaltung von credentials mit ansible-vault

Die sichere Verwaltung von Anmeldedaten, Passwörtern und geheimen Schlüsseln ist ein entscheidender Aspekt jeder Automatisierungs- und IT-Infrastruktur. Ansible bietet mit Ansible Vault ein leistungsstarkes Tool, das es ermöglicht, vertrauliche Informationen wie Passwörter, API-Schlüssel und andere sensible Daten sicher zu speichern und zu verwalten. In diesem Blog-Beitrag erfahren Sie, wie Sie Ansible Vault verwenden, um Ihre Anmeldedaten in Playbooks und Variablen sicher zu verwalten.


1. Was ist Ansible Vault?

Ansible Vault ist ein Feature von Ansible, das es ermöglicht, Dateien und Variablen zu verschlüsseln. Mit Ansible Vault können Sie vertrauliche Informationen sicher in Ihren Playbooks speichern, ohne sie im Klartext in Ihre Versionskontrollsysteme wie Git aufzunehmen. Diese Informationen werden verschlüsselt und können nur mit einem Kennwort oder Schlüssel entschlüsselt werden.

Ansible Vault unterstützt die folgenden Szenarien:

  • Verschlüsselung ganzer Dateien.
  • Verschlüsselung bestimmter Variablen oder Abschnitte in YAML-Dateien.
  • Verwaltung mehrerer Vault-Passwörter für verschiedene Umgebungen.

2. Einrichtung von Ansible Vault

Um Ansible Vault zu verwenden, müssen Sie sicherstellen, dass Ansible auf Ihrem System installiert ist. Ansible Vault ist ein Teil von Ansible und erfordert keine separate Installation.

2.1 Verschlüsselte Dateien erstellen

Mit Ansible Vault können Sie eine Datei von Grund auf verschlüsselt erstellen. Verwenden Sie dazu den Befehl ansible-vault create:Passwörter, API-Schlüssel oder private Schlüsseldateien zu verschlüsseln.

ansible-vault create geheimnisse.yml

Nach der Ausführung des Befehls werden Sie aufgefordert, ein Passwort einzugeben. Dieses Passwort wird benötigt, um die Datei später zu entschlüsseln. Anschließend öffnet sich ein Editor, in dem Sie Ihre vertraulichen Informationen (z. B. Passwörter oder API-Schlüssel) hinzufügen können:

# geheimnisse.yml
db_password: "supergeheimespasswort"
api_key: "123456789abcdef"

Nachdem Sie den Editor geschlossen haben, ist die Datei verschlüsselt und kann nur mit dem Ansible Vault Passwort entschlüsselt werden.

2.2 Verschlüsselte Dateien bearbeiten

Wenn Sie eine bereits verschlüsselte Datei bearbeiten möchten, verwenden Sie den Befehl ansible-vault edit:

ansible-vault edit geheimnisse.yml

Sie werden zur Eingabe des Vault-Passworts aufgefordert, und die Datei wird im Editor geöffnet. Nach dem Bearbeiten wird die Datei wieder automatisch verschlüsselt.

2.3 Verschlüsselte Dateien anzeigen

Um den Inhalt einer verschlüsselten Datei anzuzeigen, ohne sie zu bearbeiten, verwenden Sie den Befehl ansible-vault view:

ansible-vault view geheimnisse.yml

Nach Eingabe des Vault-Passworts wird der entschlüsselte Inhalt im Terminal angezeigt.


3. Verwendung verschlüsselter Daten in Playbooks

Die häufigste Verwendung von Ansible Vault ist die sichere Verwaltung von Anmeldedaten wie Datenbankpasswörtern, API-Schlüsseln oder SSH-Zugangsdaten. Diese vertraulichen Daten können in verschlüsselten YAML-Dateien gespeichert und dann in Playbooks verwendet werden.

3.1 Beispiel: Verwendung von Vault in einem Playbook

Angenommen, Sie haben eine verschlüsselte Datei geheimnisse.yml, die ein Datenbankpasswort enthält:

# geheimnisse.yml
db_password: "supergeheimespasswort"

In Ihrem Playbook können Sie diese verschlüsselte Variable wie folgt verwenden:

---
- hosts: localhost
  tasks:
    - name: Zeige das Datenbank-Passwort an
      debug:
        msg: "Das Datenbank-Passwort ist: {{ db_password }}"

3.2 Ausführen des Playbooks mit Vault

Wenn Sie ein Playbook ausführen, das verschlüsselte Daten enthält, müssen Sie Ansible mitteilen, dass ein Vault-Passwort erforderlich ist. Dies geschieht mit dem Parameter --ask-vault-pass:

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

Ansible fordert Sie auf, das Vault-Passwort einzugeben, bevor das Playbook ausgeführt wird.


4. Teilverschlüsselung von Dateien (Nur bestimmte Variablen verschlüsseln)

Es ist nicht immer notwendig, ganze Dateien zu verschlüsseln. Ansible Vault bietet auch die Möglichkeit, nur bestimmte Variablen oder Teile einer Datei zu verschlüsseln. So können Sie sensible Informationen innerhalb einer ansonsten unverschlüsselten YAML-Datei schützen.

4.1 Verschlüsseln bestimmter Variablen

Angenommen, Sie haben eine Datei variablen.yml, in der nur das Passwort verschlüsselt werden soll:

# variablen.yml
benutzer: "admin"
passwort: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          34653761323961383535376362336661626534383765343138636463353932313534626234343835
          6663323163646137336561656330313063306431393664320a343336336162666531323337323834
          66336331343861666434386533613130393037626539613438336439366165386236386138363538
          3537376465613437620a623737623030376466633030396239653164323835376335353832386432
          3065

Um eine bestimmte Variable zu verschlüsseln, verwenden Sie den Befehl ansible-vault encrypt_string. Hier ein Beispiel zum Verschlüsseln eines Passworts:

ansible-vault encrypt_string --ask-vault-pass 'supergeheimespasswort' --name 'passwort'

Das Ergebnis kann dann in Ihre YAML-Datei kopiert werden.

4.2 Entschlüsseln bestimmter Variablen

Um die verschlüsselte Variable in einem Playbook zu entschlüsseln, müssen Sie das Vault-Passwort angeben, genau wie bei verschlüsselten Dateien:

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

5. Automatisierte Verwaltung von Vault-Passwörtern

Wenn Sie nicht jedes Mal das Vault-Passwort manuell eingeben möchten, können Sie eine Passwortdatei verwenden. Diese Datei enthält das Vault-Passwort und wird automatisch von Ansible verwendet, um Dateien zu entschlüsseln.

5.1 Erstellen einer Passwortdatei

Erstellen Sie eine Datei, die das Vault-Passwort enthält:

echo "meinVaultPasswort" > .vault_pass.txt

Stellen Sie sicher, dass diese Datei sicher ist und nur für den Besitzer lesbar ist:

chmod 600 .vault_pass.txt

5.2 Verwenden der Passwortdatei

Sie können die Passwortdatei beim Ausführen von Playbooks angeben:

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

6. Änderung des Vault-Passworts

Wenn Sie das Passwort ändern möchten, das zur Verschlüsselung verwendet wird, können Sie den Befehl ansible-vault rekey verwenden:

ansible-vault rekey geheimnisse.yml

Sie werden aufgefordert, das aktuelle Passwort sowie ein neues Passwort einzugeben. Danach wird die Datei mit dem neuen Passwort verschlüsselt.


7. Fazit

Ansible Vault ist ein leistungsstarkes Werkzeug, um sensible Daten wie Passwörter, API-Schlüssel und andere vertrauliche Informationen sicher zu verwalten. Mit Vault können Sie Ihre Anmeldedaten sicher verschlüsseln und sie in Playbooks verwenden, ohne sie im Klartext preiszugeben. Vault hilft dabei, die Sicherheitsrisiken bei der Verwaltung von Anmeldedaten zu minimieren und stellt sicher, dass sensible Informationen nicht in die falschen Hände geraten.

Durch die richtige Verwendung von Ansible Vault und die Einhaltung von Sicherheitsrichtlinien können Sie sicherstellen, dass Ihre Anmeldedaten und Geheimnisse gut geschützt sind, selbst wenn Ihre Playbooks und Konfigurationsdateien in Versionskontrollsystemen wie Git verwaltet werden.

Schreibe einen Kommentar

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