UMC: Zugriff für die Benutzer auf eigenen Account

umc
german
ucs-4-2

#1

Hallo, wie realisiere ich es, dass ein Nutzer Zugriff in der UMC auf den eigenen Account erhält (z.B. um Mail Weiterleitungen einzurichten)?


#2

Moin,

das ist nicht ganz trivial, aber möglich. Grundsätzlich gilt es, bei zwei unterschiedlichen Programmen Berechtigungen anzupassen:

  1. Beim LDAP-Server. Hier wird über ACLs (access control lists) festgelegt, welcher angemeldete Benutzer welche Objekte und Attribute verändern darf.
  2. 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:

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


User für Userverwaltung