4.6. Configurazione di slapd

Per prima cosa è ovviamente necessario aver installato slapd (la componente server di OpenLDAP, una suite LDAP free). La configurazione del server è completamente contenuta nel file /etc/ldap/slapd.conf. Anche slurpd (il demone che gestisce la replicazione) utilizza lo stesso file di configurazione.

Ci sono tre tipi di direttive di configurazione del server:

Le prime specificano parametri generici di slapd, come gli indirizzi da bindare, dove mettere i log, le ACL, etc...

La seconda serie di opzioni è configura parametri specifici del backend utilizzato per i database. Noi usiamo BDB nonostante tutti i suoi problemi di consistenza (sono consigliati backup quotidiani dei dati) visto che l'altro backend supportato da OpenLDAP (LDBM) è addirittura sconsigliato ufficialmente...

Infine, le opzioni relative ai database (che nel nostro caso è uno solo) specificano ad esempio quali indici ottimizzati creare, dove memorizzare il database, e altri parametri che è opportuno controllare. In genere è necessario (se si desidera un minimo di performance) creare un indice per ciascun attributo che potrebbe comparire in qualche filtro, e comunque è possibile creare gli indici anche in un secondo momento (con il comando slapindex).

4.6.1. Ottimizzazioni

Non è nostra intenzione, qui, illustrare la configurazione base di slapd, per la quale si rimanda alla "OpenLDAP Administration Guide", in particolare al Capitolo 6: "The slapd configuration file" . Intendiamo invece approfondire le modifiche apportate ad una tipica configurazione base per ottenere maggiore stabilità e performance: quasi ogni operazione sui server comporta una richiesta LDAP, dunque si intuisce facilmente che il funzionamento complessivo del sistema dipende strettamente dall'efficacia di slapd.

Il problema può essere affrontato con due approcci differenti, che non si escludono ma si complementano: da una parte, si può tentare di ridurre il più possibile il numero delle richieste (ad esempio utilizzando meccanismi di caching), dall'altra è necessario ottimizzare attentamente la configurazione di slapd in modo da ottenere prestazioni sufficienti.

Come esempio della prima strategia,a si cerca di alleggerire il server dalle (numerosissime) richieste NSS: anzitutto conviene specificare files prima di ldap in /etc/nssswitch.conf per risolvere subito almeno gli utenti di sistema; l'altra condizione fondamentale è l'esecuzione del demone di caching NSS nscd.

Per quel che riguarda l'ottimizzazione di slapd invece, queste sono le considerazioni che abbiamo fatto:

4.6.2. ACL

La parte forse più complessa della configurazione del server LDAP è la creazione delle ACL (liste di controllo di accesso) necessarie a permetterne il funzionamento. Ciò in parte è dovuto al fatto che la forma con cui bisogna scrivere queste regole è particolarmente contorta... Per un dato uid richiesto e un dato uid richiedente, OpenLDAP considererà la prima regola (in ordine di apparizione nel file di configurazione) che si applica all'oggetto richiesto, per poi applicare la prima ACL che viene specificata (ancora una volta, in ordine di apparizione) che sia compatibile con il richiedente. Ad esempio, questa è la ACL per controllare l'accesso all'attributo userPassword:

access to attrs=userPassword
  by dn="cn=manager,o=anarchy" write
  by group/groupofnames/member=\
        "cn=admins,ou=Group,dc=infra,dc=org,o=Anarchy" write
  by dn="cn=ring0op,ou=Operators,dc=infra,dc=org,o=Anarchy" read
  by dn="cn=ring1op,ou=Operators,dc=infra,dc=org,o=Anarchy" read
  by dn="cn=dovecot,ou=Operators,dc=infra,dc=org,o=Anarchy" read
  by anonymous auth
  by self write
  by * none
	
La modifica è sempre e comunque permessa al manager e al gruppo di amministratori, mentre gli operatori possono solo leggerla per l'autenticazione.

Le ACL vanno dunque inserite nel file slapd.conf a partire dalla più specifica (per la parte access to) alla meno specifica.