21x9.org | System Administration | Home Automation | Smart Home
26.05.2024

Ansible Secrets mit Lookup Plugins

Wenn man Server mit Ansible verwaltet müssen früher oder später natürlich auch Kennwörter und andere Geheimnisse abgelegt werden. Mit ansible-vault1 bietet Ansible hier auch entsprechende Tools an, um diese Geheimnisse sicher zu speichern. Mit ansible-vault lassen sich entweder komplette Dateien oder einzelne Zeichenketten verschlüsseln. Zum Entschlüsseln muss entweder ein Kennwort für den Vault in einer Datei hinterlegt, oder bei der Ausführung von Ansible manuell angegeben werden.

Gerade wenn man von der Möglichkeit Gebrauch macht, eine Datei vollständig zu verschlüsseln, besteht natürlich die Gefahr dass man diese versehentlich unverschlüsselt z.B. in ein Versionskontrollrepository eincheckt, denn um die Datei zu erweitern, muss man diese natürlich jeweils erst entschlüsseln. Verschlüsselt man nur die zu schützenden Zeichenketten, ist dieses Risiko zwar deutlich minimiert, dafür ist es relativ umständlich, bei Bedarf wieder an den Klartext zu kommen.

Je nachdem wie die Aufgaben in einem Projekt oder Unternehmen verteilt sind, möchte man vielleicht auch nicht, dass alle MItarbeiter die mit Ansible arbeiten, auf alle Geheimnisse im Vault zugreifen können. Hier könnte man zwar mit unterschiedlichen Vaults für unterschiedliche Aufgabenbereiche agieren, muss dann aber natürlich auch unterschiedliche Kennwörter zum Entsperren der jeweiligen Vaults nutzen, was es zumindest erschwert, alle Playbooks/Roles gemeinsam ausführen zu lassen. Auch wenn Werte dynamisch geändert, oder oft neue Werte hinzugefügt werden müssen, oder das Team so groß ist, dass konkurrierende Schreibzugriffe wahrscheinlich werden, ist ein Vault nicht die schönste Option.

Abhilfe schaffen hier Lookup-Plugins. Mit diesen lassen sich z.B. externe Dienste wie Bitwarden Secrets Manager2. Entweder schreibt man sich das Lookup-Plugin selbst, oder schaut, was ansible-galaxy3 so zu bieten hat, z.B. community.general.bitwarden_secrets_manager_lookup4.

Anstelle die benötigten Variablen in eine YAML-Datei zu schreiben und diese ggf. mit ansible-vault zu verschlüsseln, kann man nun einfach das Lookup-Plugin die notwendigen Werte zur Laufzeit auslesen lassen. Im Bitwarden Secrets Manager erhält jeder Wert eine eindeutige ID, die man im Lookup-Plugin angibt: {{ lookup("community.general.bitwarden_secrets_manager", "2bc23e48-4932-40de-a047-5524b7ddc972").value }}

Der Wert wird dann Automatisch abgefragt, wenn das Playbook ausgeführt wird.


  1. https://docs.ansible.com/ansible/latest/vault_guide/index.html ↩

  2. https://bitwarden.com/products/secrets-manager/ ↩

  3. https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html ↩

  4. https://docs.ansible.com/ansible/latest/collections/community/general/bitwarden_secrets_manager_lookup.html ↩

Tags: ansible ansible-vault ansible-galaxy bitwarden secrets manager

Mehr

  • Ansible: Best Practice
  • Ansible: Zusammenhängende Konfiguration über mehrere Server
  • Serververwaltung mit Ansible

Tags

ansible ansible-vault ansible-galaxy bitwarden secrets manager

Archiv

  • Mar 2025 (2)
  • May 2024 (2)
  • Oct 2023 (1)
  • Aug 2023 (5)
  • Jul 2023 (31)

  • Ältere Einträge (95)

Feeds

Atom 1.0 RSS JSON
  • Datenschutz
  • Impressum
  • Archiv