Elaborato Balzano Gianfranco N46001059

Scuola Politecnica e delle Scienze di Base
Corso di Laurea in Ingegneria Informatica
Elaborato finale in Reti di Calcolatori
Identity Management in piattaforme di
Cloud Computing IaaS
Anno Accademico 2013/2014
Candidato:
Gianfranco Balzano
matr. N46/001059
Indice
Identity Management in piattaforme di Cloud Computing IaaS ...........................................................I
Indice .............................................................................................................................................. III
Introduzione ..................................................................................................................................... 4
Capitolo 1: Cloud Iaas...................................................................................................................... 8
1.1 Perché scegliere il cloud IaaS ................................................................................................ 8
1.2 Il problema dell’Identity Management .................................................................................. 9
1.3 Identity Management as a Service ....................................................................................... 10
1.4 Sicurezza nel Cloud IaaS ..................................................................................................... 11
Capitolo 2: Approcci per l’Authentication and Identity Management .......................................... 12
2.1 Metodologie di controllo degli accessi ................................................................................ 12
2.1.1 RBAC ............................................................................................................................ 12
2.1.2 Vantaggi dell’approccio RBAC .................................................................................... 14
2.1.3 HIBC ............................................................................................................................. 14
Capitolo 3: Shibboleth ................................................................................................................... 18
3.1 Struttura di Shibboleth ......................................................................................................... 18
3.2 Processo di autenticazione ................................................................................................... 20
3.3 Gestione delle autorizzazioni ............................................................................................... 21
Capitolo 4: OpenStack ................................................................................................................... 22
4.1 Metodi di autenticazione ...................................................................................................... 23
4.1.1 Metodi interni ................................................................................................................ 23
4.1.2 Metodi esterni ............................................................................................................... 24
4.2 Metodi di autorizzazione ...................................................................................................... 24
Conclusioni .................................................................................................................................... 26
Bibliografia .................................................................................................................................... 28
Introduzione
Il NIST (National Institute of Standards and Technologies) definisce il Cloud Computing
[1] come un modello per abilitare un accesso ubiquo, conveniente ed a richiesta, basato sulle
reti, ad un pool di risorse computazionali con il minimo sforzo di amministrazione ed
interazione con il provider dei servizi.
Con gli odierni accessi ad internet a banda larga, gli utenti possono acquisire risorse
computazionali, spazi di archiviazione e altri tipi di servizi software senza doversi
preoccupare di rotture dei dischi o breakdown dei sistemi. Utenti diversi possono, inoltre,
condividere informazioni tra di loro e lavorare insieme semplicemente, come se stessero
giocando online tra di loro.
Le tipologie di Cloud Computing principali sono le seguenti:

Software as a Service (SaaS): permette all’utente di utilizzare le applicazioni del
provider dei servizi le quali girano sull’infrastruttura cloud. Tali applicazioni sono
accessibili da un’interfaccia utente minimale come un web browser, o tramite un
programma apposito. L’utente non ha alcun controllo sull’infrastruttura del cloud
sottostante l’applicazione, con la limitata possibilità di poter variare delle specifiche
impostazioni di configurazione. Le applicazioni che vengono fornite tramite questa
metodologia hanno un’ulteriore livello di sicurezza e di protezione dalla pirateria, in
quanto tutto rimane sui server del cloud. Sono inoltre soluzioni molto flessibili, e
permettono l’implementazione di servizi on-demand. Esempi di cloud di tipi SaaS
sono Google Apps ed iCloud.

Platform as a Service (PaaS): permette all’utente di distribuire nell’infrastruttura
4
cloud applicazioni acquisite o create mediante dei linguaggi di programmazione
supportati dal provider dei servizi. Anche in questo caso l’utente non ha controllo
sulla struttura sottostante dei server cloud sui quali opera, ma ha il controllo sulla
sua applicazione e sulla configurazione dell’ambiente che ospita l’applicazione. La
soluzione PaaS è quella che presenta più rischi per l’utente. Trasferirsi da un
provider ad un altro potrebbe essere un’operazione molto onerosa e se chi dovesse
erogare il servizio dovesse cessare l’attività, l’impatto sulle attività dell’utente
potrebbero essere devastanti. Un esempio di cloud PaaS è Google App Engine.

Infrastructure as a Service (IaaS): con questa tipologia di cloud non si mette al
servizio dell’utente un software, ma il controllo di uno o più server e di tutte le
risorse computazionali fondamentali (reti, potenza computazionale, spazio di
archiviazione), sul quale l’utente può immettere tutti i tipi di software, inclusi interi
sistemi operativi. Un esempio di IaaS è EC2/S3 di Amazon.
Le principali tipologie di distribuzione dei servizi cloud precedentemente descritte sono tre:
Tipologie di distribuzione dei servizi cloud

Public Cloud: Quando l’infrastruttura si trova completamente online allora vengono
identificate con il termine di Public Cloud. Tra i benefici di questo modello abbiamo
l’abbattimento dei costi per l’investimento iniziale e una distribuzione in genere
molto più veloce e con maggiore scalabilità. Tuttavia tale approccio presenta un
problema di sicurezza e privacy dei dati, in quanto l’utente finale perde il controllo
degli stessi affidandoli a terze parti per la gestione.
5

