Kann ein Puppenagent eine Marionettendatei vom Meister erhalten?

8

Mein Puppenmeister enthält einige sensible Dateien. Ich möchte, dass jeder Marionettenagent nur auf die Dateien zugreifen kann, die für diesen bestimmten Agenten von Interesse sind. Mit anderen Worten:

  • Führt der Puppet-Agent seinen Katalog aus und fordert den Master immer dann auf, wenn er auf eine "Datei" - oder "Vorlage" -Funktion oder einen "source => 'puppet: /// ..." "- Parameter stößt angegebene Datei, und der Master stellt es nur ohne Überprüfung zur Verfügung? Das wäre schlecht. Wenn ein Agent kompromittiert wurde, könnte er den Master nach einer beliebigen Datei auf dem Master fragen, auch nach Dateien, die nur für andere Agenten bestimmt sind.
  • Oder überprüft der Master irgendwie, ob der Katalog des Agenten diesen bestimmten Agenten wirklich autorisiert, diese bestimmte Datei abzurufen?

Ich weiß nicht, ob es wichtig ist, aber ich fahre Passagier (und alle meine Agenten und Master sind 2.7.6 von Squeeze-Backports).

Antonis Christofides
quelle

Antworten:

3

Die Dokumentation für den Puppet File Server sollte in der Lage sein, die meisten Ihrer Fragen abzudecken. Siehe insbesondere den Abschnitt Sicherheit .

Zuerst eine Notiz. Wenn Sie Autosign aktiviert haben, ist so ziemlich jede angebotene Sicherheit umstritten. Sie sollten jedes Zertifikat überprüfen. Da die von Ihnen konfigurierten Sicherheitseinstellungen auf dem Hostnamen / Zertifikatsnamen oder einem regulären Ausdruck basieren, würde die Aktivierung von Autosign möglicherweise bedeuten, dass jedes nicht vertrauenswürdige System einfach ein Zertifikat für einen Namen anfordern kann, der einem Muster entspricht, das Zugriff auf geheime Dateien hat.

Standardmäßig ist alles in den speziellen Plugins und Modulen, auf dem Dateiserver bereitgestellt werden, für jeden Client verfügbar. Dies kann jedoch bis zu einem gewissen Grad durch die Konfiguration gesteuert werden.

Sie können auch benutzerdefinierte "Halterungen" einrichten, die auf bestimmte Positionen verweisen. In der Dokumentation finden Sie ein Beispiel zum Erstellen eines [privaten] Mount für die Verteilung privater SSH-Schlüssel. Der Hostname wird als Teil des Mount-Pfads verwendet, sodass ein bestimmter Host nur Dateien sehen kann, die zu ihm gehören.

Zoredache
quelle
Ich sehe keine wesentliche Hilfe in der Dokumentation. Der Sicherheitsabschnitt besagt lediglich, dass Sie Zulassen und Verweigern verwenden können. Es gibt keine Implikation dafür, dass nicht alle Agenten auf den privaten Mount zugreifen können. Und keine Erwähnung, wie file (), template () und extlookup () funktionieren.
Antonis Christofides
0

Ich habe keine harten Daten dazu. Nach dem, was ich hier und da gelesen habe, habe ich jedoch das Gefühl, dass jeder Agent jede Datei vom Master erhalten kann, wenn sich diese Datei im Puppet-Dateiserverbaum befindet und die Konfiguration des Puppet-Dateiservers dem Agenten den Zugriff auf den Baum ermöglicht. Ich habe auch das Gefühl, dass die Funktionen file (), template () und extlookup () auf dem Master ausgeführt werden, während er die Konfiguration des Agenten kompiliert, bevor er an den Agenten gesendet wird.

Daher sollte es einigermaßen sicher sein, vertrauliche Dateien außerhalb des Puppet-Dateiserverbaums zu speichern und mit file () darauf zuzugreifen. Auf diese Weise sollten sie nur dem Agenten zugänglich sein, für den sie bestimmt sind.

Antonis Christofides
quelle
0

"Wenn Sie wichtige Dateien nicht auf einem Puppenspielserver speichern möchten, was schlagen Sie stattdessen vor?"

Ich denke, ein Puppenbibliothekar kann in diesem Fall vielleicht helfen. Dabei erstellt man eine für einen Kunden spezifische Puppendatei und wendet sie bei Bedarf auf einen Kunden an (vielleicht sogar ohne einen Puppenmeister).

Ein typisches Szenario könnte also sein, in die Box zu ssh, eine Puppendatei von einem bekannten sicheren Remote- oder lokalen Speicherort zu holen und damit alle abhängigen Module (und / oder Konfigurationsdateien) zu installieren, bevor ein manueller Puppet-Lauf ausgelöst wird. Ich nehme an, Sie können Automatisieren Sie diese Aufgaben einfach mit Capistrano oder ähnlichen Tools.

Chux Uzoeto
quelle
-1

Solange diese Datei nur in einem 'Knoten' definiert ist, sollte es Ihnen gut gehen, ein anderer 'Knoten' kann diese Datei nicht anfordern, da sie für ihn nicht existiert.

Im Allgemeinen ist es jedoch keine gute Idee, "geschützte" Dateien auf einem Puppet-Server zu speichern.

Hoffe das hilft!

Jidar
quelle
Was schlagen Sie stattdessen vor, wenn Sie wichtige Dateien nicht auf einem Puppet-Server speichern möchten?
Zoredache
2
-1; Bei ordnungsgemäßem Protokollbetrieb versucht ein Knoten nicht, nach etwas zu suchen, das nicht für ihn definiert ist. In der Praxis kann ich um alles bitten, wenn ich ein gültiges Zertifikat habe und die Standardberechtigungen in /etc/puppet/auth.confnicht geändert wurden.
Jeff Ferland