Seite wählen

Passwörter im Puppet Master speichern mit trocla

von | Jun 14, 2013 | DevOps, Puppet

Sichere PasswörterIn meinen Puppet Installationen habe ich mir angewöhnt alles in Git zu Versionieren, sowohl die kleinsten Module, als auch die Site Konfiguration der einzelnen Nodes.
Das stellte mich vor das Problem, wie hinterlege ich hier Passwörter ohne sie in die Manifeste zu schreiben und später mit in der Versionskontrolle gespeichert zu haben – was unter Umständen ein Sicherheitsrisiko wäre, selbst bei der Verwendung von Hashes.
Was ich als Lösung für mich gefunden habe war trocla. Es handelt sich dabei um ein Ruby Gem und ein Puppetmodul, das die einfache Möglichkeit bereitstellt die Passwörter in einer eigenen Datei zu speichern, abseits der Manifeste. Um ein Passwort zu verwenden muss nur die Parser-Funktion trocla() im jeweiligen Manifest verwendet werden.

Funktionen

  • Speichert Passwörter in einer YAML Datei, als einfache Key-Values
  • Kann mehrere Hash-Typen und Plaintext speichern
  • Passwörter können bei Bedarf automatisch erstellt werden
  • Das Plaintext Passwort muss nicht gespeichert bleiben
  • Muss nur auf dem Puppetmaster installiert sein

Wie funktioniert das?

Grundsätzlich muss man nur das Ruby Gem installieren, Abhängigkeiten werden dadurch eigentlich automatisch installiert. Es ist allerdings hilfreich soweit möglich Betriebssystem Pakete zu benutzen, vor allem für ruby-bcrypt.

gem install trocla

Nach der Installation stellt das CLI commando „trocla“ bereit um direkt mit den gespeicherten Daten zu arbeiten.
Wichtig: Solange nichts konfiguriert ist werden die Daten in ‚/tmp/trocla.yaml‘ gespeichert!

create

Mit create wird ein Passwort mit einem bestimmten Typen erstellt, oder einfach ausgegeben wenn schon vorhanden.

trocla create myadminuser plain
trocla create global_root sha512crypt
trocla create mysql_root mysql

get

Liefert ein Passwort des bestimmten Typs zurück, setzt aber voraus dass der Wert schon vorhanden ist.
trocla get mysql_root mysql

set

Setzt ein bestimmtes Passwort mit einem selbst festgelegten Wert.

trocla set user1 plain     # (interaktive eingabe)
trocla set --password supersicher123 user1 plain

reset

Setzt einen Passwort-Hash zurück und erzeugt einen neuen aus dem Plain Passwort.

trocla reset global_root sha512crypt

delete

Löscht ein Passwort aus dem Speicher, auch praktisch dafür um Plaintext Passwort zu löschen wenn man nur noch die Hashes braucht.

trocla delete global_root plain

Konfiguration mit Puppet

Als Konfigurationsdatei dient eine weitere YAML Datei, die Standardwerte sind unter default_config.yaml zu finden.
Das Puppetmodul sorgt dafür dass die Konfiguration und die Dateien auf dem Master automatisch angelegt und geschützt werden. Dazu muss noch die Puppetklasse trocla::config für den Puppetmaster included werden.
Folgende Dateien werden erzeugt:

/etc/puppet/trocla_data.yaml
/etc/puppet/troclarc.yaml
/etc/troclarc.yaml -> /etc/puppet/troclarc.yaml

Durch die letzte Datei kann man mit dem CLI Tool auch mit den Passwörtern arbeiten.

Verwendung in Puppet

Die Verwendung in Puppet ist dabei relativ simpel.

user { 'myadmin':
    password => trocla("$name", 'sha512crypt'),
    ...
}
/* oder wenn das Passwort nicht erzeugt werden soll */
user { 'root':
    password => trocla_get('root', 'sha512crypt'),
    ...
}

Links

Hier noch ein paar Links zum Thema trocla:

Ein geniales Modul finde ich, Danke an @duritong!
Das Titelbild stammt von Paul O’Rear auf Flickr (CC BY-SA 2.0).

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema DevOps | Puppet

Kritischer Fehler in Puppet Version 7.29.0 und 8.5.0

Eine Warnung an alle Nutzer von Puppet, aber auch Foreman oder dem Icinga-Installer, die Version 7.29.0 und 8.5.0 von Puppet enthält einen kritischen Fehler, der die Erstellung eines Katalogs und somit die Anwendung der Konfiguration verhindert. Daher stellt bitte...

Sommer, Sonne, Software – Rückblick CIVO NAVIGATE 2023

Anfang Februar durfte ich nach Tampa, Florida reisen, um auf der IT-Konferenz Civo Navigate zu sprechen, die in diesem Rahmen zum ersten Mal stattfand. Mit Beiträgen rund um Kubernetes, Edge Computing, Machine Learning, DevOps, GitOps, Observability, Security und...

Schulungsnotebooks in neuem Gewand

In diesem Jahr konnten wir endlich wieder mehr Vor-Ort Trainings durchführen als in den vergangenen Jahren und sogar vereinzelte Inhouse-Trainings bei Kunden waren möglich. Bisher haben wir bei unseren Präsenztrainings oder auch -workshops auf Notebooks mit CentOS 7...

Ansible – Testing roles with Molecule

Ansible is a widely used and a powerful open-source configuration and deployment management tool. It can be used for simple repetitive daily tasks or complex application deployments, therefore Ansible is able to cover mostly any situation. If used in complex or...