Private Cloud: Quando l’infrastruttura si trova invece completamente in locale si
parla di Private Cloud, cioè vi è un uso esclusivo di una singola organizzazione che
comprende più consumatori. Il vantaggio nell’utilizzo di tale modello riguarda
principalmente la sicurezza e riservatezza poiché solamente gli utenti
dell’organizzazione possono accedere al cloud privato.

Hybrid Cloud: Il cloud ibrido è costituito da due o più cloud privati o pubblici per
offrire i vantaggi di entrambi i modelli, restando però entità uniche dove ognuna
mantiene la propria identità. In tale modello di distribuzione l’organizzazione
gestisce risorse interne ed altre fornite esternamente. Questo perché generalmente
un’azienda può eseguire un’applicazione inizialmente su un cloud privato e affidarsi
ad un cloud pubblico durante i picchi di utilizzo.
L’effetto combinato della nostra sempre più elevata dipendenza dalla tecnologia e della sua
evoluzione ad alto ritmo, rende la sicurezza dei nostri beni digitali un’ardua sfida.
Originariamente la sicurezza negli ambiti informatici era fatta tramite delle vere e proprie
barriere fisiche intorno ai data-center, ma con l’aumento della connettività e della mobilità
dei terminali, è diventato sempre più difficile creare un perimetro sicuro intorno ad essi.
L’attenzione si è quindi spostata dalla sicurezza fisica dei datacenter alla protezione dei
terminali stessi, tramite firewall, restrizione degli accessi e altre misure. La connettività è
andata sempre più aumentando col tempo, quindi l’attenzione della sicurezza si è spostata
verso l’enorme numero di applicazioni che dipendono dalla rete, portando quindi i
meccanismi di difesa allo strato applicativo. L’ultima “migrazione” avvenuta in termini
temporali è stata quella verso il cloud, e, come tutte le precedenti, anch’essa ha richiesto una
riconsiderazione dei metodi di sicurezza, portando anche alla nascita di nuove aree di studio
della sicurezza informatica, come quella dei workgroup virtuali (Skype e Google Hangouts
solo per citare i più famosi). [11]
Provvedere alla sicurezza dei dati nei cloud pubblici e privati è relativamente semplice,
mentre più difficile risulta essere la sicurezza per il cloud di tipo Hybrid. Di solito per i
primi due tipi di cloud vi è un solo provider dei servizi, da cui discende la necessità di una
6
sola autenticazione per l’accesso alle risorse dei server, mentre per l’Hybrid cloud, i
provider sono solitamente molteplici, ciò comporta un problema specialmente per la
distribuzione delle chiavi d’accesso e per la mutua autenticazione ai vari sistemi. Una delle
soluzioni a questo problema è quella di creare una gestione federata dell’identità digitale,
dando ad ogni utente un identificativo univoco con il quale possa accedere ai differenti
servizi offerti dai molteplici provider di servizi cloud.
Varie soluzioni sono state implementate durante gli anni, in questa sede verranno analizzate
due di queste:

Shibboleth;

Open Stack;
7
Capitolo 1: Cloud Iaas
Il principale vantaggio dell’uso del cloud IaaS è quella di poter sfruttare tutta la potenza
elaborative dei server presenti nel cloud anche da apparecchi poco performanti come
cellulari o computer portatili. [2]
Questa potenza di calcolo non è fissa, ossia non viene bloccata anche quando l’utente non
ne sta facendo uso, ma viene predisposta on-demand, quando il cliente ha bisogno di più
risorse, queste gli vengono assegnate, tali risorse saranno poi liberate quando l’utente ha
terminato il loro utilizzo e non ne ha più bisogno.
1.1 Perché scegliere il cloud IaaS
Il cloud IaaS è il principale alleato delle piccole aziende che sono appena nate oppure sono
ancora nello stato embrionale.
Esso è nato proprio per quelle realtà dove c’è bisogno di una grande potenza elaborativa,
ma non si hanno i fondi necessari per realizzare un’infrastruttura di calcolo in locale. Vista
la rapida nascita di sempre nuove aziende e start-up nel settore informatico, il cloud IaaS è
la tipologia di cloud in maggior ascesa tra tutte le altre. Si stima infatti che nel 2016 i
guadagni relativi alle infrastrutture IaaS sarà di circa 207 miliardi di dollari.
La grande crescita del settore cloud porta però con sé alcuni grandi problemi, come, ad
esempio, la protezione dei dati personali salvati sui server, oppure i privilegi di accesso a
determinate aree di memoria del cloud. Come fare, in parole povere, a sapere chi, in un
determinato istante, sta accedendo ai miei dati? Ecco quindi che si presenta il problema
dell’Identity Management.
8
1.2 Il problema dell’Identity Management
L’identità digitale è la “rappresentazione di un’entità (o di un gruppo di entità) nella forma
di uno o più elementi di informazione (attributi) che danno la possibilità all’entità di essere
riconosciuta all’interno di un determinato contesto”. [4]
Nell’ambito della sicurezza informatica, l’Identity Management è uno dei campi più
importanti, se non fondamentali, per la salvaguardia dei dati presenti nella rete. L’utente
provvede a creare una propria identità nell’ambito cloud ogni qualvolta esso utilizza un
nuovo servizio cloud, di solito questa operazione avviene mediante il riempimento di un
documento online al quale vengono assegnate le proprie informazioni personali. Queste
informazioni hanno bisogno di essere protette, per prevenire un eventuale furto d’identità.
Le sfide principali alla sicurezza dei dati conservati nel cloud sono:

