Politiche di Autorizzazione Ad-Hoc per le esigenze del CNR

From Servizi RSI
Jump to: navigation, search
Trasformazione delle Politiche di Autorizzazione di Alfresco
Edgardo Ambrosi


Sono stati analizzati due particolari aspetti relativi ai meccanismi di sicurezza di Alfresco, per la condivisione di contenuti tra utenti e attraverso workflow. In breve, 1) per quanto riguarda la condivisione di contenuti, un problema che si è riscontrato riguarda l'impossibilità per gli utenti di accedere a documenti messi a disposizione da parte di altri utenti, senza aver diritti totali di accesso in lettura alle directory contenenti il documento stesso. La politica di autorizzazione implementata da Alfresco è del tipo “ALLOW ALL, EXPLICIT DENY” su tutto il repository. Ossia, tutti gli utenti possono accedere a tutti i contenuti memorizzati nel repository di Alfresco, mentre il divieto di accesso a specifici contenuti deve essere esplicitamente dichiarato. Inoltre, 2) considerando la suddetta politica di autorizzazione di Alfresco, questo comporta, almeno fino alla versione 2.9 di Alfresco, l'impossibilità per un utente di accedere al contenuto allegato ad un workflow, qualora tale contenuto non sia stato esplicitamente associato al medesimo utente con il permesso di lettura e quindi di conseguenza con il permesso di accesso ai contenuti completi della cartella in cui tale allegato è memorizzato.

Per quanto riguarda i meccanismi di autorizzazione sui contenuti allegati ai workflow, ossia il suddetto problema (2), la soluzione fornita ha previsto una fase di ricerca e studio delle caratteristiche delle ultime release di Alfresco. Tale analisi ci ha consentito di verificare che, nella nuova versione 3.c di Alfresco, l'implementazione delle Access Control List (ACL), specificate attraverso il “content model” denominato “permissionDefinition.xml”, è stata arricchita con la gestione dei ruoli di “Consumer, Editor, etc” associati agli oggetti o nodi di tipo “content” (ossia documenti o file) oltre che folder come nella versione 2.9. Ad esempio, il ruolo di Consumer, associato ad un utente, specificato per un documento, consente di allegare tale documento ad un workflow ed assegnarlo al medesimo utente, il quale potrà quindi accedervi, senza aver tuttavia il permesso di accesso alla cartella contenente il documento stesso. Quindi la nuova versione di Alfresco, attualmente in produzione, offre tale funzionalità.

Per quanto riguarda invece il problema (1), relativo alla condivisione di contenuti, per questa è stata progettata ed implementata una soluzione efficace ad-hoc. La soluzione si compone di una procedura operativa a carico dell'amministratore di Alfresco, di una nuova politica di ACL implementata, di un software aggiuntivo di terze parti, open source, adattato alle specifiche esigenze. In dettaglio, per quanto riguarda le autorizzazioni specificate via ACL nel file permissionDefinition.xml, la soluzione prevede la creazione di un nuovo ruolo di base o generico denominato “JustWrites”. Tale ruolo viene ereditato da uno specifico ruolo associato ad oggetti di tipo “Content, Folder”, denominato JustWriter. Il permesso di scrittura viene garantito per il nuovo ruolo JustWriter, che a sua volta viene inserito fra i ruoli specificabili ed ammessi su documenti e cartelle. Inoltre, il repository di Alfresco è stato riconfigurato in termini di autorizzazioni esplicitamente concesse ed ereditate. In particolare, il gruppo EVERYONE, a cui implicitamente tutti gli utenti appartengono, è stato rimosso dai gruppi garantiti sulla “Company Home”, ossia la radice del repository. In sostituzione del gruppo, ciascun utente è stato garantito con il ruolo di Consumer sulla radice del repository. Inoltre, ciascuna “user homes” esplicitamente eredita i permessi garantiti sulla “Company Home”. E' stata creata una specifica area di condivisione denominata “uaserSharingSpace”, su cui ciascun utente ha il permesso di scrittura grazie al ruolo JustWriter. A tutti gli utenti è stato assegnato anche il nuovo ruolo di JustWriter garantito per l'area di condivisione di cui prima. Tutte le user homes, non ereditano i permessi della Company Home, il gruppo EVERYONE viene negato su tale area, e ciascun utente è proprietario della propria home. E' stata aggiunta un' azione tra quelle messe a disposizione agli utenti ed associate ai contenuti, per la creazione di link nell'area userSharingSpace di cui prima. Questa azione è implementata attraverso il plugin linktospaceaction.amp. In definitiva, tale soluzione consente di condividere un documento, attraverso la associazione di un utente con il ruolo di consumer al documento stesso, e la creazione di un link a tale documento nell'area userSharingSpace, garantito in lettura e/o scrittura per il medesimo utente. Di conseguenza lo specifico utente avrà accesso oltre che alla propria home anche all'area di condivisione, dove potrà fruire del documento condiviso. Tutti gli utenti avranno quindi una vista personale dell'area userSharingHome, potendo di fatto vedere solo i propri contenuti messi a disposizione con tale meccanismo da altri utenti.


Roma, 2 Marzo, 2008 In Fede

Edgardo Ambrosi