Da ich persönlich eher zu den faulen Menschen gehöre und sich bestimmt jeder Admin auch dazu zählen kann, will ich in diesem Blogpost darauf eingehen wie man zumindest die Aufgabe Monitoring ein wenig auf fleißige Kollegen oder auch Azubis und Praktikanten verschieben kann. Natürlich möchte man sich im Nachhinein nicht mehr Arbeit gemacht haben, indem man Fehlersuche betreiben muss, daher ist mein Ansatz: graphische Administration und eingeschränkte Berechtigungen.
Unser Werkzeug für graphische Administration LConf dürfte mittlerweile wohl bekannt sein. Wem dieses gar nichts sagt kann sich ja mal das Webinar anschauen. Kurz zusammengefasst verwendet LConf ein LDAP-Backend, bietet Vererbung und Templates sowie ein hübsches Frontend.
Gebe ich nun dem Azubi eine kurze Einweisung und volle administrative Rechte, sehe ich mich schon statt beim Feierabend-Bier beim Restore und anschließendem „Hätte ich’s bloß gleich selbst gemacht“ und „Wenn etwas richtig gemacht werden soll, muss man es selber machen“. Und damit sich niemand diskriminiert fühlt, gilt das gleiche natürlich für alle anderen Kollegen wie Windows- oder Netzwerk-Admins. 😉
Diese Grundhaltung höre ich doch des öfteren bei Kunden und Schulungsteilnehmern, daher müssen also eingeschränkte Rechte her und dies ermöglicht LDAP zum Glück leicht mittels ACL. Voraussetzung hierfür ist ein Benutzer oder eine Gruppe innerhalb des LDAP. Da der LConf-Connection-Manager mir erlaubt eine Verbindung zu erstellen und dann einer Gruppe Zugriff auf diese zu erlauben, reicht mir ein Benutzer.
Diesen lege ich mir folgendermaßen an:
- Passwort-Hash generieren:
# slappasswd
New password: awesome
Re-enter new password: awesome
{SSHA}ZOmXcrADeKGkthMlJ3PZwKbyM8bnbP5t - Datei user.ldif für den Import bauen:
dn: cn=myuser,ou=users,dc=icinga,dc=lab
objectClass: organizationalPerson
cn: myuser
sn: User
description: My User
userPassword: {SSHA}ZOmXcrADeKGkthMlJ3PZwKbyM8bnbP5t - Benutzer mit administrativem Account einspielen:
ldapadd -x -h localhost -D cn=admin,dc=icinga,dc=lab -W -f user.ldif
Nun muss ich mir überlegen wie meine Grundstruktur aussieht und worauf ich meinen Benutzer berechtigen will. Mein Ansatz ist hierbei dem Kollegen auf einen Teilbaum gemäß seiner Zuständigkeit schreibend zu berechtigen und Templates sowie grundlegende Objekte lesend zur Verfügung zu stellen. Hierfür müssen die Standard-Zugriffsregeln teilweise gelöscht werden bevor die neuen gesetzt werden, da diese in der gespeicherten Reihenfolge abgearbeitet werden.
Die Vorgehensweise ist hierbei:
- Datei access.xml für Import bauen:
changetype: modify
dn: olcDatabase={1}hdb,cn=config
delete: olcAccess
olcAccess: to dn.base="" by * read
-
delete: olcAccess
olcAccess: to * by self write by dn="cn=admin,dc=icinga,dc=lab" write by * read
-
add: olcAccess
olcAccess: to dn.base="dc=icinga,dc=lab" by users read
-
add: olcAccess
olcAccess: to dn.base="ou=LConf,dc=icinga,dc=lab" by users read
-
add: olcAccess
olcAccess: to dn.base="ou=IcingaConfig,ou=LConf,dc=icinga,dc=lab" by users read
-
add: olcAccess
olcAccess: to dn.subtree="ou=global,ou=IcingaConfig,ou=LConf,dc=icinga,dc=lab" by users read
-
add: olcAccess
olcAccess: to dn.subtree="ou=Templates,ou=LConf,dc=icinga,dc=lab" by users read
-
add: olcAccess
olcAccess: to dn.subtree="ou=myconfig,ou=IcingaConfig,ou=LConf,dc=icinga,dc=lab" by dn="cn=myuser,ou=users,dc=icinga,dc=lab" write
-
add: olcAccess
olcAccess: to * by self write by dn="cn=admin,dc=icinga,dc=lab" write - Importieren unter Nutzung der ldapi-Schnittstelle:
ldapmodify -Y EXTERNAL -H ldapi:/// -f access.ldif
Nun noch in dem Wissen, dass die Kollegen nicht so leicht was kaputt machen können, die Verbindung im LConf-Frontend angelegt, die Kollegen berechtigt und eine Einweisung im Wiki hinterlegt. Danach heißt es dann heim zum Feierabend-Bier während die fleißigen Kollegen mit den neuen Rechten Hosts und Services ins Monitoring aufnehmen! 😉
In diesem Sinne viel Erfolg beim Verteilen der Arbeit und natürlich Prost!
0 Kommentare