Dai test che ho fatto a me sembra l'esatto contrario, ovvero mi applica
le acl del database anche quando il pattern non dovrebbe "matchare"
poiché al di fuori del database.
Esempio:
Voglio che il rootDSE sia leggibile da tutti (utenti e anonimi) anche
senza alcun livello di crittografia (ssl/tls), quindi impongo le
seguenti acl:
# Queste sono le regole che mi hai suggerito e che inserisco in testa
# alle altre acl.
# Mi segnalano un warning (che ignoro allegramente) relativo al contesto
# ovunque le posiziono e la loro posizione (prima o dopo la direttiva
# database) è ininfluente per il risultato.
access to dn="" by * read
access to dn="cn=subschema" by * read

# In terza posizione imposto l'acl che imponga il tls/ssl per le 
# connessioni ad uno specifico db attraverso l'interfaccia
# pubblica (NB: l'interfaccia privata è collegata alla rete
# 192.168.1.0/24):
access to dn.subtree="dc=example,dc=com"
     by peername.ip=192.168.1.0%255.255.255.0 break
     by peername.ip=0.0.0.0%0.0.0.0 ssf=128 break
     by * none
Secondo quello che sapevo con queste acl in questa sequenza se io faccio
la seguente query:
ldapsearch -LLL -x -D 'cn=admin,dc=example,dc=com' -W -h $IP_PUBBLICO \
-b '' -s base '(objectClass=*)' namingContexts
dovrei avere il seguente risultato:
dn:
namingContexts: dc=example,dc=com
Ed invece ricevo un errore di violazione di una acl:
ldap_bind: Invalid credentials (49)
Sul log del server (a cui ho impostato il livello di debug ad acl)
leggo:
=> acl_mask: to value by "", (=0) 
<= check a_peername_path: 192.168.1.0%255.255.255.0
<= check a_peername_path: 0.0.0.0%0.0.0.0
<= check a_authz.sai_ssf: ACL 128 > OP 0
<= check a_dn_pat: *
<= acl_mask: [5] applying none(=0) (stop)
<= acl_mask: [5] mask: none(=0)
=> slap_access_allowed: auth access denied by none(=0)
=> access_allowed: no more rules
Mi sembra che non prenda in considerazione le prime due ACL.
Inoltre il match con "dc=example,dc=com" mi sembra totalmente errato.
Com'è possibile?
Ho testato e ricontrollato tutto molte volte no esistono altre acl oltre
a quelle che vi ho esposto.
Come posso fare?

Il giorno mar, 12/05/2009 alle 09.36 +0200, Pierangelo Masarati ha
scritto:
> Michele Codutti wrote:
> 
> > Comunque grazie all'impostazione del debuglevel a acl ho scoperto quali
> > sono le regole che mi creano il problema:
> > access to *
> >      by peername.ip=192.168.1.0%255.255.255.0 break
> >      by peername.ip=0.0.0.0%0.0.0.0 ssf=128 break
> >      by peername.ip=0.0.0.0%0.0.0.0 stop
> >      by * break
> > Queste regole erano state impostate grazie ad un suggerimento richiesto
> > in questa ML:
> > http://www.sys-net.it/pipermail/openldap/2007-September/000736.html
> > Servivano per imporre la cifratura per le connessioni in arrivo
> > dall'interfaccia pubblica.
> > 
> > Mi ricordo che qualcosa relativamente alle ACL era cambiato ma adesso
> > non riesco a trovare più quell'informazione mi sapete fornire qualche
> > indicazione?
> 
> Se non sbaglio, quello che essenzialmente e' cambiato e' che mentre 
> prima in assenza di ACL globali per l'accesso a dati globali come 
> rootDSE e affini venivano usate le ACL del primo database, ora non piu'.
> 
> Ciao, p.
> 
> 
> Ing. Pierangelo Masarati
> OpenLDAP Core Team
> 
> SysNet s.r.l.
> via Dossi, 8 - 27100 Pavia - ITALIA
> http://www.sys-net.it
> -----------------------------------
> Office:  +39 02 23998309
> Mobile:  +39 333 4963172
> Fax:     +39 0382 476497
> Email:   a...@sys-net.it
> -----------------------------------
> 
> 
-- 
Michele Codutti
Centro Servizi Informatici e Telematici (CSIT)
Universita' degli Studi di Udine
via Delle Scienze, 208 - 33100 UDINE
tel +39 0432 558928
fax +39 0432 558911
e-mail: michele.codutti at uniud.it

_______________________________________________
OpenLDAP mailing list
OpenLDAP@mail.sys-net.it
https://www.sys-net.it/mailman/listinfo/openldap

Rispondere a