Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:ldap_c7:tecbind [17.07.2015 12:04. ] – [Zugriffsrechte des technischen User beschränken] djangocentos:ldap_c7:tecbind [22.07.2019 15:03. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 288: Zeile 288:
 Bevor wir nun mit Hilfe einer LDIF-Datei die Benutzerrechte anpassen, machen wir uns erst einmal Gedanken, wie diese nun genau abgestuft sein sollen. Bevor wir nun mit Hilfe einer LDIF-Datei die Benutzerrechte anpassen, machen wir uns erst einmal Gedanken, wie diese nun genau abgestuft sein sollen.
  
 +=== Attribute: „Passwort“ ===
 +Folgende Felder im DIT sollen für einzelne Benutzer mit unterschiedlicher Berechtigung entweder //lesend//, //schreibend// oder //nicht// zugegriffen werden, können: 
 +  * **userPassword**, 
 +  * **shadowLastChange**, 
 +  * **shadowMax** und
 +  * **shadowWarning**.
 +
 +Folgende Tabelle definiert die unterschiedlichen Berechtigungsklassen.
 +
 +^ **Zugriffsformulierung**     ^ **Benutzer**     ^ **Zugriffsberechtigung**   ^
 +| by self write | self (selbst) |schreiben  |
 +| by dn=„cn=Manager,dc=nausch,dc=org“ write | Manager |schreiben  |
 +| by dn=„cn=Technischeruser,dc=nausch,dc=org“ read | Technischeruser |lesen  |
 +| by anonymous auth | anonymous | authentifizieren  |
 +| by * none | //alle anderen//  |  **keinerlei Rechte** 
 +
 +Für die Konfiguration benötigen wir hierzu eine **olc**((**o**n-**l**ine **c**onfiguration))-Directive, die für obige Tabelle wie folgt aussieht (zur besseren Lesbarkeit hier umgebrochen!).
 +
 +  olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowMax,shadowWarning by self 
 +     write by dn="cn=Manager,dc=nausch,dc=org" 
 +     write by dn="cn=Technischeruser,dc=nausch,dc=org" 
 +     read by anonymous auth by * none
 +
 +
 +=== Zugriff auf „Manager“ ===
 +Auf den Eintrag "cn=Manager,dc=nausch,dc=org" sollen folgende Berechtigungen gelten.
 +
 +^ **Zugriffsformulierung**     ^ **Benutzer**      ^ **Zugriffsberechtigung**   ^
 +| by self write        | self (selbst)    | schreiben  |
 +| by * none                | //alle anderen//  |  **keinerlei Rechte** 
 +
 +Für die Konfiguration benötigen wir hierzu natürlich auch eine **olc**((**o**n-**l**ine **c**onfiguration))-Directive, die für obige Tabelle wie folgt aussieht.
 +
 +  olcAccess: {1}to dn="cn=Manager,dc=nausch,dc=org" by self write by * none
 +
 +=== Zugriff auf „Technischeruser“ ===
 +Auf den Eintrag "cn=Technischeruser,dc=nausch,dc=org" sollen folgende Berechtigungen gelten.
 +
 +^ **Zugriffsformulierung**     ^ **Benutzer**      ^ **Zugriffsberechtigung**   ^
 +| by self write        | self (selbst)    | schreiben  |
 +| by dn=„cn=Manager,dc=nausch,dc=org“ write        | Manager    | schreiben  |
 +| by * none                | //alle anderen//  |  **keinerlei Rechte** 
 +
 +Für die Konfiguration benötigen wir hierzu eine **olc**((**o**n-**l**ine **c**onfiguration))-Directive, die für obige Tabelle wie folgt aussieht (zur besseren Lesbarkeit hier umgebrochen!).
 +
 +  olcAccess: {2}to dn="cn=Technischeruser,dc=nausch,dc=org" by self 
 +             write by dn="cn=Manager,dc=nausch,dc=org" 
 +             write by * none
 +
 +
 +=== Zugriff auf „Group“ der Domäne ===
 +Für die Gruppeneinträge unserer Domäne "dc=nausch,dc=org" sollen folgende Berechtigungen gelten.
 +
 +^ **Zugriffsformulierung**     ^ **Benutzer**     ^ **Zugriffsberechtigung**   ^
 +| by self write | self (selbst) |schreiben  |
 +| by dn=„cn=Manager,dc=nausch,dc=org“ write | Manager |schreiben  |
 +| by dn=„cn=Technischeruser,dc=nausch,dc=org“ read | Technischeruser |lesen  |
 +| by dn.exact,expand=„uid=$1,ou=Group,dc=nausch,dc=org“ read | //(Gruppen)mitglieder// | authentifizieren  |
 +| by * none | //alle anderen//  |  **keinerlei Rechte** 
 +
 +Für die Konfiguration benötigen wir hierzu auch noch eine **olc**((**o**n-**l**ine **c**onfiguration))-Directive, die für obige Tabelle wie folgt aussieht (zur besseren Lesbarkeit hier umgebrochen!).
 +  olcAccess: {3}to dn.regex="cn=([^,]+),ou=Group,dc=nausch,dc=org" by self 
 +             write by dn="cn=Manager,dc=nausch,dc=org" 
 +             write by dn="cn=Technischeruser,dc=nausch,dc=org" 
 +             read by dn.exact,expand="uid=$1,ou=Group,dc=nausch,dc=org" read by * none
 +
 +=== Zugriff auf „People“ der Domäne ===
 +Für die Personeneinträge unserer Domäne "dc=nausch,dc=org" sollen folgende Berechtigungen gelten.
 +
 +^ **Zugriffsformulierung**     ^ **Benutzer**     ^ **Zugriffsberechtigung**   ^
 +| by self write | self (selbst) |schreiben  |
 +| by dn=„cn=Manager,dc=nausch,dc=org“ write | Manager |schreiben  |
 +| by dn=„cn=Technischeruser,dc=nausch,dc=org“ read | Technischeruser |lesen  |
 +| by dn.exact,expand=„uid=$1,ou=People,dc=nausch,dc=org“ read | //Benutzer// | authentifizieren  |
 +| by * none | //alle anderen//  |  **keinerlei Rechte** 
 +
 +Für die Konfiguration benötigen wir hierzu auch noch eine **olc**((**o**n-**l**ine **c**onfiguration))-Directive, die für obige Tabelle wie folgt aussieht (zur besseren Lesbarkeit hier umgebrochen!).
 +  olcAccess: {4}to dn.regex="cn=([^,]+),ou=People,dc=nausch,dc=org" by self 
 +             write by dn="cn=Manager,dc=nausch,dc=org" 
 +             write by dn="cn=Technischeruser,dc=nausch,dc=org" 
 +             read by dn.exact,expand="uid=$1,ou=People,dc=nausch,dc=org" read by * none
 +
 +=== Zugriff auf alle anderen Felder (ohne gesonderte Berechtigungen) der Domäne ===
 +Auf alle sonstigen Felder im DIT sollen folgende Berechtigungen gelten.
 +
 +^ **Zugriffsformulierung**     ^ **Benutzer**     ^ **Zugriffsberechtigung**   ^
 +| by self write | self (selbst) |schreiben  |
 +| by dn=„cn=Manager,dc=nausch,dc=org“ write | Manager |schreiben  |
 +| by * none | //alle anderen//  |  lesen  | 
 +
 +Für die Konfiguration benötigen wir hierzu auch noch unseren letzten **olc**((**o**n-**l**ine **c**onfiguration))-Directive, die für obige Tabelle wie folgt aussieht.
 +  olcAccess: {5}to * by self write by dn.base="cn=Manager,dc=nausch,dc=org" write by * read
 +
 +==== Konfiguration ====
 +Somit ergibt sich für die Konfiguration der Berechtigungen ein e LDIF-Datei mit folgendem Inhalt.
 +   # vim /etc/openldap/ldif/cn\=config_acl.ldif
 +<file ldif /etc/openldap/ldif/cn\=config_acl.ldif># Django : 2015-07-17
 +# setzen unterschiedlicher Berechtigungen im DIT unseres OpenLDAP-Servers
 +# https://dokuwiki.nausch.org/doku.php/centos:ldap_c7:tecbind#zugriffsrechte_des_technischen_user_beschraenken
 +
 +dn: olcDatabase={2}hdb,cn=config
 +changetype: modify
 +replace: olcAccess
 +olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowMax,shadowWarning by self write by dn="cn=Manager,dc=nausch,dc=org" write by dn="cn=Technischeruser,dc=nausch,dc=org" read by anonymous auth by * none
 +olcAccess: {1}to dn="cn=Manager,dc=nausch,dc=org" by self write by * none
 +olcAccess: {2}to dn="cn=Technischeruser,dc=nausch,dc=org" by self write by dn="cn=Manager,dc=nausch,dc=org" write by * none
 +olcAccess: {3}to dn.regex="cn=([^,]+),ou=Group,dc=nausch,dc=org" by self write by dn="cn=Manager,dc=nausch,dc=org" write by dn="cn=Technischeruser,dc=nausch,dc=org" read by dn.exact,expand="uid=$1,ou=People,dc=nausch,dc=org" read by * none
 +olcAccess: {4}to dn.regex="uid=([^,]+),ou=People,dc=nausch,dc=org" by self write by dn="cn=Manager,dc=nausch,dc=org" write by dn="cn=Technischeruser,dc=nausch,dc=org" read by dn.exact,expand="uid=$1,ou=People,dc=nausch,dc=org" read by * none
 +olcAccess: {5}to * by self write by dn.base="cn=Manager,dc=nausch,dc=org" write by * read
 +
 +</file>
 +
 +Abschließend müssen wir nun nur noch mit nachfolgendem Befehl der Inhalt obiger LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers in dessen Konfiguration hinzufügen.
 +   # ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_acl.ldif
 +
 +  SASL/EXTERNAL authentication started
 +  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
 +  SASL SSF: 0
 +  modifying entry "olcDatabase={2}hdb,cn=config"
 + 
 +==== Abfragetest ====
 +Zum Schluss fragen wir nun noch ab, ob die Berechtigungen richtig gesetzt wurden.
 +   # ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config
 +
 +  Enter LDAP Password:
 +<code># extended LDIF
 +#
 +# LDAPv3
 +# base <olcDatabase={2}hdb,cn=config> with scope subtree
 +# filter: (objectclass=*)
 +# requesting: ALL
 +#
 +
 +# {2}hdb, config
 +dn: olcDatabase={2}hdb,cn=config
 +objectClass: olcDatabaseConfig
 +objectClass: olcHdbConfig
 +olcDatabase: {2}hdb
 +olcDbDirectory: /var/lib/ldap
 +olcSuffix: dc=nausch,dc=org
 +olcRootDN: cn=Manager,dc=nausch,dc=org
 +olcRootPW: {SSHA}lffku/uaiQjP2zloaLfDe1vEVcgnE3y9
 +olcDbIndex: objectClass eq,pres
 +olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
 +olcDbIndex: uidNumber,gidNumber,loginShell eq,pres
 +olcDbIndex: uid,memberUid eq,pres,sub
 +olcDbIndex: nisMapName,nisMapEntry eq,pres,sub
 +olcDbIndex: uniqueMember eq,pres
 +olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowMax,shadowWarning b
 + y self write by dn="cn=Manager,dc=nausch,dc=org" write by dn="cn=Technischer_
 + User,dc=nausch,dc=org" read by anonymous auth by * none
 +olcAccess: {1}to dn="cn=Manager,dc=nausch,dc=org" by self write by * none
 +olcAccess: {2}to dn="cn=Technischeruser,dc=nausch,dc=org" by self write by dn=
 + "cn=Manager,dc=nausch,dc=org" write by * none
 +olcAccess: {3}to dn.regex="cn=([^,]+),ou=Group,dc=nausch,dc=org" by self write
 +  by dn="cn=Manager,dc=nausch,dc=org" write by dn="cn=Technischer_User,dc=naus
 + ch,dc=org" read by dn.exact,expand="uid=$1,ou=People,dc=nausch,dc=org" read b
 + y * none
 +olcAccess: {4}to dn.regex="uid=([^,]+),ou=People,dc=nausch,dc=org" by self wri
 + te by dn="cn=Manager,dc=nausch,dc=org" write by dn="cn=Technischer_User,dc=na
 + usch,dc=org" read by dn.exact,expand="uid=$1,ou=People,dc=nausch,dc=org" read
 +  by * none
 +olcAccess: {5}to * by self write by dn.base="cn=Manager,dc=nausch,dc=org" writ
 + e by * read
 +
 +# search result
 +search: 2
 +result: 0 Success
 +
 +# numResponses: 2
 +# numEntries: 1</code>
 +
 +====== Links ======
 +  * **⇐ [[centos:ldap_c7:data|Zurück zum Kapitel "Datenerstbefüllung des OpenLDAP Servers unter CentOS 7.x"]]**
 +  * **⇒ [[centos:ldap_c7:clientauth|Weiter zum Kapitel " Client-Authentification am zentralen OpenLDAP Servers"]]**
 +  * **[[centos:ldap_c7:start|Zurück zum Kapitel >>OpenLDAP Server unter CentOS 7.x<<]]**
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
-FIXME 
  
  • centos/ldap_c7/tecbind.1437134648.txt.gz
  • Zuletzt geändert: 17.07.2015 12:04.
  • von django