Wie zu Verwenden Ansible Vault zum Speichern von Geheimen Schlüsseln

0
170

Mit den meisten automation, Anmeldeinformationen sind erforderlich, um die Authentifizierung und die Verwendung von sicheren Ressourcen. Was immer eine Herausforderung ist, wie man am besten speichern Sie diese Anmeldeinformationen sicher. Ansible ist ein Automatisierungs-system, das die software-Bereitstellung, Konfiguration-management und Applikation-deployments.

Wie bei jeder automation-system, Ansible benötigt eine sichere Methode zum speichern von Schlüsseln. Im Fall von Ansible, das system nennt sich Ansible Gewölbe. Ansible Vault bietet eine plattformübergreifende Lösung zur sicheren Speicherung von Anmeldeinformationen.

Einführung Ansible Vault

Ansible Depot kann verwendet werden zum verschlüsseln einer Datei oder Variablen selbst, aus einem playbook. Standardmäßig AES verwendet wird, das ist ein shared-secret-basierende Verschlüsselung. Beide Datei-und variable-Verschlüsselung Methoden haben Ihre Vorteile und Nachteile.

Datei-Verschlüsselung

Erstellen Sie eine neue verschlüsselte Datei mit dem Namen secrets.yml verwenden Sie einfach die folgende ansible-vault-Befehl.

ansible-vault erstellen Sie Geheimnisse.yml

Nach der Aufforderung für ein Passwort, das ansible-vault-Befehl starten Sie den Standard-system-Datei-editor, das Ergebnis wird in einer verschlüsselten Datei auf speichern.

In ähnlicher Weise zu verschlüsseln, die bisher unverschlüsselte Datei, verwenden Sie die folgende ansible-vault-Befehl. Beachten Sie, dass diese nutzt das verschlüsseln parameter, anstatt die parameter erstellen.

ansible-vault verschlüsseln Geheimnisse.yml

Der Nachteil bei der Verwendung der Dateiverschlüsselung ist die Lesbarkeit. Wenn Sie die Datei öffnen, dann werden Sie feststellen, dass ohne Entschlüsselung, es ist unmöglich zu entziffern, den Inhalt.

Variable Verschlüsselung

Innerhalb eines playbook, ist es möglich, eine verschlüsselte variable, indem Sie vor den verschlüsselten Daten die !Tresor-tag. Läuft die encrypt_string argument der ansible_vault Befehl wird eine verschlüsselte Zeichenfolge, die Sie verwenden können, innerhalb Ihrer playbooks.

ansible-vault encrypt_string ‘secret_data’ –name ‘my_secret’

Nach dem Sie aufgefordert werden, ein Kennwort, erhalten Sie den folgenden verschlüsselten string.

my_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
37636561366636643464376336303466613062633537323632306566653533383833366462366662
6565353063303065303831323539656138653863353230620a653638643639333133306331336365
62373737623337616130386137373461306535383538373162316263386165376131623631323434
3866363862363335620a376466656164383032633338306162326639643635663936623939666238
3161

Variable Verschlüsselung ist toll für die Lesbarkeit, aber die Möglichkeit zur Verwendung von command-line-Eingabe geopfert wird, wenn mit dieser Methode.

Mit Ansible Vault in der Praxis

Sie können erkennen, dass mit Ansible Gewölbe in der Produktion ist eine Herausforderung. Um effektiv zu nutzen Ansible Gewölbe, die folgenden Techniken, um diesen Vorgang zu erleichtern.

  • Spontan Entschlüsselung
  • Mehrere Gewölbe
  • Rekeying

Spontan Entschlüsselung

Eine option für eine transparente Entschlüsselung einer Datei oder Variablen, die beim mit Ansible ist das speichern das Passwort in einem geschützten und un-versionierte Passwort-Datei. Verweis auf diesen gespeicherte Passwort, übergeben Sie einfach in den Speicherort der Datei mit dem vault-password parameter-Datei.

ansible-playbook –vault-password-file /path/vault-Passwort-Datei secrets.yml

Dies wird entschlüsselt aufgenommen, verschlüsselt Dateien oder Variablen mit dem mitgelieferten Passwort.

Es ist sehr wichtig, nicht zu verpflichten, Ihre Klartext-Passwort-Datei in der version control system. Ebenso schützen Sie diese Datei nur für den Benutzer oder die Gruppe muss Zugriff auf das gespeicherte Kennwort auf das Dateisystem mit Hilfe von access control lists (ACL ‘ s).

Mehrere Gewölbe

