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.