Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

1.7. Controllo degli accessi


La gestione del tipo di accesso (lettura, scrittura, ecc.) agli utenti dovrebbe essere concesso alle risorse è nota come

controllo di accesso. Le direttive di configurazione coinvolte sono chiamate elenchi di controllo di accesso o ACL.


Quando abbiamo installato il pacchetto slapd, vari ACL sono stati impostati automaticamente. Esamineremo alcune importanti conseguenze di tali impostazioni predefinite e, così facendo, avremo un'idea di come funzionano gli ACL e di come sono configurati.


Per ottenere l'ACL effettivo per una query LDAP, è necessario esaminare le voci ACL del database interrogato e quelle dell'istanza del database frontend speciale. Gli ACL appartenenti a quest'ultimo fungono da default nel caso in cui quelli del primo non corrispondano. Il database frontend è il secondo ad essere consultato e l'ACL da applicare è il primo a trovare corrispondenza ("first match wins") tra queste 2 sorgenti ACL. I seguenti comandi forniranno, rispettivamente, gli ACL del database mdb ("dc=example,dc=com") e quelli del database frontend:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={1}mdb)' olcAccess


dn: olcDatabase={1}mdb,cn=config

olcAccess: {0}to attrs=userPassword da auto scrivi da autenticazione anonima da * nessuno olcAccess: {1}to attrs=shadowLastChange da auto scrivi da * leggi

olcAccess: {2}a * di * letto


Immagine

Il rootDN ha sempre tutti i diritti sul suo database e non ha bisogno di essere incluso in nessun ACL.



sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={-1}frontend)' olcAccess


dn: olcDatabase={-1}frontend,cn=config

olcAccess: {0}to * di dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external

,cn=auth Manage by * break

olcAccess: {1}to dn.exact="" di * read

olcAccess: {2}to dn.base="cn=Subschema" di * read


I primi due ACL sono cruciali:


olcAccess: {0}to attrs=userPassword da auto scrivi da autenticazione anonima da * nessuno olcAccess: {1}to attrs=shadowLastChange da auto scrivi da * leggi


Questo può essere rappresentato in modo diverso per una più facile digestione:


attrs=userPassword



da solo scrivere

per autenticazione anonima per * none


to attrs=shadowLastChange tramite autoscrittura

da * leggi


Questi ACL impongono quanto segue:

• L'accesso anonimo 'autorizza' è fornito al password utente attributo in modo che gli utenti possano autenticarsi, o legare. Forse controintuitivamente, è necessario "per autenticazione anonima" anche quando l'accesso anonimo al DIT è indesiderato, altrimenti questo sarebbe un problema di gallina e uova: prima dell'autenticazione, tutti gli utenti sono anonimi.

• Il da solo scrivere ACL concede l'accesso in scrittura al password utente attribuire agli utenti che si sono autenticati come dn dove vive l'attributo. In altre parole, gli utenti possono aggiornare il password utente attributo delle proprie voci.

• Il password utente L'attributo è altrimenti inaccessibile da tutti gli altri utenti, ad eccezione del rootDN, che ha sempre l'accesso e non ha bisogno di essere menzionato esplicitamente.

• Affinché gli utenti possano modificare la propria password, utilizzando passwd o altre utilità, proprie dell'utente ombraUltima modifica l'attributo deve essere scrivibile. Tutti gli altri utenti della directory possono leggere il contenuto di questo attributo.


Questo DIT può essere cercato in modo anonimo a causa di 'to * by * read' in questo ACL, che garantisce l'accesso in lettura a tutto il resto, da chiunque (incluso l'anonimo):


a *

da * leggi


Se ciò non è desiderato, è necessario modificare gli ACL. Per forzare l'autenticazione durante una richiesta di collegamento è possibile in alternativa (o in combinazione con l'ACL modificato) utilizzare la direttiva 'olcRequire: authc'.


Come accennato in precedenza, non esiste un account amministrativo ("rootDN") creato per il database slapd-config. Esiste, tuttavia, un'identità SASL a cui è concesso l'accesso completo. Rappresenta il superutente del localhost (root/ sudo). Ecco qui:


dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=esterno,cn=auth


Il seguente comando visualizzerà gli ACL del database slapd-config:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={0}config)' olcAccess


dn: olcDatabase={0}config,cn=config

olcAccess: {0}a * da dn.exact=gidNumber=0+uidNumber=0,cn=peercred, cn=esterno,cn=auth gestisci da * break


Poiché si tratta di un'identità SASL, è necessario utilizzare un SASL meccanismo quando si invoca l'utility LDAP in questione e l'abbiamo vista molte volte in questa guida. È il meccanismo ESTERNO. Vedere il comando precedente per un esempio. Notare che:


1. Devi usare sudo per diventare l'identità radice affinché l'ACL corrisponda.

2. Il meccanismo ESTERNO funziona tramite IPC (Socket di dominio UNIX). Ciò significa che è necessario utilizzare il ldapi

formato dell'URI.


Un modo succinto per ottenere tutti gli ACL è il seguente:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcAccess=*)' olcAccess olcSuffix

C'è molto da dire sul tema del controllo degli accessi. Vedi la pagina man di slapd.access4.


Il miglior sistema operativo cloud computing su OnWorks: