Probleme mit der OpenLDAP-Konfiguration

471
Jsncrdnl

Ich habe einen LDAP-Server in einer Linux-Instanz mit AWS EC2 konfiguriert. Bisher habe ich LDAP und phpLDAPadmin erfolgreich für die Zusammenarbeit eingerichtet.

Ich habe Benutzer und Gruppen "Organisationseinheiten" erstellt. Ich habe Benutzer und Gruppen zu diesen "OUs" hinzugefügt. Jetzt möchte ich den "Users" -Mitgliedern einer "Group" auf bestimmte Teile meines LDAP-Baums zugreifen. Das konnte ich bisher noch nicht konfigurieren ...

Mein LDAP-Baum sieht so aus:

+--> dc=www,dc=website,dc=com (3) ---> cn=admin +--> ou=groups (4) | ---> cn=admin_users | ---> cn=app1_users | ---> cn=app2_users | ---> cn=basic_users +--> ou=users (3) | ---> cn=user1 | ---> cn=user2 | ---> cn=user3 

Nehmen wir an, ich habe user1 + user2 der Liste "memberUid" von "app1_users" und user2 + user3 der Liste "memberUid" von "app2_users" hinzugefügt.

Ich will:

  • cn = admin hat volle Rechte / Zugriff auf den Baum
  • app1_users können eine Verbindung herstellen (zu phpLDAPadmin) und der Gruppe selbst neue Mitglieder hinzufügen
  • Gleiches gilt für die Benutzer von app2_users

Ein verbundener Benutzer (auf phpLDAPadmin) sollte nur die Baumstruktur (und die untergeordneten Unterstrukturen) sehen, zu der er gehört.

Hier sind die ACI, die ich ausprobiert habe (deren Funktion jedoch offensichtlich nicht funktionierte):

access to attrs=shadowLastChange by self write by dn="cn=admin,dc=www,dc=website,dc=com" write by * read  access to attrs=userPassword by self write by dn="cn=admin,dc=www,dc=website,dc=com" write by anonymous auth by * none  access to dn.base="" by * read  access to dn.subtree="cn=app1_users,ou=groups,dc=www,dc=website,dc=com" by group.base="cn=app1_users,dc=www,dc=website,dc=com" write by dn.base="cn=admin,dc=www,dc=website,dc=com" write  by * none  access to dn.subtree="cn=app2_users,ou=groups,dc=www,dc=website,dc=com" by group.base="cn=app2_users,dc=www,dc=website,dc=com" write by dn.base="cn=admin,dc=www,dc=website,dc=com" write  by * none  access to * by self write by dn="cn=admin,dc=www,dc=website,dc=com" write by * read 

Stimmt etwas mit meiner Konfiguration nicht?

2

1 Antwort auf die Frage

0
Michael Ströder

Nehmen wir an, ich habe user1 + user2 der Liste "memberUid" von "app1_users" und user2 + user3 der Liste "memberUid" von "app2_users" hinzugefügt.

Dies funktioniert nicht mit posixGroup- Einträgen mit memberUid als member-Attribut. memberUid enthält nur einen kurzen Benutzernamen und keinen DN.

Da slapd.access (5) eindeutig angibt, dass Gruppen-ACLs nur mit Memberattributen funktionieren, die den vollständigen definierten Namen (DN) jedes Membereintrags enthalten:

 The statement group=<group> means that access is granted to requests whose DN is listed in the group entry whose DN is given by <group>. The optional parameters <objectclass> and <attrname> define the objectClass and the member attributeType of the group entry. The defaults are groupOfNames and member, respectively. 

Einige Anmerkungen zu Ihren ACLs:

  • Lassen Sie die ACL für das Attribut shadowLastChange aus, da die LDAP-Schattenzuordnung ein fehlerhaftes Konzept ist. Wenn Sie Schattenkarten verwenden, können Sie mit Ihrer ACL (wahrscheinlich durch Kopieren und Einfügen von Anweisungen) den Ablauf des Schattenkennworts umgehen.
  • Erteilen Sie nicht implizite Leseberechtigung für userPassword, indem Sie den integrierten Schreibzugriff verwenden. Verwenden Sie =wstattdessen das Schreibrecht .

Siehe auch meine Antwort auf diese Frage zu Serverfault :

Legen Sie in OpenLDAP eine ACL fest, damit der Benutzer seinen eigenen Eintrag in der gefilterten Unterstruktur finden kann

Bevor Sie diesen Weg selbst gehen, würde ich empfehlen, eines der Systeme zu erwägen, die ich in anderen Antworten erwähnt habe:

Zentralisiertes NSS-Backend für Linux

Wie kann ich nur Benutzern und / oder Gruppen den Zugriff auf bestimmte Client-Computer erlauben, die mit einem openldap-Server verbunden sind?