LDAP: Difference between revisions
No edit summary |
|||
Line 3: | Line 3: | ||
==LDAP server keuze== | ==LDAP server keuze== | ||
De voor de hand liggen de keuze is OpenLDAP. Echter zijn er geluiden gehoord dat OpenLDAP niet zou schalen. Alternatieven zijn b.v. 389 maar die is erg slecht | De voor de hand liggen de keuze is OpenLDAP. Echter zijn er geluiden gehoord dat OpenLDAP niet zou schalen. Alternatieven zijn b.v. 389 maar die is erg slecht gesuppoort onder Ubuntu. Voorlopig starten we met OpenLDAP. | ||
==Loadbalanced== | ==Loadbalanced== | ||
Er zijn twee servers (hcc-ldap-lb1 en hcc-ldap-lb2) die achter een loadbalancer in pomeleoepee mode staat zodat het verkeer altijd server1 gestuurd wordt. Beide servers houden elkaar up-to-date. In de gewone situatie zullen alle reads en writes naar server 1 gaan en server2 wordt door server1 bijgewerkt. Valt server1 weg, dan zal de loadbalancer overschakelen naar server2 waar vanaf dan de read en writes plaatsvinden. Zodra server 1 weer beschikbaar is, wordt die bijgewerkt en zal weer master worden. Dit is nog niet getest en hoe de timing precies is, is nog niet duidelijk... | Er zijn twee servers (hcc-ldap-lb1 en hcc-ldap-lb2) die achter een loadbalancer in pomeleoepee mode staat zodat het verkeer altijd server1 gestuurd wordt. Beide servers houden elkaar up-to-date. In de gewone situatie zullen alle reads en writes naar server 1 gaan en server2 wordt door server1 bijgewerkt. Valt server1 weg, dan zal de loadbalancer overschakelen naar server2 waar vanaf dan de read en writes plaatsvinden. Zodra server 1 weer beschikbaar is, wordt die bijgewerkt en zal weer master worden. Dit is nog niet getest en hoe de timing precies is, is nog niet duidelijk... | ||
== | ==Installatie== | ||
installatie van OpenLDAP is simpel: | installatie van OpenLDAP is simpel: | ||
aptitude install slapd ldap-utils | aptitude install slapd ldap-utils | ||
De configuratie van OpenLDAP is sinds Karmic Koala iets gecompliceerder geworden. cn=config wordt nog steeds gebruikt maar tijdens installatie wordt alleen een skeleton configuratie geïnstalleerd. Er wordt niet meer gevraagd om een password tijdens de installatie en met "dpkg-reconfigure slapd" zet alleen de skeleton configuratie terug. Je moet zelf de database, root dn en acl's opzetten (als root of met sudo). Run '''dpkg-reconfigure slapd''' om terug te gaan naar een lege directory. | De configuratie van OpenLDAP is sinds Karmic Koala iets gecompliceerder geworden. cn=config wordt nog steeds gebruikt maar tijdens installatie wordt alleen een skeleton configuratie geïnstalleerd. Er wordt niet meer gevraagd om een password tijdens de installatie en met "dpkg-reconfigure slapd" zet alleen de skeleton configuratie terug. Je moet zelf de database, root dn en acl's opzetten (als root of met sudo). Run '''dpkg-reconfigure slapd''' om terug te gaan naar een lege directory. | ||
UPDATE: in Oneiric Ocelot (11.10) is weer wel de mogelijkheid gegeven bij installatie een database aan te maken. Default wordt echter de fqdn hostname gebruikt. Bij dpkg-reconfigure kan het gewenste domein wel gegeven worden. Als tussenoplossing wordt op 10.04 LTS de minimale configuratie na installatie aangevuld met alles wat mist. De initiële configuratie staat in /usr/share/slapd/slapd.init.ldif. Alles na '''include: file:///etc/ldap/schema/core.ldif''' lijkt te missen. Het restant zoals dat in dezelfde file op 11.10 staat, wordt alsnog op 10.04 uitgevoerd. Als bij update of upgrade genoemde file wel compleet is, kan het uitvoeren van sldap.extra.ldif vervallen. Zie het init-ldap script. | |||
==Initiële database== | ==Initiële database== | ||
Direct na installatie (of na dpkg-reconfigure slapd) staat dit in OpenLDAP. Access is alleen geregeld voor root. Dit heeft te maken met het feit dat vanaf Karmic Koala OpenLDAP alleen het minst noodzakelijke bevat om slapd te starten. Het | Direct na installatie (of na dpkg-reconfigure slapd) staat dit in OpenLDAP. Access is alleen geregeld voor root. Dit heeft te maken met het feit dat vanaf Karmic Koala OpenLDAP alleen het minst noodzakelijke bevat om slapd te starten. Het init_lapd script (zie verderop) vult de directory aan met lokale wensen. Gebruik ook de [http://www.openldap.org/doc/admin/ OpenLDAP site]. | ||
=== | ===slapd.init.ldif === | ||
Bij installatie/reconfiguratie wordt /usr/share/slapd/slapd.init.ldif ingelezen. Om uit komen op de 11.10 installatie wordt direct hierna slapd.extra.ldif ingelezen | |||
<pre> | <pre> | ||
~/ldap# cat /usr/share/slapd/slapd.init.ldif | |||
# Global config: | |||
# | |||
# | |||
dn: cn=config | dn: cn=config | ||
objectClass: olcGlobal | objectClass: olcGlobal | ||
cn: config | cn: config | ||
# Where the pid file is put. The init.d script | |||
# will not stop the server if you change this. | |||
olcPidFile: /var/run/slapd/slapd.pid | |||
# List of arguments that were passed to the server | |||
olcArgsFile: /var/run/slapd/slapd.args | olcArgsFile: /var/run/slapd/slapd.args | ||
# Read slapd.conf(5) for possible values | |||
olcLogLevel: none | olcLogLevel: none | ||
# The tool-threads parameter sets the actual amount of cpu's that is used | |||
# for indexing. | |||
olcToolThreads: 1 | olcToolThreads: 1 | ||
# | # Frontend settings | ||
dn: olcDatabase={-1}frontend,cn=config | dn: olcDatabase={-1}frontend,cn=config | ||
objectClass: olcDatabaseConfig | objectClass: olcDatabaseConfig | ||
objectClass: olcFrontendConfig | objectClass: olcFrontendConfig | ||
olcDatabase: {-1}frontend | olcDatabase: {-1}frontend | ||
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external | # The maximum number of entries that is returned for a search operation | ||
olcSizeLimit: 500 | |||
# Allow unlimited access to local connection from the local root user | |||
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break | |||
olcAccess: {1}to dn.base="" by * read | olcAccess: {1}to dn.base="" by * read | ||
olcAccess: {2}to dn.base="cn=subschema" by * read | olcAccess: {2}to dn.base="cn=subschema" by * read | ||
# | # Config db settings | ||
dn: olcDatabase= | dn: olcDatabase=config,cn=config | ||
objectClass: olcDatabaseConfig | objectClass: olcDatabaseConfig | ||
olcDatabase: | olcDatabase: config | ||
olcAccess: | # Allow unlimited access to local connection from the local root user | ||
olcAccess: to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break | |||
# | # Load schemas | ||
dn: cn=schema,cn=config | |||
objectClass: olcSchemaConfig | |||
cn: schema | |||
include: file:///etc/ldap/schema/core.ldif | |||
</pre> | </pre> | ||
En het ontbrekende stuk van 11.10 waarin de oorspronkelijke variabelen zijn vervangen door vaste strings: | |||
<pre> | <pre> | ||
root@ubuntu:~/ldap# cat slapd.extra.ldif | |||
# Load the other schemas | |||
include: file:///etc/ldap/schema/cosine.ldif | |||
include: file:///etc/ldap/schema/nis.ldif | |||
include: file:///etc/ldap/schema/inetorgperson.ldif | |||
# | |||
# | |||
# module | # Load module | ||
dn: cn=module{0},cn=config | dn: cn=module{0},cn=config | ||
objectClass: olcModuleList | objectClass: olcModuleList | ||
cn: module{0} | cn: module{0} | ||
olcModulePath: /usr/lib/ldap | olcModulePath: /usr/lib/ldap | ||
olcModuleLoad: | olcModuleLoad: back_hdb | ||
# | # Set defaults for the backend | ||
dn: | dn: olcBackend=hdb,cn=config | ||
objectClass: | objectClass: olcBackendConfig | ||
olcBackend: hdb | |||
# | # The database definition. | ||
dn: olcDatabase=hdb,cn=config | |||
dn: olcDatabase= | |||
objectClass: olcDatabaseConfig | objectClass: olcDatabaseConfig | ||
objectClass: olcHdbConfig | objectClass: olcHdbConfig | ||
olcDatabase: | olcDatabase: hdb | ||
olcDbCheckpoint: 512 30 | |||
olcDbConfig: set_cachesize 0 2097152 0 | |||
olcDbConfig: set_lk_max_objects 1500 | |||
olcDbConfig: set_lk_max_locks 1500 | |||
olcDbConfig: set_lk_max_lockers 1500 | |||
olcLastMod: TRUE | olcLastMod: TRUE | ||
olcRootDN: cn=admin,dc= | olcSuffix: dc=hccnet,dc=nl | ||
olcRootPW: | olcDbDirectory: /var/lib/ldap/hccnet | ||
olcRootDN: cn=admin,dc=hccnet,dc=nl | |||
olcRootPW: XXXXXXXX | |||
olcDbIndex: objectClass eq | olcDbIndex: objectClass eq | ||
olcDbIndex: cn,sn,uid pres,eq,approx,sub | |||
olcAccess: to attrs=userPassword,shadowLastChange | |||
by self write | |||
by anonymous auth | |||
by * none | |||
olcAccess: to dn.base="" | |||
by * read | |||
olcAccess: to * | |||
by self write | |||
by * read | |||
dn | |||
</pre> | </pre> | ||
Revision as of 15:22, 28 October 2011
Introductie
Om een centrale plaats te hebben om authenticatie te doen voor www.hcc.nl en sub-sites zoals een forum, is gekozen voor het gebruiken van een LDAP database/directory. Hierin wordt alleen opgeslagen wat nodig is voor het functioneren van de site. Andere persoonsgegevens en HCC specifieke gegevens komen in een (MySQL) database. Dit kan ook een tabel binnen de Drupal omgeving zijn
LDAP server keuze
De voor de hand liggen de keuze is OpenLDAP. Echter zijn er geluiden gehoord dat OpenLDAP niet zou schalen. Alternatieven zijn b.v. 389 maar die is erg slecht gesuppoort onder Ubuntu. Voorlopig starten we met OpenLDAP.
Loadbalanced
Er zijn twee servers (hcc-ldap-lb1 en hcc-ldap-lb2) die achter een loadbalancer in pomeleoepee mode staat zodat het verkeer altijd server1 gestuurd wordt. Beide servers houden elkaar up-to-date. In de gewone situatie zullen alle reads en writes naar server 1 gaan en server2 wordt door server1 bijgewerkt. Valt server1 weg, dan zal de loadbalancer overschakelen naar server2 waar vanaf dan de read en writes plaatsvinden. Zodra server 1 weer beschikbaar is, wordt die bijgewerkt en zal weer master worden. Dit is nog niet getest en hoe de timing precies is, is nog niet duidelijk...
Installatie
installatie van OpenLDAP is simpel:
aptitude install slapd ldap-utils
De configuratie van OpenLDAP is sinds Karmic Koala iets gecompliceerder geworden. cn=config wordt nog steeds gebruikt maar tijdens installatie wordt alleen een skeleton configuratie geïnstalleerd. Er wordt niet meer gevraagd om een password tijdens de installatie en met "dpkg-reconfigure slapd" zet alleen de skeleton configuratie terug. Je moet zelf de database, root dn en acl's opzetten (als root of met sudo). Run dpkg-reconfigure slapd om terug te gaan naar een lege directory.
UPDATE: in Oneiric Ocelot (11.10) is weer wel de mogelijkheid gegeven bij installatie een database aan te maken. Default wordt echter de fqdn hostname gebruikt. Bij dpkg-reconfigure kan het gewenste domein wel gegeven worden. Als tussenoplossing wordt op 10.04 LTS de minimale configuratie na installatie aangevuld met alles wat mist. De initiële configuratie staat in /usr/share/slapd/slapd.init.ldif. Alles na include: file:///etc/ldap/schema/core.ldif lijkt te missen. Het restant zoals dat in dezelfde file op 11.10 staat, wordt alsnog op 10.04 uitgevoerd. Als bij update of upgrade genoemde file wel compleet is, kan het uitvoeren van sldap.extra.ldif vervallen. Zie het init-ldap script.
Initiële database
Direct na installatie (of na dpkg-reconfigure slapd) staat dit in OpenLDAP. Access is alleen geregeld voor root. Dit heeft te maken met het feit dat vanaf Karmic Koala OpenLDAP alleen het minst noodzakelijke bevat om slapd te starten. Het init_lapd script (zie verderop) vult de directory aan met lokale wensen. Gebruik ook de OpenLDAP site.
slapd.init.ldif
Bij installatie/reconfiguratie wordt /usr/share/slapd/slapd.init.ldif ingelezen. Om uit komen op de 11.10 installatie wordt direct hierna slapd.extra.ldif ingelezen
~/ldap# cat /usr/share/slapd/slapd.init.ldif # Global config: dn: cn=config objectClass: olcGlobal cn: config # Where the pid file is put. The init.d script # will not stop the server if you change this. olcPidFile: /var/run/slapd/slapd.pid # List of arguments that were passed to the server olcArgsFile: /var/run/slapd/slapd.args # Read slapd.conf(5) for possible values olcLogLevel: none # The tool-threads parameter sets the actual amount of cpu's that is used # for indexing. olcToolThreads: 1 # Frontend settings dn: olcDatabase={-1}frontend,cn=config objectClass: olcDatabaseConfig objectClass: olcFrontendConfig olcDatabase: {-1}frontend # The maximum number of entries that is returned for a search operation olcSizeLimit: 500 # Allow unlimited access to local connection from the local root user olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break olcAccess: {1}to dn.base="" by * read olcAccess: {2}to dn.base="cn=subschema" by * read # Config db settings dn: olcDatabase=config,cn=config objectClass: olcDatabaseConfig olcDatabase: config # Allow unlimited access to local connection from the local root user olcAccess: to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break # Load schemas dn: cn=schema,cn=config objectClass: olcSchemaConfig cn: schema include: file:///etc/ldap/schema/core.ldif
En het ontbrekende stuk van 11.10 waarin de oorspronkelijke variabelen zijn vervangen door vaste strings:
root@ubuntu:~/ldap# cat slapd.extra.ldif # Load the other schemas include: file:///etc/ldap/schema/cosine.ldif include: file:///etc/ldap/schema/nis.ldif include: file:///etc/ldap/schema/inetorgperson.ldif # Load module dn: cn=module{0},cn=config objectClass: olcModuleList cn: module{0} olcModulePath: /usr/lib/ldap olcModuleLoad: back_hdb # Set defaults for the backend dn: olcBackend=hdb,cn=config objectClass: olcBackendConfig olcBackend: hdb # The database definition. dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: hdb olcDbCheckpoint: 512 30 olcDbConfig: set_cachesize 0 2097152 0 olcDbConfig: set_lk_max_objects 1500 olcDbConfig: set_lk_max_locks 1500 olcDbConfig: set_lk_max_lockers 1500 olcLastMod: TRUE olcSuffix: dc=hccnet,dc=nl olcDbDirectory: /var/lib/ldap/hccnet olcRootDN: cn=admin,dc=hccnet,dc=nl olcRootPW: XXXXXXXX olcDbIndex: objectClass eq olcDbIndex: cn,sn,uid pres,eq,approx,sub olcAccess: to attrs=userPassword,shadowLastChange by self write by anonymous auth by * none olcAccess: to dn.base="" by * read olcAccess: to * by self write by * read