RBAC e asserzioni, quale flusso di autorizzazione è migliore?

2

Vorrei chiedere quale flusso di autorizzazione è considerato migliore o standard.

Primo approccio (ha ruolo AND assertion è valido):

if (!isGranted(roles, permission) {
    return false;
}

if (hasAssertion(permission)) {
    return assert(getAssertion(permission), context);
}

return true;

Secondo approccio (ha ruolo O asserzione è valida)

if (isGranted(roles, permission) {
    return true;
}

if (hasAssertion(permission)) {
    return assert(getAssertion(permission), context);
}

return false;

Modifica: sto progettando l'applicazione di chat, con utenti con permessi diversi in diverse chat room.

    
posta stil 17.02.2014 - 18:03
fonte

2 risposte

1

Stai soffrendo della mancanza di ricchezza in RBAC. Quello che vuoi veramente considerare è il controllo degli accessi basato sugli attributi. Ad esempio, in questo caso, è possibile definire regole come:

  • un utente può pubblicare in una stanza a cui è assegnato
  • un utente con il ruolo moderatore può modificare i messaggi in una stanza lui / lei è un moderatore in
  • un utente può modificare i propri messaggi ...

Tutti questi sono esempi di regole / regole basate sugli attributi.

Il NIST ha avuto un progetto in corso sul controllo degli accessi basato sugli attributi. Puoi leggere ulteriori informazioni su questo modello qui .

Puoi anche controllare questo video di YouTube per le basi del controllo degli accessi basato sugli attributi.

Per implementare ABAC, dai un'occhiata a XACML, l'eXtensible Access Control Markup Language definito da OASIS.

    
risposta data 18.02.2014 - 12:15
fonte
0

Ogni volta che utilizzo un modello di accesso di controllo, utilizzo l'approccio "AND". In questo modo minimizzi gli errori quando esegui il reticolo delle autorizzazioni, in questo caso utilizzerei il primo approccio.

Se hai davvero il problema di dover concedere l'accesso ad alcuni utenti con ruoli diversi, quasi sicuramente il tuo programma di ruoli deve essere ridisegnato. Nel frattempo, lavorando per ridisegnare i tuoi ruoli, puoi utilizzare il secondo approccio.

    
risposta data 17.02.2014 - 19:02
fonte

Leggi altre domande sui tag