Share Zone Maserati

sito web per interscambio dati con l'esterno

version 1.02, 23 novembre 2012

Michele Liberi, team gestione sistemi UNIX
mail: mliberi@gmail.com
cell: 3485211456

indice


Introduzione

Questo 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:
ruolofunzioni
base
  • apre una sessione (login)
  • chiude la sessione (logout)
  • cambia la sua password
  • naviga la struttura dei files e directories contenute in aree alle quali ha accesso
  • visualizza una finestra di aiuto nella quale sono sinteticamente descritte le funzioni e le modalità di utilizzo delle stesse
  • visualizza la struttura globale (ricorsiva) di tutti i files/directories
  • ricerca i files il cui nome corrisponde ad una espressione regolare
  • organizza la vista con ordinamento crescente o decrescente degli oggetti in base a:
    • nome del file/directory
    • data di ultima modifica
    • dimensione
  • scarica da esse files o directories (download) in formato zip o tgz
  • ricerca le aree esistenti in base alle caratteristiche delle stesse

Solo se ha accesso in scrittura:

  • crea nuove directories (mkdir)
  • trasferisce in esse files dal proprio computer (upload)
  • cancella files o directories di sua proprietà (remove)
  • crea file zip partendo da una selezione di files/directories (zip)
  • scompatta file zip (unzip)
gestore
  • dispone di tutte le funzioni dell'utente base
  • crea nuove aree condivise
  • modifica parametri associati alle sue aree condivise
  • cancella le sue aree condivise
  • crea utenti base
  • gestisce l'anagrafica degli utenti che ha creato
  • abilita utenti ad accedere alle aree di sua proprietà
  • ricerca utenti in base alle caratteristiche degli stessi
  • visualizza la registrazione delle attività (log) svolte sulle aree di sua proprietà, con possibilità di limitare la visualizzazione alle attività svolte su una specifica area o da uno specifico utente
amministratore
  • dispone di tutte le funzioni del gestore e dell'utente base
  • gestisce l'anagrafica utenti
  • genera nuove password per utenti che l'hanno dimenticata o persa
  • gestisce tutte le aree condivise
  • gestisce i permessi di accesso alle aree condivise

Notifiche

Le notifiche hanno un ruolo importante nell'architettura di "Share Zone". La tabella che segue ne descrive il funzionamento:
eventomezzodestinatariocontenuto
creazione utentee-mailutente creatoURL e istruzioni per l'accesso al sito
password resete-mailutente finalenuova password di accesso
downloade-mailutente proprietario del filechi ha scaricato cosa
zipe-mailutente proprietario del filechi ha compresso cosa
uploade-mailutenti che hanno accesso all'areachi ha caricato cosa
unzipe-mailutenti che hanno accesso all'areachi ha decompresso cosa
da 7 giorni prima della scadenzae-mailproprietario dell'areaavviso che l'area sta per essere cancellata automaticamente

Registrazione degli eventi

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:

Architettura

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:
componentelinguaggiodescrizione
indexhtmlpagina di benvenuto, descrive l'applicazione e contiene il link per effettuare il login
index_enhtmlpagina di benvenuto in inglese
homekshsuddivide l'area del browser in due parti: a sinistra il menu, a destra la vista delle aree condivise
menukshgenera, in funzione del ruolo dell'utente, la lista dei bottoni per accedere alle varie funzioni
shzcnavigazione e gestione delle cartelle (upload, download, zip, unzip, mkdir, ricerca)
logoutkshcancella la sessione attiva
chpwdkshcambio password
resetpwdkshgenera nuova password casuale per un utente
userskshconsente di visualizzare/gestire gli utenti esistenti previa specificazione di uno o più criteri di ricerca
zoneskshconsente di visualizzare/gestire le aree previa specificazione di uno o più criteri di ricerca
post_uploadkshlanciata da shz quando un utente fa upload di un file, oppure crea nuovi files scompattando uno zip, invia la relativa notifica
post_downloadkshlanciata da shz quando un utente accede ad un file, oppure quando il file viene messo in uno zip, invia la relativa notifica
cleanerkshlanciata da crontab: cancella le aree scadute, cancella i files "vecchi" nelle aree, invia notifiche ai proprietari dell'imminente scadenza delle aree condivise