Obwohl es bequem zu einem Gewölbe mit all den verschlüsselten Geheimnisse, eine bessere Sicherheit der Praxis ist die Trennung die sichere Anmeldeinformationen in separaten relevanten Gewölbe. Ein Beispiel HIERFÜR wäre die Trennung von Produktions-und Entwicklungsumgebung. Zum Glück, Ansible Vault ermöglicht es uns, erstellen Sie mehrere Depots und Verweise, die vault die verschlüsselte Daten kommen über ein label.

ansible-vault erstellen –vault-id prod@prompt-Art-Geheimnisse.yml

Der obige code erstellt eine prod-vault und Eingabeaufforderung für Ihr Passwort zur Laufzeit (wie bereits von der @prompt-string). Wenn Sie bereits ein Passwort-Datei, die Sie verwenden möchten, übergeben Sie einfach den Pfad zu der Datei.

ansible-vault erstellen –vault-id prod@/Pfad/prod-vault-Passwort-Datei prod-Geheimnisse.yml

Sagen wir, wir möchten, verschlüsseln Sie die gleichen my_secret variable, aber dieses mal speichern, die in unserer prod Gewölbe. Wie vor, mit encrypt_string aber mit den entsprechenden vault-id ermöglicht das speichern von das Geheimnis in der angegebenen Position.

ansible-vault encrypt_string –vault-id prod@/Pfad/prod-vault-Passwort-Datei ‘secret_data’ –name ‘my_secret’

Sie werden bemerken, dass nach dem AES256-string, ein neues Stück text, prod angezeigt. Dies deutet auf das Gewölbe, dass der verschlüsselte text befindet.

my_secret: !vault |
$ANSIBLE_VAULT;1.1;AES-256;prod
37636561366636643464376336303466613062633537323632306566653533383833366462366662
6565353063303065303831323539656138653863353230620a653638643639333133306331336365
62373737623337616130386137373461306535383538373162316263386165376131623631323434
3866363862363335620a376466656164383032633338306162326639643635663936623939666238
3161

Was ist, wenn Sie mehrere Depots in eine einzige playbook? Sie können leicht passieren in mehreren vault-id Deklarationen auf ein ansible-playbook-Befehlszeile.

ansible-playbook –vault-id dev@/path/dev-vault-Passwort-Datei –vault-id prod@/Pfad/prod-vault-Passwort-Datei Website.yml

Rekeying

Schließlich ist es wichtig zu Zyklus regelmäßig Ihre Passwörter. Für Dateien, die verschlüsselt sind, können Sie mithilfe der Befehlszeile unten. Vorbei an dem neuen vault-id-parameter macht es leicht, das Passwort zu ändern, dass die Geheimnisse verschlüsselt werden.

ansible-vault rekey –vault-id prod@/Pfad/prod-vault-Passwort-Datei-alte-neue-vault-id prod@/Pfad/prod-vault-Passwort-Datei-neue site.yml

Wie oben erwähnt, Kommandozeilen-Eingabe funktioniert nicht bei verschlüsselten Variablen. In diesem Fall müssen Sie individuell re-verschlüsseln und ersetzen von strings in einer gegebenen playbook.

Best Practices

Sicherheit ist schwierig, vor allem, wenn es darum geht, mit Geheimnissen innerhalb der Automatisierungstechnik. Mit dem im Verstand, im folgenden sind einige best practices für die Verwendung beim Einsatz von Ansible Gewölbe. Allerdings haben wir einige dieser bisher ist es klug, zu wiederholen, diese Praxis.

  • ACL geschützt und nicht versionierte Dateien PasswortPasswort-Dateien dürfen nicht gespeichert werden, innerhalb von Versionskontrolle Systemen wie z.B. GIT. Darüber hinaus stellen Sie sicher, dass nur die richtigen Benutzer Zugriff auf die Passwort-Datei.
  • Separate Gewölbeder Regel, viele verschiedene Umgebungen im Einsatz sind. Daher ist es am besten trennen Sie die erforderlichen Anmeldeinformationen in die entsprechenden Depots.
  • Reguläre Datei und die variable Kennwort-EingabeBei Passwort wiederverwenden oder Undichtigkeiten, ist es am besten, regelmäßig rekey die Passwörter in Verwendung zu begrenzen Exposition.

Fazit

Wie bei jeder automation-system, es ist sehr wichtig, dass Geheimnisse sind ordnungsgemäß geschützt und kontrolliert werden. Mit Ansible Gewölbe, das Verfahren ist einfach und flexibel. Unter Verwendung der besten Praktiken der oben beschriebenen Speicherung und Nutzung Geheimnisse in Ansible ist sicher und sicher.

Erweitern Ansible Vault sogar noch weiter und nehmen in diesem Prozess auf die nächste Ebene, können Sie Skripte verwenden, die Integration in das Passwort-management-Lösungen. Wie Sie sehen können, Ansible Vault ist ein ausgezeichneter Weg, um zu verwenden, sondert innerhalb Ansible playbooks.