Gruppeneintrag in pg_hba.conf

Hallo Mitstreiter,

bitte nicht gleich denken: och nöööö, schon wieder pg_hba.conf.

Nein, hier soll es um ein sehr interessantes Phänomen gehen.

Folgende Situation:

  • Debian: postgresql-9.0.7-1~bpo60+1
  • eine Datenbank (oh Wunder) mit mehreren Nutzern
  • die Nutzer wurden in Gruppen einsortiert
  • die Gruppen wurden in der pg_hba.conf angegeben und greifen auf unterschiedliche BASE-DN zu

Folgender Code wird verwendet (etwas anonymisiert):

...
# DB-Admins
host    all    +gr_test_admin    172.20.70.0/24      ldap ldapserver=<URL> ldapbasedn="ou=dbadmins,dc=<uninteressant>,dc=de" ldapbinddn="cn=db,ou=binddn,dc=<uninteressant>,dc=de" ldapbindpasswd="<PW>" ldapsearchattribute="uid"

# God-Mode
host    all    +gr_administrator   172.20.70.0/24      ldap ldapserver=<URL> ldapbasedn="ou=staff,ou=person,dc=<uninteressant>,dc=de" ldapbinddn="cn=db,ou=binddn,dc=<uninteressant>,dc=de" ldapbindpasswd="<PW>" ldapsearchattribute="uid"
...

Der LDAP-Bind funzt wunderbar. Das schon mal vorweg.

Sooo, und nun zum Problem: Ich versuch mich mit nem Nutzer aus der Gruppe gr_administrator aus dem genannten IP-Bereich an der DB anzumelden. Leider klappt das nicht, weil der erste Eintrag von beiden genommen wird und der Nutzer nicht unterhalb der Base-DN zu finden ist.
JETZT die Frage: Warum ist das soo? ich dachte eigentlich, dass die ersten vier Spalten die Verbindung eindeutig “referenzieren”. Sprich, die ersten vier Einträge müssen eindeutig zusammenpassen, bevor eine Aktion, in dem Fall Authentifizierung, ausgeführt wird. Bei mir hingegen wird einfach die IP-Adresse genommen, geschaut wo das erste Auftreten ist, und die Aktion ausgeführt. Und das ist Schrott.

Meine Erkenntnis über das vormals geglaubte korrekte Verhalten dazu habe ich aus dem Buch “PostgreSQL Administration” (2. Auflage, S. 193, vorletzter Absatz).

Bitte gebt mir einen Hinweis. Weil wenn die IP-Adresse scheinbar das einzige Kriterium ist, werd ich die Datei ausdünnen (müssen).

Gruß und herzlichsten Dank

CaptnUnterhose

Mit welchem Account arbeitest du, in welchen Gruppen ist der Mitglied?

Guten Morgen,

hier einfach mal der Auszug:

                        |        Liste der Rollen              |
    Rollenname    |               Attribute                |    Mitglied von    
------------------+----------------------------------------+--------------------
 gr_administrator | kann nicht einloggen                   | {}
 gr_test_admin  | kann nicht einloggen                   | {}
 knubbel           |                                        | {gr_test_admin}
 garibaldi           | Superuser                              | {gr_administrator}
 postgres         | Superuser, Rolle erzeugen, DB erzeugen | {}

Also ich bin der Nutzer garibaldi und hab halt die Attribute Superuser und die entsprechende Gruppe. Der Nutzer knubbel und garibaldi darf sich connecten.

Wie man sieht, ist die Gruppe gr_administrator nicht mit gr_test_admin verbunden oder in irgendeiner Weise verknüpft. Zumindest dachte ich immer so.

Gruß und Danke schon mal

CaptnUnterhose

Morsche schön,

hat echt keiner ne Meinung dazu?? Oder hab ich zu wenig an Information dargeboten?

Danke schon mal.

Euer ergebener CaptnUnterhose