Introduzione alla gestione dell`identità federata Con il termine
Transcript
Introduzione alla gestione dell`identità federata Con il termine
Introduzione alla gestione dell’identità federata Con il termine identità elettronica di un soggetto (utente, computer, software) s’intende l’insieme di dati digitali che identificano il soggetto in maniera univoca all’interno di un dominio informatico. I dati digitali che compongono l’identità elettronica sono di solito composti da un insieme di valori del tipo “attributo = valore”. Il processo completo della gestione dell’identità, dalla fase di creazione fino alla sua eliminazione, viene chiamato la gestione dell’identita elettronica. L'autenticazione è il processo che permette ad un soggetto (utente, computer, software) di verificare la corretta identità di un altro soggetto con cui intende comunicare. L'autorizzazione, invece, è il processo mediante il quale ad un soggetto già autenticato si garantisce o si nega l'accesso ad un servizio in base all’identità ed ai ruoli che lo identificano. Spesso, per autorizzare l'accesso ad un servizio, più che l’identità del soggetto serve conoscere il ruolo della persona autenticata. Ad esempio, un medico di un ospedale, indipendentemente da chi sia, ha diritto di accedere ad un servizio “X” gestito dallo stesso ospedale. La verifica di accesso in base ai ruoli ricoperti permette inoltre di poter garantire l'anonimato del soggetto che accede ad un determinato servizio. I meccanismi di autenticazione ed autorizzazione sono processi ortogonali tra di loro e possono essere quindi gestiti da due entità indipendenti; in questo modo, un certo soggetto può autenticarsi presso un’entità “K” e accedere ad un servizio gestito da un’entità “L” differente. Per la gestione dell’identità elettronica in ambienti distribuiti occorre utilizzare un’infrastruttura tecnologica di AAI (Authentication and Authorization Infrastructure) che permette di creare un sistema per la gestione e lo scambio degli attributi tra i diversi gestori d’identità e fornitori di servizi. Nella gestione dell’identità di un soggetto è molto importante il ruolo del protocollo standard che permette ad un soggetto di autenticarsi una prima volta e di accedere a tutti i servizi distribuiti forniti da un dominio informatico senza la necessità di autenticarsi per ognuno di essi. Questo meccanismo è noto come Single Sign On (SSO). Un ente che intende partecipare ad una federazione di SSO deve come prima cosa realizzare un infrastruttura di SSO al proprio interno. Gestione dell’identità elettronica in un ambiente multi dominio federato con SSO La gestione dell’identità federata consiste nell’estensione della verifica dell’identità e della gestione degli attributi a livello inter-dominio. Occorre quindi realizzare un’infrastruttura che permetta ad un utente appartenente ad un dominio “A”, autenticato presso la propria organizzazione, di accedere ai servizi offerti da altri domini “X” e “Y” federati. L'utente A non ha necessità di avere alcun tipo di interazione diretta con i gestori di servizi di questi domini. Un approccio di questo tipo permette di creare una divisione dei compiti, facendo sì che i fornitori dei servizi (Service Providers) non debbano più gestire le procedure onerose di accreditamento e di amministrazione degli account degli utenti, e possano quindi occuparsi solo delle funzionalità del servizio da fornire e della verifica dell'autorizzazione all'utilizzo del medesimo. Una federazione è definita come un insieme di domini amministrativi che attuano politiche comuni per quanto riguarda l'uso e l’applicabilità di tratti identificativi degli utenti per attuare le decisioni di autenticazione e autorizzazione usando un’infrastruttura comune. Figura 1. Insieme di domini amministrativi federati L'infrastruttura tecnologica di gestione dell’identità federata deve basarsi su protocolli standard, in questo caso SAML. Per interpretare gli attributi scambiati tra i vari componenti della federazione in modo corretto inoltre, occorre utilizzare un linguaggio comune sia a livello sintattico sia semantico, in modo da attribuire un significato preciso agli attributi e ai loro possibili valori. La difficoltà principale nella gestione dell’identità federata consiste nel trovare un approccio comune, condiviso da tutti i partecipanti alla federazione, in grado di risolvere i problemi di oggi e i bisogni di domani. Per una buona gestione dell’identità elettronica federata occorre attuare i seguenti aspetti: • • • • Utilizzo di un’infrastruttura tecnologica AAI sicura e scalabile Creazione di una relazione di fiducia tra i partecipanti alla federazione Presenza di un ente super partes che abbia il compito di: o Gestire l’infrastruttura tecnologica comune della federazione o Far rispettare le regole stabilite dai partecipanti della federazione o Sottoscrivere i contratti d’adesione alla federazione da parte dei partecipanti o Gestione della mappa della federazione (metadati) o Fornire assistenza ai partecipanti alla federazione Utilizzo di una Certification Authority X.509 per garantire la sicurezza dei • • dati scambiati Utilizzo di un linguaggio comune per gli attributi da scambiare Realizzazione dei servizi ed applicazioni in conformità alle specifiche tecniche della federazione. I requisiti della gestione dell'identità federata nell'ambito del progetto OpenInFSE Requisito del progetto OpenInFSE è preservare e riutilizzare eventuali infrastrutture già implementate dalle Regioni rendendole interoperabili con quella di OpenInFSE che è basato sul protocollo standard SAML2. I requisiti di tale sistema sono: 1. L'identità di un individuo è gestita dalla Regione italiana dove risiede 2. Gli individui sono identificati da un Identity Provider (IDP) utilizzando un meccanismo di autenticazione che viene deciso dalla Regione di appartenenza 3. Un utente autenticato viene identificato da vari attributi, del tipo: nome, cognome, data di nascita, cittadinanza, sesso, comune di residenza, statura, colore degli occhi, ecc. 4. Deve essere utilizzato un sistema di autorizzazione basato sui ruoli; un ruolo per un utente autenticato viene assegnato/verificato dalle Attribute Authorities (AA) utilizzando attributi quali: medico generico, medico di pronto soccorso, paziente, infermiere, persona iscritta ad organizzazione professionale, impiegato amministrativo di un ospedale, farmacista, ecc; 5. L'identità elettronica di un individuo è composta da un insieme di valori aggregati relativi all'identità ed ai ruoli del soggetto. Tale aggregazione è gestita da un'autorità aggiuntiva denominata Profile Authority (PA). L'architettura di gestione dell'identità federata proposta per il progetto OpenInFSE è compatibile con l'implementazione del progetto ICAR (Interoperabilità e Cooperazione Applicativa fra le Regioni, task INF-3: gestione dell'identità). Al momento, l'implementazione ICAR supporta solo il profilo SAML Web Single Sign On (Web - SSO), mentre il progetto OpenInFSE fornisce le specifiche di utilizzo anche del profilo SAML per Web Services Security. Interazione dei componenti OpenInFSE - Profilo Web SSO profile Nel seguito si descrive l'interazione dei componenti infrastrutturali nel caso di accesso ad una risorsa protetta dalla federazione senza una sessione SSO valida (il caso con sessione SSO valida risulta un sottoinsieme di questo). L'interazione globale è presentata in Figura 2. Fig. 2. Interazione dei componenti OpenInFSE per il profilo Web SSO L’utente della regione B vuole accedere ad una risorsa gestita da un SP della regione A protetta dalla federazione. Il Service Provider nella Regione A inoltra ogni richiesta di autenticazione e di attributi al Local Proxy nella sua regione. Il Local Proxy è un proxy SAML che ha un rapporto di fiducia con tutto il resto dell'infrastruttura della federazione. Il browser viene reindirizzato quindi al Local Proxy con la richiesta di attributi/autenticazione generata dal Service Provider locale. Se la richiesta è valida, l'utente tramite il suo browser interagisce con il LP per identificare il suo Profile Authority. Il Local Proxy quindi reindirizza il browser al Profile Authority selezionato generando una nuova richiesta SAML di autenticazione/attributo. Il Profile Authority verifica la richiesta di autenticazione SAML ricevuta: se è valida, interagisce con l'utente tramite il browser per individuare l'Identity Provider dell'utente. Dopo che l'utente ha selezionato l'Identity Provider corretto, il Profile Authority reindirizza il browser dell'utente, generando una nuova richiesta di autenticazione all'Identity Provider selezionato. L' Identity Provider verifica la validità della richiesta di autenticazione: se è valida, l'utente può autenticarsi direttamente presso la sua Regione. Se l'autenticazione è valida, il browser dell'utente, che contiene la risposta all'autenticazione SAML, verrà reindirizzato al Profile Authority. Esso verifica la validità della risposta SAML e nel caso sia valida, offrirà all'utente la scelta della selezione del profilo (in base ai suoi possibili ruoli); nel caso l'utente possegga un solo profilo, la selezione sarà fatta automaticamente. Dopo la selezione del profilo, il Profile Authority reindirizza il browser dell'utente alle Attribute Authorities appropriate per recuperare gli attributi che confermino o meno il ruolo selezionato dell'utente. Il Profile Authority aggrega le risposte SAML ottenute da Identity Provider ed Attribute Authorities, e reindirizza il browser dell'utente al Local Proxy che a sua volta lo reindirizza al Service Provider che aveva originato la richiesta iniziale. Se il processo di autorizzazione approva il profilo dell'utente egli può accedere al servizio richiesto. In caso contrario, l'accesso verrà negato. Interazione dei componenti OpenInFSE - profilo Web Services Security L'infrastruttura OpenInFSE utilizza il Web Services Security (WS-Security) con l'obiettivo di garantire autenticità, integrità e riservatezza dei messaggi SOAP. WS-Security definisce un elemento <Security> che può essere incluso nell'intestazione (header) di un messaggio SOAP e specifica come il messaggio è protetto. WS-Security fa uso di meccanismi definiti nelle specifiche standard W3C XML Signature e XML Encryption che si utilizzano per firmare e crittografare i dati del messaggio SOAP. Le informazioni contenute nell'elemento <security> specificano quali operazioni sono state eseguite e in quale ordine, quali chiavi sono state utilizzate per queste operazioni, e quali attributi/informazioni di identità sono associate a tali informazioni. WS-Security fornisce anche altre caratteristiche, come ad esempio la possibilità di marcare le informazioni di sicurezza mediante dei timestamp . L'architettura di gestione delle identità federate per il profilo Web Services security è mostrata in Fig. 3. Fig. 3. Uso tipico di WS-Security con SAML Token 1 Secondo lo standard WS-Security, la sicurezza dei dati viene gestita mediante token di protezione che possono essere di tipo binario oppure dei token XML. I token binari, come i certificati X.509 e i ticket Kerberos, sono trasportati in un involucro XML, mentre i token XML, come le asserzioni SAML, sono inseriti direttamente come sotto-elementi dell'elemento <Security>. L'utilizzo di asserzioni SAML con WS-Security è descritto nel profilo Web Services Security SAML Token Profile. Le caratteristiche dell'utilizzo di asserzioni SAML, secondo 1 R. Sandhu et al, Role-Based Access Control Models, IEEE Computer, 29(2):38-47, Feb. 1996 quanto definito in WS-Security, sono le seguenti: • Le asserzioni SAML vengono trasportate in un elemento <Security> all'interno dell'intestazione della busta SOAP, vedere Fig. 4 • Le asserzioni SAML svolgono un ruolo nella protezione dei messaggi in cui sono trasportate; contengono una chiave utilizzata per la firma digitale dei dati all'interno del corpo del messaggio SOAP • Le asserzioni SAML saranno state ottenute in precedenza e verranno utilizzate per garantire il messaggio SOAP. Fig. 4. WS-Security con un Token SAML Formatted: English (United States) Il profilo Web Services Security SAML Token Profile non usa i protocolli SAML basati su Request/Response ma descrive l'utilizzo di tre metodi di subject confermation: 'portatore', 'holder-of-key' e 'sender-vouches'. Il metodo ‘portatore’ non viene utilizzato dall’infrastruttura OpenInFSE poiché non fa uso di chiave pubblica o certificato digitale per garantire la sicurezza dei messaggi SOAP. Gli altri due metodi: 'holder-of-key' e 'sender-vouches', utilizzati da OpenInFSE, invece fanno uso di chiavi pubbliche X.509 per proteggere i messaggi SOAP. Poiché vi è una chiave associata ad un token 'holder-of-key', tale token può essere utilizzato per fornire protezione a livello di messaggio. Il processo è il seguente: A = Utente finale B = web service client C = Security Token Services (STS) D = web service Formatted: English (United States) A = B (Caso 'holder-of-key') B contatta C per ottenere un'asserzione SAML relativamente a se stesso in modo da poter accedere D. B quindi fornisce il proprio certificato a C e C autentica il certificato di B, creando un'asserzione SAML con l'identità di B e mettendo il certificato di B nell'asserzione firmata da C. B invia l'asserzione a D, firmando il messaggio con la chiave privata associata nell'asserzione. Il metodo di conferma del soggetto 'sender-vouches' viene utilizzato quando un server ha bisogno di diffondere l'identità del soggetto autenticato con i messaggi SOAP per conto del soggetto. L’identità del soggetto deve essere ottenuta utilizzando altri metodi come il Web SSO oppure un’autenticazione locale. Questo metodo è simile alle auto-asserzioni di identità e l'ente attestante deve proteggere le auto-asserzioni SAML mediante una firma digitale così che il destinatario possa verificare che nessun altro lo abbia alterato. Questo metodo consente la scalabilità e l'interoperabilità tra le regioni italiane e permette di nascondere i metodi di autenticazione utilizzati da ciascuna regione partecipante. Occorre stabilire un rapporto di fiducia tra il mittente e il destinatario mediante lo scambio dei metadati della federazione. Questo metodo consente la cifratura dei messaggi scambiati garantendone la riservatezza end-to-end. A = end user B = web service client C = STS D = web service A! = B (Caso: sender-vouches) B contatta C per ottenere un'asserzione SAML a nome di A per accedere D. Il metodo utilizzato per recuperare l'asserzione SAML può essere simile a quello descritto nella sezione Web SSO che coinvolge l'utente finale D. C crea un'asserzione SAML con l'identità di A e la firma. B invia l'asserzione a D e usa il certificato di B per garantire l’autenticità del messaggio. Formatted: English (United States)