Doof ist es, wenn man zwar schon schön die Daten und den Code im Git getrennt hat, aber dann Kennwörter im Klaretxt in Hierra ablegt und somit unsicher sind.

In Hierra liegen aktuell unverschlüsselt Key/Values in der Form:

profile::zabbix::agent::psk: geheimeskennwort12345

Grundsätzlich ist der Ablauf wie folgt:

Der Puppet-Server erhält ein Schlüsselpaar (Privater- und öffentlicher Schlüssel) für die asymetrische Verschlüsselung. Mit dem öffentlichen Schlüssel kann jeder Daten verschlüsseln. Der Puppet-Server selbst, mit dem privaten Schlüssel, kann die verschlüsselten Daten dann auch entschlüsseln und so letztlich dann auch den anfragenden Puppet-Clients zur Verfügung stellen.

Dazu das Paket hiera-eyaml auf dem Puppet-Server installieren, nach /etc/puppetlabs/puppet wechseln und

eyaml createkeys

ausführen. Die erzeugten Keys mit chmod/chown dem puppet-User geben mit +r.

Jetzt den öffentlichen Key nach … auf dem lokalen Linux-PC ablegen:

~/keys/public_key.pkcs7.pem

Jetzt ebenso hiera-eyaml installieren.

Hier jetzt der konkrete Workflow:

Lokaler User auf seiner lokalen Workstation und im Besitz des nur öffentlichen! Schlüssels, erzeugt verschlüsselte Werte für Hierra mit folgendem Befehl:

eyaml encrypt -s „geheimeskennwort12345“

string: ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEwDQYJKoZIhvcNAQEBBQAEggEAdTjm3C78YldhS8JKLpQx++obAuskJQMsaNfnB8p87McccrX5mZguunSuOF8D1dTFrb6xn7XVBPLIzAwI/3N70+0yy4L3DpAqsbuhwb4YPTnUaU5obkLzz81ECrJ6VButXwFm9ZxFDUm5n3kkfLJw6ccA36+i8aO6o/v/GreGSgwYdgHftKgIvHoIH85HceGNc4e5AvtZHMfpEEfhBM52wz50RS9U7EjkyO9ra5kZ3wvE8jvucPcD7ogVxJ9VmijgUIl1Ao+S51z7PeNrmC5U6FniUsZypkfHovNy7dDWQPv3tyPvudL9BI4PJVhygSNpZwYrFGKG312Vy/NpfXhyJzBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCIAl/RBKV69LNJ9drPR9QqgCB2P3eORh2Wx8fA3YToQQdFz1ZWAlwdS6iSR/Z1Zh3HvQ==]

Der gesamte String kann jetzt im Hierra-File wie folgt eingetragen werden:

profile::zabbix::agent::psk: ENC[PKCS7,MIIBiQYJKoZIh………………….

Einzig, dass sich Puppet/Hierra für encrypted-yaml interessiert, braucht es in der zentralen hierra.yaml-Datei im control-Repo noch folgende Settings:

lookup_key: eyaml_lookup_key
options:
pkcs7_private_key: /etc/puppetlabs/puppet/keys/private_key.pkcs7.pem
pkcs7_public_key: /etc/puppetlabs/puppet/keys/public_key.pkcs7.pem

Categories: Blog