2011-11-02 15 views
6

Ho un'applicazione C# .net che ospita sia gli utenti interni dell'azienda che i clienti esterni. Devo fare una autorizzazione a grana fine come chi accede a quale risorsa. Quindi ho bisogno di qualcosa come le risorse o gli attributi, piuttosto che un'autorizzazione basata sui ruoli.Autorizzazione dettagliata per applicazioni Web

cosa mi viene in mente è quello di uno:

  1. realizzare il mio proprio meccanismo di autorizzazione e tabelle SQL per la mia applicazione .net
  2. Usa/implementare un meccanismo standard, come un software che ha implementato XACML (per esempio Axiomatics)

Il problema con il primo metodo è che non è centralizzato né standard, quindi altri sistemi non possono utilizzarlo per l'autorizzazione.

Il problema con il secondo approccio è che è potenzialmente più lento (a causa di chiamate aggiuntive necessarie per ciascuna risorsa). Inoltre, non sono sicuro di quanto una licenza standard come XACML sia supportata da applicazioni sul mercato per facilitare le future integrazioni.

Quindi, in generale quali sono le buone pratiche per l'autorizzazione a grana fine per le applicazioni Web che dovrebbero servire sia gli utenti interni che i clienti esterni?

+0

Le autorizzazioni di accesso possono essere espresse come politiche (una regola generale che copre molte situazioni) o sono le decisioni di condivisione prese tra gli utenti tra di loro e sostanzialmente arbitrarie? – kgilpin

+0

@kgilpin: le autorizzazioni di accesso possono essere sia generali che specifiche. Generale come in "solo il gruppo A può leggere fatture" e specifico come in "utente X ha accesso in lettura all'account Alpha". – kaptan

+0

Penso che oggigiorno ci sia una certa confusione su cosa sia realmente il controllo degli accessi basato sui ruoli (RBAC). Nella sua visione formale, RBAC è in grado di fare ciò che desideri. Hai descritto due ruoli: "lettori di fatture" e "lettori di account Alpha". Di seguito sono riportate due risposte che provengono da fornitori di controllo degli accessi basati sugli attributi, ma le regole che descrivi sopra non mi sembrano basate sugli attributi. Esiste la percezione che "l'RBAC non può farlo", perché le persone confondono la formalità di RBAC con alcune implementazioni piuttosto deboli di RBAC. – kgilpin

risposta

8

Definitivamente farei l'autorizzazione esternalizzata. Non significa che sarà più lento. Significa che il controllo degli accessi è separato in modo pulito dalla logica aziendale.

Panoramica XACML è un buon modo per andare. Il TC è molto attivo e aziende come Boeing, EMC, Veterans Administration, Oracle e Axiomatics sono tutti membri attivi.

L'architettura XACML garantisce di ottenere le prestazioni desiderate. Dal momento che l'enforcement (PEP) e il motore decisionale (PDP) sono accoppiati liberamente, puoi scegliere come comunicare, quale protocollo utilizzare, se utilizzare più decisioni, ecc. Ciò significa che hai la possibilità di scegliere l'integrazione che si adatta alle tue esigenze di prestazioni.

C'è anche un'interfaccia PDP standard definita nel profilo SAML per XACML. Ciò garantisce un controllo degli accessi "a prova di futuro" laddove non si è bloccati in una particolare soluzione del fornitore.

controllo dell'accesso per le webapps quest'ultimo può essere eliminato in un PEP per webapps .NET utilizzando filtri HTTP in ISAPI e ASP.NET. L'Axiomatics ha una soluzione pronta per questo.

implementazioni attuali Se si seleziona la pagina clienti di Assiomatica, vedrete che hanno Paypal, Campana elicottero, e altro ancora. Quindi XACML è davvero una realtà e può affrontare implementazioni molto estese (centinaia di milioni di utenti).

Inoltre, Datev eG, uno dei principali fornitori di servizi finanziari sta utilizzando l'implementazione PDP .Net di Axiomatics per i suoi servizi/app. Dal momento che il PDP .Net è incorporato in quel caso, le prestazioni sono ottimali.

Altrimenti, è sempre possibile scegliere PEP off-the-shelf per .Net che l'integrazione con qualsiasi PDP, ad esempio un servizio di autorizzazione XACML basato su SOAP.

Alti livelli di prestazioni con XACML Lo scorso luglio in occasione della conferenza di Gartner "Catalyst", Assiomatica ha annunciato l'uscita del loro ultimo prodotto, l'assiomatica Reverse Query che aiuta a affrontare la 'sfida miliardi di record'. Mira al controllo degli accessi per le origini dati e RIA. Usa una soluzione XACML pura in modo che rimanga interoperabile con altre soluzioni.

È un dato di fatto, Kuppinger Cole ospiterà un webinar sul tema molto presto: http://www.kuppingercole.com/events/n10058

Controllare il comunicato stampa Assiomatica ARQ anche qui: http://www.axiomatics.com/latest-news/216-axiomatics-releases-new-reverse-query-authorization-product-a-breakthrough-innovation-for-authorization-services.html

3

sicuramente cercare un drop-in di autorizzazione modulo per la tua applicazione ASP.NET. Non sto dicendo questo solo perché implemento sistemi di autenticazione drop-in allo BiTKOO, ma perché in passato ho dovuto lavorare con le implementazioni di autenticazione sviluppate in casa. Costruire il proprio sistema di autorizzazione per una singola applicazione non è un buon uso del tempo o delle risorse a meno che non si intenda intraprendere una carriera dall'implementazione dei sistemi di sicurezza.

L'esternalizzazione della decisione di autorizzazione dall'app è una buona idea dal punto di vista architettonico. L'esternalizzazione della decisione authz offre un'enorme flessibilità per modificare i criteri di accesso in tempo reale senza dover chiudere il servizio Web o riconfigurare il server Web stesso. Il disaccoppiamento del front-end Web dal motore authz consente di ridimensionare ciascuno in modo indipendente in base al carico e ai modelli di traffico dell'applicazione e consente di condividere il motore authz su più app.

Sì, aggiungere una chiamata di rete all'app Web aggiungerà un po 'di sovraccarico alla risposta Web rispetto all'assenza di un'autorizzazione o all'utilizzo di un database locale sul server web. Questo non dovrebbe essere un motivo per non considerare l'autorizzazione esterna. Qualsiasi prodotto di autorizzazione seria che si considera fornirà una sorta di funzionalità di memorizzazione nella cache per ridurre al minimo il numero di chiamate di rete richieste per richiesta Web o anche per sessione utente su più richieste Web.

Nel sistema Keystone di BiTKOO, ad esempio, gli attributi utente possono essere memorizzati nella cache sul server Web per sessione utente, quindi c'è davvero una sola richiesta di rete back-end coinvolta nella richiesta della prima pagina come parte di stabilire un accesso utente . Le richieste di pagine successive (entro la durata delle credenziali memorizzate nella cache, in genere 5 minuti o giù di lì) possono essere gestite dal server Web senza la necessità di eseguire nuovamente il servizio authz. Questo si adatta bene alle web farm del cloud ed è basato sugli standard XACML.

Problemi correlati