Autenticazione: bisogna sempre sapere chi si sta connettendo in ogni momento
all’infrastruttura cloud, ma, al giorno d’oggi, questo non può più essere assicurato
semplicemente dal binomio username-password, c’è bisogno di implementare vari
strati di certificati e di aumentare gradatamente la complessità della criptazione;

Protezione della privacy: i dati devono essere conservati in luoghi dove il provider
dei servizi ha piena giurisdizione su di essi;
Un servizio che fornisce l’Identity Management è fatto di protocolli e componenti software
che assicurano le identità degli individui attraverso tutto il ciclo di vita delle loro identità.
Il servizio di Identity Management può essere di due tipologie:
La prima, mostrata in Figura 1 è la IDM
for a Cloud, dove il sistema di Identity
Management è esterno all’infrastruttura
dei server. Così facendo viene utilizzato
un servizio pre-esistente di IdM che
fornisce i propri servizi al provider del
Figura 1: IDM for a Cloud
cloud e che sicuramente può contare su di una forte esperienza nel campo
dell’autenticazione e della criptazione.
9
La seconda, mostrata in Figura 2, è la
IDM in a Cloud, dove il sistema di
IdM viene implementato dallo stesso
provider dei servizi cloud, che porta ad
una riduzione dei costi relativi alle
soluzioni di IdM in quanto vengono
Figura 2: IDM in a Cloud
sfruttate solamente quelle richieste e
non tutte quelle offerte da un provider esterno.
La prima tipologia di gestione crea un ulteriore servizio denominato Identity Management
as a Service (IDaaS) [3], il quale è capace di fornire tutti i servizi di un IAM a tutti i clienti
che ne hanno bisogno. E’ una tipologia di SaaS orientata prettamente alla gestione delle
identità.
1.3 Identity Management as a Service
Il fulcro delle soluzioni IDaaS è un’applicazione basata sul cloud che unisce tutte le
funzionalità fondamentali del Identity Management, le quali devono essere assistite da un
“ponte d’identità” che permette la creazione di un canale tra la piattaforma IDaaS ed il
sistema del cliente affinché possano essere implementate tutte le impostazioni di sicurezza.
Una buona soluzione IDaaS deve avere, almeno, i seguenti attributi:

Sicurezza: deve essere basata sugli ultimi e più potenti standard in fatto di sicurezza
cosicché possa essere garantita un’architettura sicura, ubiqua e basata sul cloud;

Basata sul Cloud: deve poter fornire ai clienti tutti i benefici del cloud computing
di tipo SaaS;

Identità unificata: deve fornire il supporto per tutte le possibili richieste di
specifiche di controllo dell’identità da parte del cliente;
Con il continuo affermarsi sul mercato delle tecnologie cloud e delle aziende che ne fanno
uso, oramai l’utilizzo di servizi di tipo IDaaS per la fruizione di servizi di Identity
Management è predominante a dispetto dei semplici servizi di IAM sul luogo.
10
1.4 Sicurezza nel Cloud IaaS
Il Cloud Computing ha dalla sua parte molti vantaggi, tra i quali riduzione dei costi e
condivisione delle risorse, vantaggi che sono apprezzati principalmente dalle aziende
nascenti. Ma la sicurezza insita nell’avere i propri dati conservati in locale viene persa
proprio nella concezione che si ha di Cloud.
Le responsabilità nell’ambito della sicurezza per il cloud IaaS vengono divise tra il provider
ed il cliente. Ad esempio, Il servizio di Amazon Elastic Compute Cloud (EC2) afferma che
[12] la responsabilità di Amazon nei confronti della sicurezza riguardano solamente la
sicurezza fisica, ambientale e sulla virtualizzazione. Viene lasciata al cliente la
responsabilità della sicurezza del lato informatico, come il SO installato sulla macchina
oppure le applicazioni che vi vengono fatte girare sopra.
Le principali minacce alla sicurezza dei dati presenti sui cloud IaaS sono i protocolli di
sicurezza delle infrastrutture sulle quali i dati viaggeranno per arrivare dai server agli utenti.
Si possono implementare le più recenti politiche di sicurezza sui server, ma saranno del tutto
inutili poiché i dati saranno comunque trasmessi sulla tecnologia internet sottostante.
Possiamo quindi riassumere che le principali minacce che si possono ritrovare nella
trasmissione dei dati tramite la rete affliggono anche il cloud.
11
Capitolo 2: Approcci per l’Authentication and Identity Management
I sistemi di Authentication & Identity Management si dividono principalmente in due
macro-classi:

Soluzioni User-centered: dove gli identificativi e gli attributi aiutano ad identificare
e definire un utente, questa soluzione è adottata poiché ogni utente può accedere ai
servizi cloud da differenti postazioni ogni volta e quindi i dati devono essere
trasferiti in maniera sicura ad ogni nuovo accesso.

