Sichern Sie Ihre Geheimnisse mit Ansible Vault

In diesem Ansible-Tresor-Blog wird erläutert, wie vertrauliche Daten (Kennwörter / geheimer Schlüssel / Zertifizierungsdateien) in verschlüsselten Dateien gespeichert und in Ansible Playbooks eingebettet werden.

Je höher der Einsatz von Technologie, desto größer die mögliche Bedrohung für die Sicherheit. Für eine typische Ansible-Einrichtung müssen Sie 'Secrets' eingeben. Diese Geheimnisse können buchstäblich alles sein, Passwörter, API-Token, öffentliche oder private SSH-Schlüssel, SSL-Zertifikate usw. Wie schützen wir diese Geheimnisse? Ansible bietet eine Funktion namens Ansible Vault.

In diesem Blog werde ich zeigen, wie Ansible Vault verwendet wird, und einige der Best Practices für die Sicherheit der Daten untersuchen.





In diesem Blog behandelte Themen:

Wenn Sie DevOps beherrschen möchten, ' Natürlich wäre Ihre Wahl.



Was ist Ansible Vault?

Eine Infrastruktur als Code kann die Gefahr darstellen, dass Ihre sensiblen Daten der Welt ausgesetzt werden, was zu unerwünschten Sicherheitsproblemen führt. Ansible Vault ist eine Funktion, mit der Sie alle Ihre Geheimnisse schützen können. Es kann ganze Dateien, ganze YAML-Playbooks oder sogar einige Variablen verschlüsseln. Es bietet eine Funktion, mit der Sie vertrauliche Daten nicht nur verschlüsseln, sondern auch in Ihre Playbooks integrieren können.

Vault wird mit Granularität auf Dateiebene implementiert, wobei die Dateien entweder vollständig verschlüsselt oder vollständig unverschlüsselt sind. Es verwendet das gleiche Passwort zum Verschlüsseln sowie zum Entschlüsseln von Dateien, was die Verwendung von Ansible Vault sehr benutzerfreundlich macht.

Warum Ansible Vault verwenden?

Da Ansible für die Automatisierung verwendet wird, besteht eine hohe Wahrscheinlichkeit, dass Playbooks bestimmte Anmeldeinformationen, SSL-Zertifikate oder andere vertrauliche Daten enthalten. Das Speichern vertraulicher Daten wie Klartext ist eine schlechte Idee. Ein falsches Commit für GitHub oder Laptop-Diebstahl kann einem Unternehmen einen großen Verlust verursachen. Hier kommt Ansible Vault ins Spiel. Es ist eine großartige Möglichkeit, Infrastruktur als Code zu haben, ohne die Sicherheit zu beeinträchtigen.



Angenommen, wir haben ein Playbook, das Ihre EC2-Instanz in AWS bereitstellt. Sie müssen Ihre AWS-Zugriffsschlüssel-ID und Ihren geheimen AWS-Schlüssel im Playbook angeben. Sie geben diese Schlüssel aus offensichtlichen Gründen nicht an andere weiter. Wie halten Sie sie unbelichtet? Es gibt zwei Möglichkeiten: Entweder diese beiden Variablen verschlüsseln und in das Playbook einbetten oder das gesamte Playbook verschlüsseln.

Dies war nur eines der Szenarien, in denen ansible Vault verwendet werden kann. Wir können entweder ganze Dateien verschlüsseln oder nur wenige Variablen verschlüsseln, die möglicherweise vertrauliche Daten enthalten, und Ansible entschlüsselt sie dann zur Laufzeit automatisch. Jetzt können wir diese Werte sicher an GitHub übergeben.

Verschlüsselte Datei erstellen

Verwenden Sie zum Erstellen einer verschlüsselten Datei die ansible-vault erstellen Befehl und übergeben Sie den Dateinamen.

$ ansible-vault create filename.yaml

Sie werden aufgefordert, ein Kennwort zu erstellen und es dann durch erneutes Eingeben zu bestätigen.

Ansible Vault erstellen - Ansible Vault - Edureka

Sobald Ihr Passwort bestätigt wurde, wird eine neue Datei erstellt und ein Bearbeitungsfenster geöffnet. Standardmäßig ist der Editor für Ansible Vault vi. Sie können Daten hinzufügen, speichern und beenden.

Was ist Big Data Hadoop

Und Ihre Datei ist verschlüsselt.

Bearbeiten verschlüsselter Dateien

Wenn Sie eine verschlüsselte Datei bearbeiten möchten, können Sie sie mit bearbeiten Ansible-Vault bearbeiten Befehl.

$ ansible-vault edit secret.txt

Wobei Secrets.txt eine bereits erstellte, verschlüsselte Datei ist.

Sie werden aufgefordert, das Tresorkennwort einzugeben. Die Datei (entschlüsselte Version) wird in einem vi-Editor geöffnet, und Sie können die erforderlichen Änderungen vornehmen.

Wenn Sie die Ausgabe überprüfen, wird Ihr Text beim Speichern und Schließen automatisch verschlüsselt.

Anzeigen einer verschlüsselten Datei

Wenn Sie nur eine verschlüsselte Datei anzeigen möchten, können Sie die verwenden Ansible-Vault-Ansicht Befehl.

$ ansible-vault view filename.yml

Sie werden erneut zur Eingabe eines Passworts aufgefordert.

und Sie werden eine ähnliche Ausgabe sehen.

Rekeying Vault Password

Natürlich gibt es Zeiten, in denen Sie das Tresorkennwort ändern möchten. Du kannst den ... benutzen Ansible-Vault-Rekey Befehl.

$ ansible-vault rekey Secrets.txt

Sie werden aufgefordert, das aktuelle Passwort des Tresors und anschließend das neue Passwort einzugeben. Anschließend bestätigen Sie das neue Passwort.

Unverschlüsselte Dateien verschlüsseln

Angenommen, Sie haben eine Datei, die Sie verschlüsseln möchten, können Sie die verwenden Ansible-Vault-Verschlüsselung Befehl.

$ ansible-vault verschlüsseln filename.txt

Sie werden aufgefordert, ein Kennwort einzugeben und zu bestätigen, und Ihre Datei wird verschlüsselt.

Nachdem Sie sich den Dateiinhalt angesehen haben, ist alles verschlüsselt.

Entschlüsselte Dateien entschlüsseln

Wenn Sie eine verschlüsselte Datei entschlüsseln möchten, können Sie verwenden ansible-vault entschlüsseln Befehl.

$ ansible-vault entschlüsseln filename.txt

Wie üblich werden Sie aufgefordert, das Tresorkennwort einzugeben und zu bestätigen.

Verschlüsseln bestimmter Variablen

Bei der Verwendung von Ansible Vault empfiehlt es sich, nur die vertraulichen Daten zu verschlüsseln. In dem oben erläuterten Beispiel möchte das Entwicklungsteam sein Kennwort nicht mit dem Produktions- und dem Staging-Team teilen, benötigt jedoch möglicherweise Zugriff auf bestimmte Daten, um seine eigene Aufgabe auszuführen. In solchen Fällen sollten Sie nur die Daten verschlüsseln, die Sie nicht mit anderen teilen möchten, und den Rest unverändert lassen.

Mit Ansible Vault können Sie nur bestimmte Variablen verschlüsseln. Du kannst den ... benutzen ansible-vault encrypt_string Befehl dafür.

$ ansible-vault encrypt_string

Sie werden aufgefordert, das Tresorkennwort einzufügen und anschließend zu bestätigen. Anschließend können Sie den Zeichenfolgenwert einfügen, den Sie verschlüsseln möchten. Drücken Sie Strg-D, um die Eingabe zu beenden. Jetzt können Sie diese verschlüsselt zuweisenWertzu einer Zeichenfolge im Spielbuch.

Sie können dasselbe auch in einer einzigen Zeile erreichen.

$ ansible-vault encrypt_string 'string' --name 'variable_name'

Entschlüsseln verschlüsselter Dateien während der Laufzeit

Wenn Sie eine Datei zur Laufzeit entschlüsseln möchten, können Sie verwenden –Fass-Vault-Pass Flagge.

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

Dadurch werden alle verschlüsselten Dateien entschlüsselt, die für die Ausführung dieses Playbooks 'launch.yml' verwendet werden. Dies ist auch nur möglich, wenn alle Dateien mit demselben Kennwort verschlüsselt sind.

Passwortabfragen können ärgerlich werden. Der Zweck der Automatisierung wird sinnlos. Wie machen wir das besser? Ansible verfügt über eine Funktion namens 'Kennwortdatei', die auf eine Datei verweist, die das Kennwort enthält. Sie können diese Kennwortdatei dann einfach zur Laufzeit übergeben, um sie zu automatisieren.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

Ein separates Skript, das die Passwörter angibt, ist ebenfalls möglich. Sie müssen sicherstellen, dass die Skriptdatei ausführbar ist und das Kennwort in der Standardausgabe gedruckt wird, damit es ohne störende Fehler funktioniert.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

Vault-ID verwenden

Die Tresor-ID ist eine Möglichkeit, eine Kennung für ein bestimmtes Tresorkennwort bereitzustellen. Vault ID hilft beim Verschlüsseln verschiedener Dateien mit unterschiedlichen Passwörtern, auf die in einem Playbook verwiesen wird. Diese Funktion von Ansible wurde mit der Veröffentlichung von Ansible 2.4 veröffentlicht. Vor dieser Version konnte nur ein Tresorkennwort für jede ansible Playbook-Ausführung verwendet werden.

Wenn Sie nun ein Ansible-Playbook ausführen möchten, das mehrere Dateien verwendet, die mit unterschiedlichen Kennwörtern verschlüsselt sind, können Sie die Vault-ID verwenden.

$ ansible-playbook - Tresor-ID Tresorpass1 - Tresor-ID Tresorpass2 Dateiname.yml

Damit sind wir am Ende dieses Ansible Vault-Blogs angelangt. Es ist erstaunlich, mit der Technologie Schritt zu halten und sie optimal zu nutzen, aber nicht durch Kompromisse bei der Sicherheit. Dies ist eine der besten Möglichkeiten, Infrastruktur als Code (IaC) zu verwenden.

Wenn Sie diesen Artikel hilfreich finden, lesen Sie die ' angeboten von Edureka. Es deckt alle Tools ab, die die IT-Branche intelligenter gemacht haben.

Hast du eine Frage an uns? Bitte poste es auf und wir werden uns bei Ihnen melden.