Implementare la Sicurezza in Zope
Up one level
Zope ha un'architettura per la gestione della sicurezza molto
potente e granulare, e Plone, naturalmente, eredita questa struttura.
Questo capitolo mostra come le impostazioni sulla sicurezza vengano
gestite nell'application server Zope. La maggior parte dei concetti in
questo capitolo si riferisce agli utenti Zope e alla gestione dei
permessi, ma come avete visto precedentemente nella sezione "Gestione
di utenti e permessi", è inoltre possibile gestire gli utenti, gruppi e
autorizzazioni tramite l'interfaccia Plone. Se dovete lavorare con
impostazioni semplici, potete sempre lavorare a livello di Plone e
usare i suoi strumenti per la gestione degli utenti, la sicurezza e le
impostazioni di autorizzazione invece di lavorare nella ZMI. Questo
capitolo comprende anche una sezione legata alla sicurezza: i workflow
in Plone.
I workflow vi permettono di definire comportamenti
diversi per i vostri oggetti in diversi stati logici. In particolare, è
possibile modificare le impostazioni sui permessi per ogni stato
logico. È possibile gestire le autorizzazioni degli utenti revisori,
generare documenti PDF, visualizzare e modificare un elemento o solo
parti di esso, e così via. In Plone, è possibile creare un workflow
molto semplice o costruire sistemi complessi. Questa è una
caratteristica molto importante per un'applicazione web, perché
permette alle persone con ruoli diversi di interagire bene tra di loro.
A questo proposito, Plone è dotato di una serie di workflow ben
collaudati disponibili come impostazione predefinita per i casi di uso
comune. Per esempio, con un paio di clic, è possibile convertire una
sezione del portale in una sezione riservata o creare una rete
Intranet. È possibile anche associare workflow personalizzati ai vostri
oggetti, con diversi funzionamenti e impostazioni di sicurezza per ogni
stato.
Implementazione della sicurezza in Zope
Questi sono i concetti principali per la gestione della sicurezza di Zope:
- Autorizzazioni
- Ruoli
- Utenti
- Gruppi
Abbiamo trattato questi concetti nella sezione "Gestione di utenti e permessi". Fondamentalmente, gli utenti possono avere uno o più ruoli, e i ruoli possono essere assegnati di default o "acquisiti" da un contesto particolare (ad esempio, la concessione di privilegi più elevati in alcune cartelle). I ruoli possono anche essere concessi ad un gruppo particolare, in modo che quando un utente diventa un membro di questo gruppo, questo utente “acquisisca" i ruoli assegnati al gruppo. In questo modo, i ruoli e i gruppi sono utilizzati per raggruppare utenti simili in modo da definire le configurazioni di sicurezza una volta per ogni gruppo o ruolo, invece di impostare questa configurazione per ogni utente di un certo tipo. Il sistema di sicurezza controlla se un utente può eseguire alcune operazioni controllando le autorizzazioni. Per ogni ruolo, è possibile assegnare uno o più autorizzazioni che concedono o tolgono la capacità di eseguire operazioni specifiche.Cominciamo con la scheda Security nella radice della ZMI in modo che possiate vedere come gestire le impostazioni di sicurezza. La Figura 7-1 mostra solo una piccola parte del pannello che appare, se ci si trova nella radice di Zope (http://localhost:8080/manage).
Figura 7-1. Parte delle impostazioni di sicurezza in Zope che apparirà cliccando sulla scheda Security della ZMI.
Come potete vedere, molti permessi sono disponibili di default: sono elencati sulla sinistra.Se scegliete la scheda Security per il vostro sito Plone (invece della radice di Zope), si possono vedere i ruoli disponibili, come illustrato nella Figura 7-2. Questi sono i ruoli che vengono creati di default in Plone.È possibile concedere l'autorizzazione ad uno o più ruoli, basta selezionare la casella nella colonna e riga appropriate.
Nota: le autorizzazioni sono contestuali, significa cioè che è possibile, ad esempio, concedere un permesso nella cartella principale di Zope, e in un'altra cartella è possibile ignorare il permesso. In questo modo, potete creare facilmente diverse aree con diversi permessi.
Figura 7-2. Parte delle impostazioni Security per il vostro sito Plone.
Aggiungere nuovi ruoli
Potete aggiungere nuovi ruoli direttamente nella scheda Security. Nel campo “User defined roles” nella parte inferiore della pagina, inserite un nome per il nuovo ruolo, e fate clic sul pulsante Add Role, come mostrato nella Figura 7-3.
Figura 7‐3. Aggiungere un nuovo ruolo. Ad esempio, si potrebbe creare un nuovo ruolo chiamato database manager e quindi attribuire ad esso le autorizzazioni di configurazione e creazione di connessioni al database, per esempio, è possibile assegnare le seguenti autorizzazioni:
- Aggiungere i metodi al database
- Cambiare metodi al database
- Aggiungere le connessioni al database Z gadfly
In
questo modo, tutti gli utenti con il ruolo di amministratore del
database sono autorizzati a modificare le impostazioni e dei metodi del
database. Per attribuire le autorizzazioni per il ruolo di
amministratore del database, tutto quello che dovete fare è andare
nella scheda Security, in cui si dovrebbe vedere il nuovo ruolo di
amministratore del database. È quindi sufficiente selezionare le
autorizzazioni che si desidera attribuire ad esso, confermare, e
salvare le modifiche. Ora, le persone che hanno questo ruolo avranno la
possibilità di aggiungere, ad esempio, connessioni a database (o
qualsiasi altra cosa che avete deciso di attribuire loro).
Questo
caso d'uso è simile a molti altri, è anche possibile creare diversi
ruoli per utenti che si occupano di CSS, per i programmatori Python, e
così via. Ogni utente sarà in grado di fare solo ciò che gli si concede
la possibilità di fare, e molti utenti con ruoli diversi possono
lavorare tutti insieme, senza interferire con i lavori delle altre
persone.
Gestione degli utenti su Zope
Dove vengono memorizzare di default le informazioni sugli utenti in Zope? Gli utenti Zope vengono memorizzati nello strumento acl_users (ACL è un acronimo che significa "access control list"). Se avete un account su un server Zope e provate ad accedere, Zope vi autenticherà tramite lo strumento acl_users. La Figura 7-4 mostra la schermata lo strumento acl_users.
Figura 7‐4. Lo strumento acl_users tool per Zope.
Lo strumento acl_users è un oggetto di tipo folder "pluggable authentication service" (PAS), in cui si possono aggiungere gli utenti Zope e mappare gli utenti con i ruoli. È inoltre possibile creare nuovi plug-in, per esempio, per gestire l'autenticazione degli utenti tramite un server LDAP o altri sistemi già in uso. Se volete creare un nuovo utente Zope, dovete fare clic su Users nello strumento acl_users e quindi cliccare su “Add a user”. Con un semplice esempio, create un nuovo utente chiamato new_user e assegnategli il ruolo di amministratore. Compilate il modulo di creazione, come mostrato nella Figura 7-5, e poi confermate cliccando sul pulsante Add User.
Figura 7-5. Aggiungere un nuovo utente nello strumento acl_users.
Si può concedere a new_user privilegi più elevati, modificando l'assegnazione dei ruoli. Scegliete l'opzione Roles nello strumento acl_users Zope, e fate clic sul link "?" vicino al ruolo di amministratore. Qui potete cercare il nuovo utente appena creato e assegnargli il ruolo di amministratore, come mostrato nella Figura 7-6.
Figura 7‐6. Assegnare il ruolo di amministratore ad un nuovo utente
Ora avete un nuovo utente Zope, new_user, con i privilegi di amministratore. Nella radice di Zope, avete sempre uno strumento acl_users, ma è anche possibile creare uno o più strumenti acl_users in determinate cartelle contenute nell'istanza Zope, quindi è possibile utilizzare questi strumenti per l'archiviazione di utenti o per sovrascrivere i ruoli di utenti esistenti. Ecco come si creano aree diverse con utenti Zope locali in modo che possano autenticarsi solo in quella parte dell'applicazione. Per esempio, è possibile creare account per sviluppatori solo in una certa area (creando uno strumento acl_users nella cartella corretta), in modo che gli sviluppatori siano in grado di gestire il codice in una sezione, ma non abbiano la possibilità di visualizzare o modificare il codice in altre sezioni. Quello che avete appena visto è solo una parte di quello che si può fare con Zope e gli utenti in Zope. Se siete interessati ad avere maggiori informazioni sulla sicurezza di Zope 2, potete dare un'occhiata al libro di Zope su www.zope.org/Documentation/Books/ZopeBook/2_6Edition/Security.stx. Ma, come probabilmente già sapete, Plone introduce altre caratteristiche avanzate di sicurezza. Le vedrete nella prossima sezione!