Soluzioni Federate: possono essere comparate con l’identità centralizzata che si
utilizza all’interno di reti aziendali chiuse. Le soluzioni federate sono adottate per
risolvere il problema degli utenti che vogliono accedere a reti esterne a quella
aziendale, o quello di utenti esterni che vogliono accedere alla rete. Queste soluzioni
preservano la privacy tramite delle tecniche di sicurezza dette zero-knowledge
proof-based che permettono, tramite una singola prova interattiva di provare la
conoscenza di molteplici attributi d’identità senza la necessità di mostrare queste
ultime in chiaro. Queste soluzioni hanno, però, bisogno di essere integrate con delle
soluzioni di Identity Management di livello enterprise.
2.1 Metodologie di controllo degli accessi
2.1.1 RBAC [10]
Uno dei principali sistemi di controllo degli accessi di tipo User-centered è il Role-based
Access Control (RBAC).
Si basa sul concetto che gli utenti finali non sono i proprietari delle risorse a cui accedono,
12
Figura 3: Struttura RBAC
ma gli è soltanto concesso il permesso di visualizzarle. Il framework RBAC permette agli
amministratori di rete di regolamentare chi può fare quale azione, quando, da quale punto
di accesso e controllare anche ulteriori circostanze.
Il perno principale attorno al quale ruota questo tipo di controllo degli accessi è la presenza
dei ruoli. Un ruolo può essere visto come un insieme di regole, ciascun ruolo sarà poi
assegnato agli utenti, a seconda dei vari privilegi che il suddetto utente può ricevere.
E’ stato provato che RBAC può supportare diversi principi e politiche di sicurezza utilizzate
da aziende o società che lavorano con informazioni sensibili.
Le tre regole principali per il RBAC sono:
1. Assegnazione dei ruoli: un utente può effettuare un’azione solamente se gli è stato
assegnato un ruolo;
2. Autorizzazione dei ruoli: un utente può possedere solo un ruolo per il quale è stato
autorizzato;
3. Autorizzazione dei permessi: un utente può esercitare un permesso solo se il
suddetto permesso è autorizzato per il ruolo dell’utente. Insieme alle regole 1 e 2,
questa regola si assicura che l’utente possa esercitare solo i permessi per il quale il
suo ruolo risulti autorizzato;
13
2.1.2 Vantaggi dell’approccio RBAC
Tra i vari vantaggi della soluzione di tipo RBAC per il controllo degli accessi ci sono: la
semplicità sia d’utilizzo che di implementazione, la flessibilità nel riuscire a risolvere
richieste che possono cambiare dinamicamente ed un’efficiente maneggevolezza dei
privilegi, l’estensione ad altri tipi di controlli, come, ad esempio, accesso vincolato alla
posizione (Location-based RBAC), oppure all’orario (Temporal RBAC).
Un ulteriore vantaggio è il supporto che dà agli amministratori di rete. Con il framework
RBAC è possibile aggiungere e modificare i privilegi concessi ad un utente semplicemente
rimuovendolo da un ruolo e assegnandone un altro. Inoltre consente di avere una visuale di
controllo degli accessi al livello di astrazione col quale sono di solito condotti i lavori,
tramite la regolazione statica e dinamica de i privilegi degli utenti con gerarchie, relazioni e
quant’altro, proprio come all’interno di un gruppo di lavoro esistono dei sottoposti e dei
supervisori.
2.1.3 HIBC [5] [6]
L’HIBC (Hierarchical Identity-based cryptography) è una soluzione di gestione delle
identità di tipo federato che sta prendendo molto piede negli ultimi anni. L’idea da cui è nata
questa tipologia di criptografia è che gli utenti non utilizzano un solo servizio di cloud per
tutta la vita, ma, contando soprattutto la crescente presenza di modelli lavorativi basati sul
cloud, ne utilizza diversi, ed avrà quindi bisogno di molteplici “identità”, una per ogni
provider di servizi. Sicuramente questo non è un approccio user-friendly. L’idea si basa sul
modello di crittografia basata sull’identità proposta per la prima volta da Shamir nel 1984,
ma il primo approccio efficiente è stato sviluppato da Boneh, Franklin e Cocks nel 2001.
Prima di arrivare al modello gerarchico, spieghiamo brevemente come si comporta il
modello su cui si basa.
La crittografia basata sull’identità è una specie di schema a chiave pubblica, che può essere
usato per lo scambio di messaggi tra due parti ed effettivamente verificare la firma di
ognuno. La chiave pubblica non è una stringa casuale di bit, ma è l’identità dell’utente stesso
14
che viene usata per la criptazione e la verifica della firma. Un primo vantaggio di questo
approccio è quello della criptazione e decriptazione che può avvenire anche offline, senza
essere per forza connessi al sistema generatore delle chiavi.
Nell’approccio di Boneh e Franklin, sono stati definiti quattro passi principali dell’algoritmo
per una completa criptazione basata sull’identità:
1. Setup: Il generatore di chiavi pubbliche crea una chiave K ed i parametri di sistema
P. La chiave viene tenuta privata ed è usata per creare le chiavi private degli utenti,
mentre i parametri sono resi pubblici cosicché gli utenti possano generare le proprie
chiavi pubbliche con le loro identità;
2. Estrazione: Quando un utente richiede la propria chiave privata, il generatore usa
l’identità dell’utente, i parametri P e la chiave K per la generazione della chiave;
3. Criptazione: Quando un utente vuole criptare un messaggio per inviarlo ad un altro
utente, utilizza i parametri P, l’identità del ricevitore ed il messaggio per creare il
testo cifrato;
4. Decriptazione: Al momento della ricezione di un testo cifrato, l’utente può
utilizzare i parametri P e la chiave privata ricevuta dal generatore nella fase di Setup
per decriptarlo.
Il generatore di chiavi ha, quindi, sia il compito di generare le chiavi private per tutti gli
utenti, sia quello di verificare le identità e di stabilire i canali di comunicazione sicuri. Si
nota facilmente come questo, in una rete molto ampia, possa essere un lavoro molto pesante.
Nel HIBC non esiste un singolo generatore di chiavi, ma vi è una struttura gerarchica dei
generatori. Un primo generatore è chiamato generatore root, il quale genera e distribuisce le
chiavi ai generatori di dominio, i quali hanno il compito di ridistribuirle agli utenti. Una
schematizzazione molto simile ai server DNS.
Questa tipologia di distribuzione delle chiavi private aggiunge anche un ulteriore strato di
sicurezza, in quanto l’autenticazione degli utenti e la distribuzione delle chiavi private può
essere fatta anche localmente, senza nessuno scambio di messaggi verso l’esterno della rete.
L’algoritmo di criptazione di Boneh e Franklin viene così modificato:
15
1. Root Setup: Il generatore root crea i parametri pubblici ed una chiave di root
segreta. La chiave sarà usata per la generazione delle chiavi private da parte dei
generatori di più basso livello, mentre i parametri sono usati per la generazione di
chiavi pubbliche per i generatori di livello inferiore e degli utenti;
2. Setup di livello inferiore: I generatori prendono i parametri di root e generano le
chiavi segrete per il proprio dominio. Queste chiavi di dominio saranno utilizzate
per generare le chiavi private degli utenti all’interno del dominio;
3. Estrazione: Quando un utente di un dato livello t richiede la sua chiave privata dal
generatore di livello superiore i (1 ≤ i ≤ t), il generatore utilizza l’identità dell’utente,
i parametri di sistema e la sua chiave privata per generare la chiave dell’utente;
4. Criptazione: Il messaggio cifrato viene creato a partire dai parametri di sistema,
l’identità del ricevente ed il corpo del messaggio;
5. Decriptazione: Un messaggio cifrato può essere decriptato mediante i parametri di
sistema e la chiave privata del ricevente;
6. Firma e verifica: L’utente può creare un propria firma digitale tramite i parametri
di sistema, la propria chiave privata ed il messaggio. Tale firma viene inviata insieme
al messaggio cifrato. Il ricevente può verificare la firma utilizzando i parametri, il
messaggio e l’identità dell’utente che ha inviato il messaggio.
Con la possibilità di ogni utente di poter verificare l’autenticità dei messaggi scambiati
tramite l’utilizzo della chiave privata del mittente e la propria chiave pubblica, si semplifica
anche la costruzione dei suddetti messaggi. Il protocollo utilizzato per lo scambio di
messaggi è SOAP (Simple Object Access Protocol) e, prima dell’avvento di HIBC, l’header
di un singolo messaggio conteneva informazioni circa il metodo ed il valore della firma, le
informazioni sul messaggio e altre informazioni su come interpretarlo.
Con l’utilizzo di HIBC nell’header viene solo riportata la chiave privata del mittente così
facendo, la firma può essere verificata dal destinatario mediante la relativa chiave pubblica.
Con l’assunzione della distribuzione gerarchica dei generatori si ovvia al problema del
16
probabile Single Point of Failure insito dall’unico generatore presente nel modello descritto
precedentemente. Purtroppo questo nuovo modello non può ovviare un problema presente
anche prima: i generatori possono decriptare ogni singolo messaggio degli utenti presenti
all’interno di un dominio, c’è quindi bisogno che i generatori siano altamente affidabili.
2.1.4 Vantaggi dell’approccio HIBC
Avere un database centralizzato delle identità è utile, in quanto può essere settato una sola
volta nella giusta maniera e poi utilizzato in più posti. Questo comporta una sfida maggiore
per la protezione di un gran numero di identità conservate in un unico luogo, ma è uno scotto
che si può pagare volentieri in cambio del maggior controllo e del minor numero di database
delle identità disseminati all’interno della rete.
Inoltre l’utente non avrà più il bisogno di ricordare le credenziali per ogni singolo servizio
al quale è iscritto, ma gli sarà possibile identificarsi una sola volta e poi ci penserà il database
centrale ad identificarlo di volta in volta per tutti i servizi ai quali vuole accedere.
Una soluzione federata delle identità consente inoltre un sostanziale risparmio sia di risorse,
inteso come traffico dati, che di tempo. Di risorse in quanto si riducono sensibilmente i dati
inviati dagli utenti a causa delle svariate password dimenticate e quindi tutti i dati prodotti
dai processi di recupero e modifica delle password. Il tempo risparmiato è quello speso ad
amministrare l’identità di una stessa persona su piattaforme diverse, che ora possono
confluire in una sola identità utilizzata da più piattaforme.
17
Capitolo 3: Shibboleth
Shibboleth è un progetto open-source che permette l’autenticazione e l’autorizzazione degli
utenti su determinate piattaforme, basato su SAML (Security Assertion Markup Language,
uno standard informatico per lo scambio di dati tra Identity Provider), utilizza il concetto di
identità federata. [7]
Fornisce un servizio di Single Sign-On (SSO) che permette ad un utente di autenticarsi una
sola volta e può riutilizzare la stessa autenticazione per accedere a varie applicazioni, senza
doversi autenticare ogni volta.
3.1 Struttura di Shibboleth
E’ formato principalmente da due parti:

Identity Provider (IdP);

Service Provider (SP);
3.1.1 Identity Provider
L’IdP è l’elemento responsabile per l’autenticazione degli utenti e controlla le loro
credenziali e i loro attributi.
E’ formato da quattro componenti fondamentali:

Handle Service (HS): autentica gli utenti con il meccanismo di autenticazione e
consegna un “handle token” (praticamente un contenitore delle credenziali
dell’utente) all’utente. Il meccanismo di autenticazione non è fisso, ma ogni
18
organizzazione può scegliere il proprio;

Attribute Authority (AA): L’AA gestisce le richieste per gli attributi del SP,
applicando le regole di privacy sul rilascio dei suddetti attributi. Permette agli utenti
di specificare chi può accedere a tali attributi. Come sopra ogni organizzazione è
libera di settare il Directory Service a proprio piacimento;

Directory Service (esterno a Shibboleth): luogo dove sono conservati gli attributi
degli utenti;

Meccanismo di autenticazione (esterno a Shibboleth): permette agli utenti di
autenticarsi con il servizio tramite una coppia nome utente/password;
3.1.2 Service Provider
Il SP è il luogo dove sono conservate tutte le risorse a cui l’utente accede. Rinforza il
controllo degli accessi alle risorse basandosi sulle informazioni inviate dall’IdP. Un singolo
SP può essere composto da molte applicazioni, ma sarà sempre trattato come una singola
entità da parte dell’IdP.
I suoi componenti principali sono tre:

