RBAC y afirmaciones, ¿qué flujo de autorización es mejor?

2

Me gustaría preguntar qué flujo de autorización se considera mejor o estándar.

Primer enfoque (el rol Y la afirmación son válidos):

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

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

return true;

Segundo enfoque (tiene un rol o una afirmación válida)

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

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

return false;

Editar: estoy diseñando la aplicación de chat, con usuarios que tienen diferentes permisos en diferentes salas de chat.

    
pregunta stil 17.02.2014 - 18:03
fuente

2 respuestas

1

Estás sufriendo por la falta de riqueza en RBAC. Lo que realmente desea considerar es el control de acceso basado en atributos. Por ejemplo, en este caso, podría definir reglas como:

  • un usuario puede publicar en una sala a la que está asignado
  • un usuario con el rol de moderador puede editar mensajes en una sala en la que es moderador
  • un usuario puede editar sus propios mensajes ...

Todos estos son ejemplos de políticas / reglas basadas en atributos.

NIST ha tenido un proyecto en curso sobre control de acceso basado en atributos. Puede leer más sobre este modelo aquí .

También puede consultar este video de YouTube para obtener información básica sobre el control de acceso basado en atributos.

Para implementar ABAC, eche un vistazo a XACML, el lenguaje de marcado de control de acceso comprensible definido por OASIS.

    
respondido por el David Brossard 18.02.2014 - 12:15
fuente
0

Siempre que uso un modelo de acceso de control, utilizo el enfoque "AND". De esta manera, minimiza los errores al rallar los permisos, por lo que, en este caso, utilizaría el primer enfoque.

Si realmente tiene el problema de tener que otorgar acceso a algunos usuarios con diferentes roles, entonces, casi seguro, su esquema de roles necesita un rediseño. Mientras tanto, trabajando en el rediseño de sus roles, puede utilizar el segundo enfoque.

    
respondido por el kiBytes 17.02.2014 - 19:02
fuente

Lea otras preguntas en las etiquetas