version 1.02, 23 novembre 2012
Michele Liberi, team gestione sistemi UNIXQuesto documento descrive "Share Zone", un'applicazione web pensata per gestire l'interscambio controllato di dati (files/directories) tra utenti Maserati ed il resto del mondo, tramite internet.
Il concetto centrale dell'applicazione è quello di area condivisa: una directory il cui proprietario (cioè l'utente che l'ha creata) può condividere con altri utenti.
Per ogni area condivisa l'applicazione gestisce i seguenti dati:
Per ogni utente l'applicazione gestisce i seguenti dati:
Altro concetto centrale di "Share Zone" è quello delle notifiche incrociate: gli utenti ricevono e-mail o SMS di notifica in relazione ad attività svolte sulle aree condivise.
Tutte le attività svolte dagli utenti tramite applicazione web vengono da essa registrate e le registrazioni delle attività sono accessibili ai proprietari delle aree.
Funzionalità e ruoli
L'accesso alle aree condivise avviene solo ed esclusivamente previa autenticazione dell'utente.
In base al ruolo che gli è stato assegnato l'utente potrà disporre delle seguenti funzioni:
ruolo | funzioni |
---|---|
base |
Solo se ha accesso in scrittura:
|
gestore |
|
amministratore |
|
Le notifiche hanno un ruolo importante nell'architettura di "Share Zone". La tabella che segue ne descrive il funzionamento:
evento | mezzo | destinatario | contenuto |
---|---|---|---|
creazione utente | utente creato | URL e istruzioni per l'accesso al sito | |
password reset | utente finale | nuova password di accesso | |
download | utente proprietario del file | chi ha scaricato cosa | |
zip | utente proprietario del file | chi ha compresso cosa | |
upload | utenti che hanno accesso all'area | chi ha caricato cosa | |
unzip | utenti che hanno accesso all'area | chi ha decompresso cosa | |
da 7 giorni prima della scadenza | proprietario dell'area | avviso che l'area sta per essere cancellata automaticamente |
Al fine di mettere l'amministratore di sistema in grado di analizzare come gli utenti hanno utilizzato il sistema, l'applicazione mantiene registrazione dei seguenti eventi:
Da un punto di vista hardware l'applicazione viene gestita da due macchine: la prima è raggiungibile solo dagli utenti attestati su rete interna, con protocollo http; la seconda, in DMZ, raggiungibile con protocollo https da internet.
Le richieste che arrivano da internet alla macchina in DMZ vengono servite utilizzando il meccanismo del reverse proxy. E con ciò si esaurisce il compito della macchina in DMZ.
A questo punto tutte le richieste, sia quelle provenienti dall'interno che quelle provenienti dall'esterno, arrivano al server HTTP in ascolto sulla rete interna.
Se l'header HTTP della richiesta contiene un cookie "SESSION_ID", esso viene utilizzato per identificare la sessione aperta, e la richiesta viene gestita; in caso contrario viene generata una pagina di login, a mezzo della quale l'utente potrà fornire le proprie credenziali ed instaurare una nuova sessione.
Le sessioni possono venir chiuse dall'utente (funzione logout), oppure cancellate automaticamente dal sistema. Eventuali operazioni in corso (upload/download) non vengono interrotte, la cancellazione della sessione influisce solo sulle nuove richieste.
La cancellazione delle aree condivise che sono giunte a scadenza, e la cancellazione dei files/directories che hanno superato l'età massima consentita per l'area (parametro stabilito per ogni area dal proprietario della stessa) viene gestita con programmi batch a partenza temporizzata (crontab).
sicurezza e gestione dei permessi di accesso
L'applicazione WEB non ha un suo layer di sicurezza, ma si appoggia in tutto e per tutto al sistema operativo AIX.
Le aree condivise sono reali directories, gli utenti sono reali utenti del sistema operativo. Il concetto di "proprietario" di un file/directory è quindi mutuato in modo diretto e naturale da quello gestito dal sistema operativo. I permessi di accesso vengono quindi gestiti dal sistema, sotto forma di permessi base o ACL (Access Control List).
Questo approccio rende estremamente robusto ed inattaccabile il sistema, in quanto il layer di sicurezza di AIX è certamente più sicuro e collaudato di qualunque layer applicativo si possa pensare di realizzare.
Inoltre semplifica moltissimo la vita a chi amministra e gestisce il sistema in quanto può intervenire utilizzando i normali strumenti per diagnosticare e/o correggere eventuali problemi.
Le aree condivise sono tutte sottodirectory di un'unica directory base.
Gli utenti base di "Share Zone" appartengono al gruppo 'shzbase', gli utenti con ruolo di gestore appartengono anche al gruppo 'shzmgr', gli amministratori appartengono al gruppo 'shzadmin'.
componenti del sistema
Poiché stiamo parlando di un'applicazione web, è evidente che tutte le richieste HTTP devono essere gestite da un HTTP server.
L'applicazione ha una pagina html statica di benvenuto che descrive brevemente l'applicazione e consente di accedere alla pagina di login.
Tutte le altre pagine HTML/JavaScript sono generate dinamicamente da programmi che operano secondo lo standard CGI.
Non esiste un componente specifico per il login perché la richiesta delle credenziali di accesso viene generata da tutti i componenti dinamici nel caso la sessione non esista, sia invalida o scaduta.
La tabella che segue descrive i componenti che compongono l'applicazione:
componente | linguaggio | descrizione |
---|---|---|
index | html | pagina di benvenuto, descrive l'applicazione e contiene il link per effettuare il login |
index_en | html | pagina di benvenuto in inglese |
home | ksh | suddivide l'area del browser in due parti: a sinistra il menu, a destra la vista delle aree condivise |
menu | ksh | genera, in funzione del ruolo dell'utente, la lista dei bottoni per accedere alle varie funzioni |
shz | c | navigazione e gestione delle cartelle (upload, download, zip, unzip, mkdir, ricerca) |
logout | ksh | cancella la sessione attiva |
chpwd | ksh | cambio password |
resetpwd | ksh | genera nuova password casuale per un utente |
users | ksh | consente di visualizzare/gestire gli utenti esistenti previa specificazione di uno o più criteri di ricerca |
zones | ksh | consente di visualizzare/gestire le aree previa specificazione di uno o più criteri di ricerca |
post_upload | ksh | lanciata da shz quando un utente fa upload di un file, oppure crea nuovi files scompattando uno zip, invia la relativa notifica |
post_download | ksh | lanciata da shz quando un utente accede ad un file, oppure quando il file viene messo in uno zip, invia la relativa notifica |
cleaner | ksh | lanciata da crontab: cancella le aree scadute, cancella i files "vecchi" nelle aree, invia notifiche ai proprietari dell'imminente scadenza delle aree condivise |