Assertion Consumer Service (ACS): responsabile della ricezione dei messaggi da
parte dell’IdP per stabilire un ambiente di lavoro sicuro;

Attribute Requester (AR): responsabile di ottenere e passare gli attributi dell’utente
al RM;

Resource Manager (RM): intercetta le richieste per le risorse e prende le decisioni
sul controllo degli accessi basandosi sugli attributi dell’utente;
Vi è anche una struttura opzionale all’interno di Shibboleth chiamata WAYF (“Where Are
You From”) che permette di creare un’associazione tra l’utente e l’organizzazione.
Quando l’utente tenta di accedere ad una risorsa, viene diretto verso un’interfaccia dove gli
verrà richiesto a quale istituzione egli appartiene. Dopo aver effettuato questa scelta, l’utente
è re-indirizzato per iniziare il vero e proprio processo di autenticazione.
19
3.2 Processo di autenticazione
Figura 4: Processo di autenticazione di Shibboleth
Come si può notare dall’immagine, il processo di autenticazione dell’utente da parte di
Shibboleth è composto in tutto da 15 passi.
All’inizio (1) l’utente richiede l’accesso ad una risorsa al SP, il quale lo reindirizza al WAYF
(2). Qui avvengono le operazioni prima descritte (3). L’utente inserisce poi i suoi dati
relativi all’identità, i quali vengono gestiti dall’HS, il quale autentica in seguito l’utente (58). La richiesta di autenticazione viene inviata poi all’ACS ed al AA. La richiesta inviata
all’ACS viene poi gestita dall’AR. Se tutto risulta essere in regola, viene stabilita una
sessione di lavoro (9,10). L’AR richiede poi gli attributi dell’utente all’IdP, il quale controlla
se questi ultimi possono essere rilasciati. Se questi ultimi possono essere rilasciati, l’AA
risponde alla richiesta dell’AR con questi ultimi (11-13). L’SP riceve gli attributi tramite
l’AR e li passa all’RM, il quale carica le risorse dalla memoria e le presenta all’utente
(14,15).
20
3.3 Gestione delle autorizzazioni
Shibboleth utilizza un sistema di gestione delle autorizzazioni di tipo distribuito e federato
basato sull’identità dell’utente, un’implementazione quindi di HIBC.
Figura 5: Layer AAI
Si pone come una “Authentication and Authorization Infrastructure” [8], quindi come un
layer aggiuntivo che gestisce le autorizzazioni di un determinato utente, il quale non avrà
bisogno di chiavi diverse per poter accedere a diversi servizi, ma basterà essere riconosciuto
da Shibboleth, tramite il processo di autenticazione prima descritto, e potrà accedere
liberamente a tutte le risorse senza dover autenticarsi ogni volta.
In conclusione, Shibboleth offre un’effettiva soluzione per un accesso alle risorse Web da
parte di più organizzazioni. L’utilizzo principale viene fatto per fornire accesso a servizi
esterni ai campus da parte di studenti universitari (uno dei casi più famosi è stato quello
della Penn State University che, tramite l’uso di Shibboleth, ha fornito ai propri studenti la
capacità di accedere al famoso servizio di streaming musicale Napster, nel 1994), poiché
Shibboleth fornisce un servizio che risponde a molte richieste fatte da parte dei provider
universitari, come gli standard per la gestione delle identità ed il controllo della privacy,
nonché le autorizzazioni basate sugli attributi.
21
Capitolo 4: OpenStack
OpenStack fornisce un’architettura modulare che permette di offrire un set di funzionalità
basilari che permettono scalabilità ed elasticità.
I componenti principali sono:
Figura 6: Struttura OpenStack

Dashboard (Horizon);

Compute (Nova);

Block Storage (Cinder);

Networking (Quantum);

Image Service (Glance);

Object Store (Swift);

