Corso Drupal advanced Access Control (ACL e Content Access) Mario Baioli http://www.corsodrupal.uniroma1.it GLAD (gruppo di lavoro drupal Sapienza) Wikipedia ACL • • • Una ACL è una lista ordinata di regole che stabilisce quali utenti o processi di sistema possono accedere a degli oggetti, e quali operazioni sono possibili su questi oggetti. Facendo l'esempio di una rete informatica, ci si troverebbe a dover decidere se far passare o meno un pacchetto o se permettere o meno ad un certo utente l'accesso ad un determinato file. Ciascuna regola, detta access control entry (ACE), esprime una o più condizioni o proprietà dell'oggetto da valutare (ad es. l'indirizzo sorgente di un pacchetto IP), e se queste proprietà sono verificate indica quale decisione prendere (ad es. lasciar passare il pacchetto oppure scartarlo). La valutazione inizia dalla prima regola: se l'insieme delle condizione/proprietà di questa risultano verificate si applica una prestabilita decisione o policy dell'ACL, proseguendo poi allo stesso modo con le regole successive. Se nessuna regola viene soddisfatta, viene applicata una decisione o policy di default. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 2 ACL sta per Access Control List modulo nasce come API per altri moduli per creare liste di utenti a cui attribuire l’accesso ad un particolare nodo. In pratica non fa nulla da solo.. • ACL fornisce un controllo dedicato fino al singolo utente su un singolo nodo. • • • • Reported installs: 23,814 sites currently report using this module. Downloads: 211,331 Automated tests: Enabled Last modified: June 2, 2014 modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 3 Perché usare il modulo ACL? 1. Avvertite l’esigenza di granularizzare l’accesso a ruoli e permessi ed i ruoli non sono sufficienti 2. Volete mantenere un certo ordine o meglio evitare un certo disordine e desiderate una soluzione granulare, adattabile a diversi tipi di contenuto del vostro progetto spingendovi fino al singolo nodo 3. Si desidera ottenere un controllo su tutto ciò che sta accadendo con i diritti di accesso. 4. Permette di scavalcare alcuni permessi assegnati ad un ruolo da uno specifico utente (o lista di utenti) modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 4 Ecco come iniziare con il modulo ACL Effettuare il download del modulo ACL e configurare tutti i diritti per il solo amministratore per il tipo di contenuto di cui desiderate restringere l’accesso. Questo è il metodo più facile per imparare come lavora questo modulo. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 5 Restrizione degli accessi Qualora volessimo rendere una pagina visibile solo agli utenti che appartengono ad un ruolo potremmo adottare diverse soluzioni. Una soluzione è permettere la visione/modifica di alcune pagine solo agli utenti del ruolo a cui sono collegati, cosa ormai nota. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 6 Alcuni moduli disponibili • Content access (+ ACL) ha più funzioni • Nodeaccess (è meno completo) • Simple Access (per la versione 6 da scartare) • Per le viste invece non c'è problema, visto che l'opzione è già prevista. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 7 Come fare … • La strada maestra è che prima va creato un Tipo di Contenuto e successivamente a questo Tipo di Contenuto é possibile associare i permessi in base al ruolo. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 8 Nel nostro caso • Non vogliamo fermarci ad associare il Tipo di contenuto ad un ruolo • Più esplicitamente tutti i nodi creati da quel tipo di contenuto potrebbero appartenere ad utenti diversi che hanno in comune i permessi associati al ruolo. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 9 Centriamo meglio cosa stiamo cercando • Senza l’uso di ACL • Una idea per evitare che un utente che dispone degli stessi permessi sul Tipo di contenuto possa accedere ad esempio in modifica sul nodo in considerazione è legarlo all’autore. • Ma in questo caso l’associazione vale per il solo utente autore. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 10 Ragionando a voce alta Impostando un vincolo sull’accesso a un nodo in modifica per l’autore il problema è risolto se possiamo sostituire l’autore. E’ possibile? La risposta è si…… MA modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 11 Modificare l’autore di un nodo 1. 2. 3. 4. Sebbene sia semplice nell’esecuzione nella realtà diventa macchinoso in quanto necessita l’intervento di un altro utente che abbia i permessi per interagire sui cosiddetti permessi di pubblicazione, normalmente l’amministratore. Se così era progettato, il vecchio autore perde il permesso che era legato oltre che al ruolo di appartenenza, anche al fatto che a lui era associata la creazione del nodo e potrebbe non avere più accesso al nodo che aveva creato. Con questa tecnica di modificare l’autore non cambia la sostanza che un solo utente può detenere questo permesso Digressione… abbiamo già visto come associare tutti i nodi creati da un utente ad un altro utente, come associarli ad un utente anonimo, cioè lasciare vuoto il campo autore o eliminarli del tutto insieme all’utente modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 12 Con drupal puoi fare la stessa cosa in modi diversi • Il nostro obiettivo è limitare l'accesso di un contenuto a una lista selezionata di utenti. Quindi dopo aver assegnato i ruoli e i permessi agli utenti, stabilisco che quel contenuto che inserisco sarà visibile – modificabile –alla mia lista di utenti e non modificabile da tutti gli altri • Altra questione la visibilità del nodo, che vorrei fosse limitata alla mia lista di utenti selezionati • modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 13 ACL + Content Access • Perché ACL + Content Access? • Il modulo ACL estende le potenzialità di Content Access fornendo un controllo di accesso a livello di singolo utente e per questo devono essere caricati entrambe i moduli per avere l’effetto che desideriamo modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 14 Ok, ci siamo convinti … proviamolo • Andiamo a scaricare il modulo ACL • • • • • • • • Project Information Maintenance status: Seeking co-maintainer(s) Development status: Under active development Module categories: Community, Content, Content Access Control, Developer, Security, User Access & Authentication Reported installs: 23,814 sites currently report using this module. View usage statistics. Downloads: 211,390 Automated tests: Enabled Last modified: June 2, 2014 • modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 15 Download modulo ACL Al momento sul mio sito è up questo modulo: Versione 7.x-1.0 Downloads tar.gz (15.26 KB) zip (17.99 KB) Data 2011-Nov-26 Links Notes Naturalmente il sito da cui effettuare il download è questo: https://www.drupal.org modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 16 Statistiche sull’utilizzo di ACL modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 17 Content Access ? • Questo modulo permette di gestire le autorizzazioni per i Tipi di contenuto per ruolo e autore. • Pertanto è possibile abilitare le impostazioni di accesso ai contenuti, in modo da poter personalizzare l'accesso per ogni nodo del contenuto al singolo utente anche di ruolo diverso oppure dello stesso ruolo per superare un permesso che impedisce la modifica sui contenuti creati da un altro autore. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 18 Download modulo Content Access Al momento sul mio sito è up questo modulo: Versione 7.x-1.x-dev Downloads tar.gz (23.63 KB) zip (28.83 KB) Data 2013-Sep-30 Links Notes Naturalmente il sito da cui effettuare il download è questo: https://www.drupal.org modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 19 Dopo il download del file tar.gz Nel pannello moduli cercare CONTROLLO ACCESSI per attivarlo dei moduli apparirà modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 20 E adesso ? • Aprire il tipo di contenuto in cui applicare il nuovo modulo appena caricato: ad esempio la nostra pagina base modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 21 modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 22 Configurazione del tipo di contenuto per AC Se abilitato apparirà nel tipo di contenuto su cui state lavorando un nuovo pannello, chiamato «Controllo accessi». modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 23 Vogliamo assegnare diritti di modifica • Ad un nodo che è stato prodotto dal tipo di contenuto «pagina base» vogliamo aggiungere il controllo accessi per consentire ad un utente di accedere per fare modifiche. • Per progetto abbiamo deciso che il ruolo docente (che usiamo per questo test) può creare, modificare ed eliminare solo nodi di cui è l’autore. • Verifichiamo se applicando il control access possiamo far modificare il nostro nodo di esempio ad un utente del ruolo docente che non è l’autore. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 24 Adesso entra in gioco ACL These settings allow you to grant access to specific users. Ci siamo !! Qui possiamo configurare l’assegnazione di permessi che consentono di vedere, modificare ed eliminare content (nodi) a singoli utenti oppure a liste di utenti Cominciamo da GRAND UPDATE ACCESS che è il menu che fa al caso nostro. Non dovremo fare altro che aggiungere nel campo di testo il nome utente da abilitare e poi cliccare su Add User per completare cliccare su invia. Da questo momento l’utente che andremo ad aggiungere potrà modificare questo singolo nodo appartenente al suo Tipo di contenuto mentre in precedenza non godeva di questo permesso. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 25 Bello, fa anche qualcos’altro ? • Allo stesso modo può anche essere impostata la visualizzazione che apre tutta una serie di scenari che vedremo in un prossimo corso se è conveniente trattarli con questo modulo oppure utilizzando altre soluzioni. • Così a naso può essere conveniente se le liste sono limitate e gli utenti sono noti. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 26 Consente anche l’eliminazione • Un permesso come l’eliminazione di un nodo viene concesso raramente, in quanto l’eliminazione di un nodo è irreversibile. • Tuttavia in casi particolari possiamo concedere questo permesso ad un utente fidato che può procedere all’eliminazione esclusivamente di quel singolo nodo appartenente a quel Tipo di contenuto. modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 27 Altri Tipi di contenuto… • Beh! Siamo incontentabili !!!! • Qualcuno sicuramente avrà già chiesto se questo modulo una volta applicato su un Tipo di contenuto si estende a tutti gli altri oppure no! • La configurazione di Access Control va fatta sul singolo Tipo di contenuto, non si estende a tutti, da qui la granularità modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 28 Granularità… • Per granularità intendo dire che con l’applicazione di questo modulo un utente a cui in precedenza non era consentito l’utilizzo di un certo Tipo di contenuto perché per ragioni di progetto non si intende assegnarne la disponibilità al ruolo a cui appartiene, può invece utilizzare il Tipo di contenuto a cui viene associato, ma su un singolo nodo. • Controindicazioni ???? Vedi oltre-> modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 29 controindicazioni • Purtroppo sì, ma a mio parere sono più i vantaggi che gli svantaggi e quindi lo ho usato • Vabbè ma quali sono le controindicazioni ? • Il nodo per essere configurato con Access Control deve già esistere e poi il diritto di configurazione è in capo ad un utente del ruolo amministratore che notoriamente sono difficili da trovare modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 30 modulo ACL - dott. Mario Baioli ([email protected]) 07/10/2014 Pagina 31