Accesso basato sul tipo di informazioni richieste e sulla concessione di accesso

2

La soluzione semplice per accedere alla restrizione quando il numero di utenti è piccolo è Access Control Matrix. Qui le righe sono gli utenti e le colonne sono diversi tipi di risorse.

Nel mio caso, ho un documento che devo servire con attributi diversi. Quindi le mie colonne avranno attributi diversi. Quindi ora è semplice matrice 2-D.

Ma ho dei requisiti che dipendono anche dalle informazioni contenute nel documento. Quindi diciamo che ho due tipi di documenti, uno con l'attributo X e l'altro senza l'attributo X.

Per quanto ho ottenuto, questo aumenterà la dimensione della mia matrice in 3-D, dove nell'asse Z avrò due voci, "X Attr Doc", "Without X Attr Doc".

I miei requisiti sono tali che dipende anche dalle informazioni che sto servendo.

Solo la Soluzione che ho trovato finora è avere una matrice 2-d e in ogni cella della matrice avere una certa regola.

Assomiglia a questo:

Qui gli ClientID sono utenti diversi e Public, Core, Private, Default sono diverse categorie (set di attributi) di cui è concesso l'accesso o meno.

Puoi vedere in una cella, l'accesso è concesso solo se viene soddisfatta una determinata condizione che dipende dal documento.

Inoltre, voglio che in futuro questa tabella sia configurabile, per esempio, ogni volta che un nuovo client si registra, possiamo aggiungere una nuova riga. Oppure possiamo avere una nuova colonna se abbiamo una nuova categoria che deve essere servita.

C'è una soluzione migliore? In caso contrario, qualcuno può suggerire il modo più performante per implementarlo in JAVA. Stavo pensando al linguaggio delle espressioni come SPEL, ma non ne ho idea.

    
posta prakharjain 08.12.2017 - 07:05
fonte

1 risposta

3

Dichiarazione di non responsabilità: lavoro per Axiomatics , il principale fornitore di autorizzazione .

Ciao Prakharjain,

Ciò che stai descrivendo è la base per il controllo dell'accesso basato su attributi (). Con ABAC si definisce l'accesso in base agli attributi dell'utente come si farebbe in RBAC (ad es. Identità utente, ruolo, gruppo) ma anche altri attributi utente (reparto, data di nascita, posizione ...) così come attributi risorsa, attributi azione e attributi dell'ambiente (indirizzo IP, ora, dispositivo).

Nel tuo caso, vuoi controllare l'accesso alle risorse, ad es. un documento. Dichiari che il tuo documento ha attributi diversi. In ABAC, puoi definire proprietario di un documento, lista bianca, lista nera, tipo, sensibilità, dipartimento, ecc. Puoi avere tutti gli attributi che desideri.

Una volta definiti gli attributi (essenzialmente il tuo modello di informazioni), puoi iniziare a definire le norme di autorizzazione. Questa è la chiave qui. Piuttosto che definire le autorizzazioni in una tabella o in una matrice (che sono difficili da definire, mantenere, tenere aggiornato e controllare), si definiscono le autorizzazioni di autorizzazione usando le politiche. Una politica è simile alla seguente:

A user can view a document in their department.

Questa è la politica di base Permit . Concede l'accesso a condizione che l'utente e il documento si trovino nello stesso dipartimento. Una versione riscritta (analizzata) sarebbe:

A user can do action == "view" on asset of type == "document" if user.department == asset.department

E puoi aggiungere più criteri a quello di base. Ad esempio, potresti affermare che

  1. If the user is not the owner and the document is private, then deny access.
  2. If the user.clearance < document.classification, then deny access.
  3. If the user is in the whitelist, then allow access.

Puoi scegliere come combinare le policy.

Oltre a definire attributi e un modello di policy, ABAC definisce anche un'architettura:

  1. ilpuntodidecisionepolitica(PDP):ilnucleodell'architetturaincuivengonovalutatelepoliticheevengonopreseledecisioni.IlPDPèperXACMLciòchelaCorteSupremaèperlaleggedegliStatiUniti.
  2. ilPolicyEnforcementPoint(PEP):glielementidiintegrazionechepossonoessereovunqueinun'architetturadell'applicazione.IPEPsonoestremamenteversatiliasecondadidoveimpongonoilcontrollodegliaccessi.IlPEPstaaXACMLealPDPciòcheipoliziottieigiudicifannoaitribunalieallalegge
  3. ThePolicyInformationPoint(PIP):inABACeXACML,c'èbisognodiattributi.Gliattributisonolìperdescrivereutenti,servizi,risorse,azioniel'ambiente.Ipuntidiinformazionepoliticasonoarchividiattributi.Possonoessereinqualsiasiformatoeposizionatiovunque.IPIPsonoperXACMLciòcheilDVLA,l'insiemedeiregistridipolizia,l'ufficiodicensimento,ecc.Sonorivoltiaunanazioneeaisuoicittadini.
  4. Ilpuntodiamministrazionedellapolitica(PAP):quièdovegestisciletuenorme.

EsisteunostandardprincipalecheimplementaABACecioèXACML(eXtensibleAccessControlMarkupLanguage).Quellodicuihaibisognoèun'implementazioneXACMLcome Axiomatics Policy Server .

Dai anche un'occhiata a questa domanda Ho risposto a

HTH, David.

    
risposta data 18.12.2017 - 22:00
fonte

Leggi altre domande sui tag