Controllo degli accessi basato sui ruoli + Permessi basati sulla proprietà dei dati

18

Esiste un sistema o schema comune che combina le autorizzazioni fornite da un ruolo in un sistema RBAC con autorizzazioni in relazione alla dataownership?

Ad esempio:

Bob is a doctor and has the role with the privilege 'view patient details'
but only if 'patient is assigned to doctor Bob'

l'esempio sopra pone la relazione sull'attore (Doctor Bob in questo caso) ma In realtà sto cercando una soluzione basata su gruppi:

Ad esempio:

Bob is a doctor and has the role with the privilege 'view, patient details'
Bob is a member of group 'A'.
Bob can view all patient details for patients assigned to group 'A'

La mia domanda è
Esiste un modello di accesso comune che fa quanto sopra?

riassunto delle risposte che ho trovato
Sembrano esserci due soluzioni più o meno correlate per questo scenario: RBAC parametrizzato (pRBAC) e RBAC sensibile all'oggetto (ORBAC). La soluzione pRBAC ha, da quello che ho trovato, generato più interesse di ORBAC. A mio parere, è anche la più elegante e flessibile tra le due soluzioni.

Ci sono altre linee di ricerca là fuori che cercano di risolvere lo stesso problema di controllo degli accessi, ma quelle mirano a sostituire l'RBAC con un altro tipo di modello di controllo di accesso.

    
posta Jacco 16.01.2012 - 11:45
fonte

4 risposte

6

Questa è un'ottima domanda ed è stata identificata come uno dei problemi con RBAC. C'è stata una linea di ricerca sui ruoli parametrizzati (il pdf può essere trovato online) e più recentemente è emersa l'idea del controllo dell'accesso basato sulla relazione (vedi il lavoro di P. Fong et al, per esempio questo ). Non sono sicuro di quanto è stato implementato.

    
risposta data 22.02.2012 - 17:19
fonte
3

Potresti configurare un moderno prodotto Multi-Level Security (MLS) per risolvere il problema. Questi sistemi sono progettati per la protezione dei dati di livello militare su infrastrutture condivise. In genere, i sistemi utilizzano il controllo dell'accesso basato sui ruoli (RBAC), il controllo dell'accesso discrezionale (DAC) e il controllo dell'accesso obbligatorio (MAC) basato sulle etichette di sicurezza.

Le etichette di sicurezza indirizzano il tuo elemento mancante. In un sistema MLS tutti gli oggetti hanno un'etichetta per includere sia dati che processi. Le etichette forniscono lo schema per rivolgersi al medico e alla situazione specifica del gruppo.

Ecco una configurazione di esempio. Il set di etichette principali (noto come codifiche di sistema) include uno schema di etichetta che include gruppi individuali per tutti i gruppi di medici in questione. L'applicazione utilizzata da tutti i medici potrebbe essere limitata dal controllo RBAC che hai menzionato. Ogni medico avrebbe anche la propria etichetta di sicurezza unica nel proprio profilo account e quindi sarebbe solo in grado di accedere ai dati definiti da tale etichetta.

La configurazione iniziale è pesante, ma nel tuo caso hai a disposizione moltissime altre funzionalità come il controllo della stampa di documenti su quale stampante (i limiti hardware sono pensati come i limiti del gruppo medico).

La pagina di Wikipedia per MLS fornisce i fornitori (quando non è in blackout SOPA). Il prodotto Oracle Extensions Trusted ha alcuni buoni esempi di casi di utilizzo commerciale online sulla falsariga della tua domanda.

    
risposta data 17.01.2012 - 22:03
fonte
3

Esiste un modello simile utilizzato da Exchange 2010; dove il modello di accesso è limitato usando la proprietà "Ambito" che si applica al livello Binding. In questa implementazione, Scope è la "relazione" tra l'utente autenticato e l'unità organizzativa in cui si trova il "paziente".

Exchange 2010 ha un modello di delega in cui gruppi di winrm I cmdlet di PowerShell sono raggruppati in modo essenziale in ruoli e i ruoli assegnati a un utente.

( Fonte immagine )

Questo è un ottimo & modello flessibile considerando come sfruttare tutti i vantaggi di PowerShell, utilizzando al contempo le tecnologie di basso livello (WCF, SOAP ecc.) e non richiedendo software aggiuntivo sul lato client.

( Fonte immagine )

Si tratta di una progettazione di applicazioni molto moderna, e sto cercando di imitarla da sola. Ho una domanda simile su StackOverflow qui

    
risposta data 22.02.2012 - 16:10
fonte
0

Mi rendo conto che questa domanda ha quasi 4 anni. Le risposte, in particolare quella data da userxxxxx, sono grandiose.

Da allora, un nuovo paradigma del controllo degli accessi è maturato e affronta le carenze dell'RBAC. Si chiama controllo degli accessi basato sugli attributi (ABAC) e consente di esprimere relazioni utilizzando questi attributi all'interno delle politiche. Il linguaggio della politica è basato su uno standard chiamato XACML (eXtensible Access Control Markup Language).

Se rivisitiamo lo scenario dell'OP

Bob is a doctor and has the role with the privilege 'view, patient details'

Bob is a member of group 'A'.

Bob can view all patient details for patients assigned to group 'A'

Il modo in cui questo sarebbe stato riscritto in ABAC è:

A user with the role == doctor can do the action == view on an object of type == patient details if the patient's assigned group is in the list of the doctor's groups.

Usando ALFA come notazione, ottieni

namespace healthcare{
    policyset viewMedicalRecords{
        target clause actionId == "view" and object.nature == "patient details"
        apply firstApplicable       
        policy doctors{
            target clause user.role=="doctor"
            apply firstApplicable
            rule allowSameGroup{
                permit
                condition patient.group == doctor.group
            }
        }       
    }
}

Puoi leggere di più su ABAC sul sito web del NIST (National Institute of Science & Tech). Sono quelli che hanno anche definito RBAC.

    
risposta data 05.01.2016 - 04:35
fonte

Leggi altre domande sui tag