Identity Service (Keystone);
Tutti i moduli hanno un proprio nome rappresentativo, ovviamente quello che andremo ad
analizzare qui è il blocco di Identity Service, Keystone.
22
Quest’ultimo è un servizio condiviso che fornisce autenticazione e servizi di autorizzazione
attraverso tutta l’architettura cloud. In questo modulo sono presenti delle “prese” [9] alle
quali possono essere aggiunti, espandendo i servizi offerti, dei componenti secondari.
Keystone propone molti metodi di autenticazione, spaziando dai semplici nome utente e
password, a LDAP (Lightweight Directory Access Protocol, un protocollo standard per
l’interrogazione e la modifica dei servizi di directory), sino ad arrivare a metodi di
autenticazione esterni al sistema come scanner biometrici oppure lettori ottici di card.
Quando avviene l’autenticazione, il sistema fornisce un token all’utente che verrà usato
successivamente per la richiesta dei servizi.
Il lifetime di default di un token è di un’ora, anche se nelle prime versioni di OpenStack era
di un giorno intero. Ovviamente tale valore può essere modificato a seconda delle necessità,
poiché alcuni servizi di cloud computing potrebbero cessare le attività iniziate se il token
scade durante l’esecuzione dei lavori.
4.1 Metodi di autenticazione
Come detto precedentemente, Keystone ha delle “prese” a cui possono essere aggiunti dei
servizi esterni, dividiamo quindi i metodi di autenticazione tra quelli che fanno parte del
“core” di Keystone e quelli esterni più importanti che possono essere aggiunti
successivamente.
4.1.1 Metodi interni
Keystone può conservare le credenziali degli utenti in un Database, il quale può essere
implementato via SQL, oppure via LDAP. Tale DB può trovarsi anche fisicamente separato
da quelli usati da OpenStack per altre operazioni per evitare rischi di compromissione delle
credenziali.
L’Identity Service non supporta molte implementazioni sulla sicurezza nel caso di utilizzo
di soli username e password, non ha politiche sulla forza della password, oppure sugli
attacchi a forza bruta. Le organizzazioni che sono interessate ad implementare tali servizi,
23
sono invitate a considerare una delle estensioni di Keystone.
4.1.2 Metodi esterni
La causa principale dell’uso di metodi esterni a Keystone, è quella della non compatibilità
dei metodi interni con degli esistenti metodi di autenticazione. Le organizzazioni che
vogliono poi aumentare la propria sicurezza possono implementare dei servizi esterni che
comprendono dei metodi di autenticazione più sofisticati, in quanto, anche se la password è
il metodo di autenticazione più comune, è anche quello che può essere compromesso in più
modi.
Le principali aggiunte che vengono fatte a Keystone sono le seguenti:

Politiche di rafforzamento delle password: viene richiesto che la password sia
conforme a delle norme di sicurezza come lunghezza, diversificazione dei caratteri,
ecc.;

Autenticazione a più fattori: viene richiesto all’utente qualcosa che solo lui ha, come
una certificato X.509 oppure uno smartphone su cui ricevere un messaggio di testo,
e qualcosa che solo lui sa, come una password;

