Puppet und hiera-eyaml
Puppet 5 unterstützt jetzt offiziell hiera-eyaml direkt ohne, dass zusätzliche Rubygems installiert werden müssen.
Grundsätzlich funktioniert hiera-eyaml in etwa so:
Grundsätzlich funktioniert hiera-eyaml in etwa so:
- Der Puppet Coder verschlüsselt die geheimen Daten mit dem öffentlichen Schlüssel und speichert dies mit den Hiera Daten
- Der Puppet-Server entschlüsselt diese Daten dann transparent via Lookup/hiera mit dem privaten Schlüssel beim Kompilieren vom Katalog
Aber ich sehe folgende Probleme:
- in der Doku habe ich keine Hinweise gefunden, wie z.B. im Falle dass der private Schlüssel nicht mehr sicher ist alle Daten auf einfache Art und weise neu verschlüsselt werden können.
- Unklar auch, wie man den privaten Schüssel regelmässig austauschen könnte.
- Die Daten werden auf dem Puppet-Server entschlüsselt und im Katalog unverschlüsselt gespeichert und so an den Puppet-Agent übermittelt.
- Der Puppet-Agent speichert den Katalog standardmässig auf dem System - inklusive den unverschlüsselten Daten.
- Der vom Puppet-Agent generierte Report kann wiederum diese unverschlüsselten Daten enthalten - dieser wird vim Puppet-Agent auch gespeichert und an den Puppet-Server zurückgeschickt.
- Der Puppet-Server speichert diesen Report dann vermutlich in der PuppetDB (oder als yaml/json im Dateisystem, ...)
- Wenn eine Puppet-Server mit PuppetDB+storedconfigs konfiguriert ist, wird der Katalog inkl. unverschüsselten Daten in der PuppetDB gespeichert - somit hat wer auf die PuppetDB Zugriff hat, Zugriff auf alle unverschlüsselten Daten (und z.B. auch via Backup-Dumps, ...)
- Die Hiera-Daten werden meistens in einem Versionsverwaltungs-Tool gespeichert. Wenn der private Schlüssel einmal bekannt war, muss eigentlich die ganze History umgeschrieben werden - was dann aber entgegen der Idee vom Versionsverwaltungs-Tool läuft.