Hallo, wie realisiere ich es, dass ein Nutzer Zugriff in der UMC auf den eigenen Account erhält (z.B. um Mail Weiterleitungen einzurichten)?
Moin,
das ist nicht ganz trivial, aber möglich. Grundsätzlich gilt es, bei zwei unterschiedlichen Programmen Berechtigungen anzupassen:
- Beim LDAP-Server. Hier wird über ACLs (access control lists) festgelegt, welcher angemeldete Benutzer welche Objekte und Attribute verändern darf.
- In der UM (Univention Management Console, dem webbasierten Administrationsfrontend). Hier dürfen Benutzer standardmäßig auf keines der Module zugreifen, und man muss das über eine Policy erlauben.
Univention selber hat allgemeine Dokumentation zu beiden Themen. Ich empfehle, dass Sie die einmal durchlesen, bevor wir weitermachen:
- 3.4.5. Access control for the LDAP directory beschreibt den ersten Punkt, die Anpassung des LDAP-Servers
- 4.9 Delegated administration in the UMC beschreibt die Anpassung der UMC
Jetzt konkret als Anleitung.
Eine passende LDAP-ACL
Eine ACL kann z.B. so aussehen:
access to dn.regex="^uid=[^,]+,cn=users,dc=mbu-test,dc=intranet$" attrs=cn,sn,givenName
by self write
by * +0 break
Diese betrifft den Zugriff auf alle Objekte unterhalb von cn=users,dc=mbu-test,dc=intranet
, die mit uid=
beginnen. Hier wird der Zugriff nur auf bestimmte Attribute gesetzt: cn
(common name = Vorname Nachname), sn
(surname = Nachname), givenName
(Vorname).
Das by self write
heißt: wenn ich mit einem User-Objekt (z.B. uid=mbunkus,cn=users,dc=mbu-test,dc=intranet
) am LDAP angemeldet bin, so darf ich in dem Moment die drei erwähnten Attribute cn,sn,givenName
vom selben Objekt verändern, mit dem ich angemeldet bin. Die zweite Zeile sagt dann einfach »mach mit den anderen ACLs weiter«.
Anpassung der LDAP-Server-Konfiguration
Wo muss diese ACL nun hin? In die Datei /etc/ldap/slapd.conf
. Diese wird aber aus den Templates in /etc/univention/templates/files/etc/slapd.conf.d/
automatisch erzeugt, sodass manuelle Änderungen an ihr innerhalb kurzer Zeit wieder überschrieben würden.
Also müssen wir einen eigenen Vorlagenschnippsel erstellen, wie es ja auch im Handbuch in Abschnitt 3.4.5 erwähnt wird. Es ist dabei zu beachten, dass die Reihenfolge der Templateschnippsel wichtig ist. Das Handbuch sagt, dass eigene Anpassungen zwischen den Dateien 60univention-ldap-server_acl-master
und 70univention-ldap-server_acl-master-end
angelegt werden müssen. Wir nennen unsere Datei daher /etc/univention/templates/files/etc/slapd.conf.d/65custom_user_self_modification
und geben ihr folgenden Inhalt:
access to dn.regex="^uid=[^,]+,cn=users,@%@ldap/base@%@$" attrs=cn,sn,givenName
by self write
by * +0 break
Damit diese Template-Datei überhaupt verarbeitet wird, müssen wir sie dem System bekanntmachen. Dazu gibt’s die Dateien in /etc/univention/templates/info
. Hier legen wir ebenfalls eine eigene an, z.B. /etc/univention/templates/info/custom_user_self_modification.info
(die Dateiendung ist wichtig!). Der Inhalt sieht wie folgt aus:
Type: multifile
Multifile: etc/ldap/slapd.conf
Type: subfile
Multifile: etc/ldap/slapd.conf
Subfile: etc/ldap/slapd.conf.d/65custom_user_self_modification
Anschließend lassen wir die Konfigurationsdatei neu erzeugen:
ucr commit /etc/ldap/slapd.conf
Vergewissern Sie sich anschließend, dass unsere ACL auch wirklich in der Datei auftaucht. Tut sie das? Super, dann einmal den LDAP-Server neu starten:
systemctl restart slapd
Zugriff auf das User-Modul in der UMC
Wenn ich mich an der UMC als Nicht-Administrator anmelde, so habe ich normalerweise auf kein einziges Modul Zugriff. Das kann ich aber über eine Policy ändern, in der der Zugriff auf das User-Modul erlaubt wird. Anschließend muss ich nur noch die Policy mit z.B. dem users
-Container verknüpfen, und schon gilt die für alle Benutzer im users
-Container.
Melden Sie sich also mit Administratorrechten in der UMC an und öffnen Sie das Modul »Domain« → »Policies«. Hier legen Sie ein neues Objekt vom Typ »UMC« an und nennen es z.B. udm-users
.
In der Policy wählen Sie nun in der Drop-Down-Box »List of allowed UMC operation sets« den Punkt UDM - Users (udm-users)
aus und speichern die Policy anschließend.
Weiter geht’s mit dem Zuweisen der Policy zum Container. Dazu in der UMC das Modul »Domain« → »LDAP directory« öffnen. Hier nun im Baum ein Rechtsklick auf users
und aus dem Menü Edit
auswählen.
Links wählen Sie den Tab »Policies« aus. Bei der »Policy: UMC« wählen Sie nun die eben angelegte cn=udm-users,cn=policies,…
aus und speichern den Container.
Testen
Nun bleibt nur noch, das Ganze zu testen. Melden Sie sich an der UMC als Benutzer ohne Admin-Rechte an. Versuchen Sie, beim eigenen Benutzer z.B. das Vornamensattribut zu verändern. Das sollte klappen. Versuchen Sie nun, wieder beim eigenen Benutzer, ein anderes Attribut wie z.B. »Organisation« zu ändern — das darf nicht klappen. Als letztes versuchen Sie, bei einem anderen Benutzer das Vornamensattribut zu verändern — das darf nämlich auch nicht gehen.
Andere Attribute
Sie können die erlaubten Attribute natürlich ändern. Dazu passen Sie im Template-Schnippsel die Liste in attrs=…
an, erzeugen die Konfiguration mit ucr
und starten den LDAP-Server neu.
Keine gute Idee wäre es, die Liste attrs=…
komplett zu entfernen. Dann dürfte der Benutzer plötzlich sicherheitsrelevante Dinge wie die User-ID oder Gruppenmitgliedschaft ändern — also schön restriktiv bleiben.
Wenn Sie auch DC Backups im Einsatz haben, so muss diese ACL-Erweiterung auch auf diesen installiert werden. Dazu gibt’s keinen Automatismus.
Gruß
mosu