Protocollo Kerberos: inventato dal MIT, è un protocollo che permette
l’autenticazione mediante la crittografia, facendo sì che due utenti possano
comunicare su di una rete insicura proteggendo le proprie identità e dati tramite
crittografia.
4.2 Metodi di autorizzazione
OpenStack utilizza un metodo di autorizzazione di accesso ai contenuti basato sui ruoli,
quindi riconducibile alla tipologia RBAC descritta nel secondo capitolo di questo elaborato.
Keystone utilizza un middleware il quale opera come “vigilante” e controlla che le politiche
di accesso a determinate risorse siano coerenti con i permessi posseduti dall’utente che
richiede la risorsa.
Il middleware permette un controllo degli accessi alle risorse molto granulare, infatti solo
24
l’amministratore può creare nuovi utenti e può avere accesso alle funzioni di gestione.
Le politiche di controllo degli accessi sono da documentare ed implementare prima della
configurazione di tutti i ruoli, gruppi ed utenti. Tali politiche devono essere consistenti con
le regolazioni legali richieste dalle organizzazioni coinvolte e devono includere anche la
possibilità di creazione e modifica sia degli account che dei privilegi legati ad essi.
La documentazione ufficiale di OpenStack afferma che bisogna definire, per ogni servizio,
un utente amministratore di tale servizio, al quale viene concessa l’autorizzazione di
autenticare i vari utenti che accedono a tale risorsa.
Ovviamente per aumentare la sicurezza ed evitare accessi non autorizzati sono presenti tutte
le varie aggiunte (non abilitate di default) che possono essere attivate per aumentare la
sicurezza, come, ad esempio, la possibilità di utilizzare una connessione SSL tra l’utente e
la risorsa.
4.3 Futuro di OpenStack
Al momento, OpenStack propone usa sua versione di gestione delle identità e dei privilegi
basata sui ruoli, ma è in lavorazione una API da poter aggiungere, tramite metodo esterno,
al modulo Keystone, la quale permette l’implementazione della gestione federata delle
identità.
L’implementazione federata delle identità in OpenStack prevede due metodologie di
attuazione [13] : una che utilizza Keystone non più come un IdP, ma come un Service
Provider, le identità saranno quindi gestite da un IdP esterno (la Wiki di OpenStack
suggerisce l’uso di Shibboleth in questo caso), il quale è responsabile per l’autenticazione
degli utenti e comunica il risultato di tale operazione a Keystone, il quale mappa l’utente
che ha ottenuto l’autenticazione con i permessi appartenenti al gruppo dell’utente.
La seconda implementazione prevede di continuare l’utilizzo di Keystone come IdP, ma tale
feature è ancora in fase di beta-testing, infatti non è supportata dalla versione attuale di
OpenStack (Juno), ma dovrebbe essere supportata, seppur non con piena compatibilità, nella
prossima, Kilo.
25
Conclusioni
In questo elaborato è stata affrontata una trattazione su un tema critico dell’informatica
odierna: la sicurezza dei dati e l’identificazione degli utenti.
E’ stata fatta una panoramica generale sugli ambienti di lavoro e di sviluppo dove tendono
oramai tutte le aziende che lavorano in questo campo, ossia il Cloud, in particolare della
tipologia IaaS, e come siano gestite le misure di sicurezza al suo interno.
Sono stati analizzate le due metodologie più comuni di implementazione: una basata sui
ruoli (RABC) ed una di tipo federato (HIBC). Sono stati poi portati esempi pratici di
implementazione di queste due tipologie di Identity Management: per RBAC è stato
presentato OpenStack con il suo modulo di gestione delle identità, Keystone, e Shibboleth
con il suo layer “Authentication and Authorization Infrastructure” per HIBC.
Visto lo sviluppo esponenziale che le piattaforme di Cloud Computing stanno avendo in
questi ultimi anni, si capisce sempre di più come il modello di sviluppo RBAC sta venendo
progressivamente rimpiazzato dalle soluzioni federate, anche se continuerà ad essere
utilizzato all’interno di network privati per gestire i permessi dei singoli utenti, ma il login
singolo fornito dal modello HIBC e la maggiore sicurezza offerta sono solo alcune delle
qualità che stanno permettendo a questo modello di diventare lo standard di fatto nell’ambito
delle reti Cloud.
Da notare, infatti, che anche OpenStack, nato come modello implementativo di RBAC, stia
migrando sempre di più verso soluzioni federate della gestione delle identità, sviluppando
sempre più API e plugin per il suo modulo di gestione delle identità, Keystone. Inizialmente
26
questa migrazione verso la gestione federata è avvenuta appoggiandosi a provider
preesistenti, quali Shibboleth, ma in futuro OpenStack consentirà di implementare entrambe
le modalità di autenticazione, rendendolo di fatto una soluzione plasmabile attorno a tutte
le possibili necessità e richieste nell’ambito della sicurezza informatica.
27
Bibliografia
[1]
Peter Mell, Timothy Grance: The NIST Definition of Cloud Computing,
http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf
[2]
S. Subashini, V. Kavitha: A survey on secuirty issues in service delivery models of
cloud computing,
http://ants.mju.ac.kr/2013Fall/survey%20security%20issues%20cloud%20computing.pdf
[3]
Hitachi ID Systems, Inc.: Identity Management as a Service.
[4]
Elisa Bertino, Federica Paci, Rodolfo Ferrini, Ning Shang: Privacy-preserving Digital
Identity
Management
for
Cloud
Computing,
ftp://131.107.65.22/pub/debull/A09mar/bertino.pdf
[5]
Liang Yan, Chunming Rong, Gansen Zhao: Strengthen Cloud Computing Secuirty
with Federal Identity Management Using Hierarchical Identity-Based Cryptography,
http://csnotes.upm.edu.my/kelasmaya/pgkm20910.nsf/0/d32aeb6f3caeec4b482578480023
ec66/$FILE/Strengthen%20Cloud%20Computing%20Security%20with%20Federal.pdf
[6]
Craig
Gentry,
Alice
Silverberg:
Hierarchical
ID-Based
Cryptography,
http://vanilla47.com/PDFs/Cryptography/Cryptography/Hierarchical_IDBased_Cryptography.pdf
[7]
Marcos A.P. Leandro, Tiago J. Nascimento, Daniel R. dos Santos, Carla M.
Westphall, Carlos B. Westphall: Multi-Tenancy Authorization System with Federated
Identity
for
Cloud-Based
Environments
Using
Shibboleth,
http://www.researchgate.net/profile/Carlos_Westphall/publication/257200931_MultiTenancy_Authorization_System_with_Federated_Identity_for_CloudBased_Environments_Using_Shibboleth/links/0deec524a20bfcce4c000000
[8]
Jan Du Caju, Authentication and Authorization Infrastructure – Shibboleth,
28
https://shib.kuleuven.be/docs/AAI-Shibboleth-BelnetUserDay-27oct2005-v.1.1.pdf
[9]
OpenStack Security Guide, Chapter 6: Identity, http://docs.openstack.org/security-
guide/content/identity.html
[10] David F.Ferraiolo, Janet A.Cugini, D. Richard Kuhn: Role_Based Access Control
(RBAC):
Features
and
Motivations,
http://csrc.nist.gov/groups/SNS/rbac/documents/ferraiolo-cugini-kuhn-95.pdf
[11] Brian Hay, Kara Nance, Matt Bishop: Storm Clouds Rising: Security Challenges for
IaaS Cloud Computing, http://nob.cs.ucdavis.edu/bishop/papers/2011-hicss-1/iaas.pdf
[12] Amazon Web Services Security Center, http://aws.amazon.com/security/
[13] OpenStack
Wiki:
Configuring
Keystone
for
http://docs.openstack.org/developer/keystone/configure_federation.html
29
Federation,