Antworten:
Ich benutze Puppet und habe für jeden Schlüssel eine Klasse definiert, dann Klassen, die diese Klassen enthalten, um die "Gruppen" von Schlüsseln zu definieren, die ich habe (für uns sind es Menschen - also L1-Techniker, L2-Techniker, Manager, Entwickler - aber Sie kann DB-Server, Dateiserver, SVN-Server usw. ausführen. Dann haben die verschiedenen Maschinentypen ihre eigenen Manifeste, die definieren, welche dieser Gruppen Zugriff auf diesen Maschinentyp haben. Entwicklungsboxen haben also L1, L2 und Entwickler, Produktserver haben L1 und L2, sensible Server haben nur L2, diese Art der Sache. Das Hinzufügen einer neuen Maschine ist nur eine Frage der Entscheidung, zu welchen Klassen sie gehört, und des Hinzufügens einiger Zeilen hier und da, die wir in unseren neuen Maschineninbetriebnahmeverfahren dokumentiert haben.
Wir verwenden OpenLDAP zum Speichern von Benutzern:
Es ist stabil, einfach zu erweitern, verfügt über viele Dokumentations- und Integrationsfunktionen, daher empfehle ich es.
MIT Kerberos v5.
Kerberos ist ein sicheres, privilegiertes, ticketbasiertes System, das die Konzepte von Benutzern, Bereichen, Rollen, Maschinen usw. versteht. Sie authentifizieren sich zuerst mit einem Ticket-Granting-Ticket, das dann Servicetickets für Sie erhält, wenn Sie ein besondere Berechtigung / Anmeldung auf einem Computer. Sie können steuern, welche Principals sich mit zentral verwalteten ~ / .k5-Anmeldedateien bei welchen Konten anmelden können, möglicherweise über Puppet / cfengine. Die Konfigurationsbasiscomputer können ihre eigenen Principals / Schlüssel usw. haben, um die anderen Systeme automatisch aktualisieren zu können. Sie müssten das KDC auch physisch sichern und für einen oder zwei kritische Benutzer sperren, da Sie hier Principals usw. widerrufen.
Ich bin mir sicher, dass Ihre Implementierung sehr unterschiedlich sein wird, aber das Obige ist eine sehr umfassende Übersicht über das Setup, das wir früher ausgeführt haben.
Es ist ein komplexes System und erfordert möglicherweise eine drastische Änderung in Bezug auf Implementierungs- und Sicherheitsverfahren. Nach meiner Erfahrung wird das System jedoch, sobald es installiert und korrekt konfiguriert ist, transparent und belastet die verschiedenen beteiligten Teams erheblich weniger.
Mehr dazu lesen Sie hier:
Dies kann Ihre Aufgabe ein wenig vereinfachen: Verwenden Sie ssh-copy-id [-i [identity_file]] [user@]master-host
diese Option, um von jedem dieser Server eine Verbindung zu einem dieser Server herzustellen. Verwenden Sie clusterssh
diese Option , um diesen Befehl allen Servern gleichzeitig zu erteilen. Kopieren Sie dann die authorized_keys
Schlüsseldatei vom Master-Host auf alle anderen Hosts: z . B. mit clusterssh
und scp
. Das macht den Trick einfach, schnell, nett und ... einmal :)
Möglicherweise interessieren Sie sich für das ssh-agent-Konzept, bei dem eine ssh-client-Verbindung "zurück" fragen kann, obwohl die ssh-Verbindung (en) verwendet wurden, um über Anmeldeinformationen zum aktuellen Speicherort zu gelangen.
Es ist sehr praktisch.