Últimamente he estado considerando el mejor modelo de control de acceso para usar en mi aplicación. He estado leyendo en RBAC y el concepto de función es bueno (especialmente si tiene una gran cantidad de permisos diferentes), sin embargo, no estoy seguro de qué tan aplicable es para la administración jerárquica de usuarios como la siguiente:Control de acceso: ¿vale la pena implementar RBAC en un sistema jerárquico de administración de usuarios?
Every el usuario pertenece a uno o más grupos. Los grupos están organizados en un árbol (como una estructura de directorio). Tanto a los grupos como a los usuarios se les pueden asignar permisos (o roles, si hablamos de RBAC) y probablemente debería haber algún tipo de herencia (es decir, los usuarios y grupos heredan los permisos de los grupos a los que pertenecen) y la funcionalidad de anulación. El propósito de los grupos en sí no es gestión de permisos: tendrán otros usos en la aplicación.
Imagino todo lo anterior no sería demasiado problemático para diseñar y poner en práctica más si se utilizaron permisos sin papeles ("funciones" son colecciones de permisos en la terminología RBAC) desde permisos son muy granular mientras que los roles son más monolítico. La implementación de la herencia/anulación de permisos a nivel de grupo/usuario no sería demasiado difícil. Hacer lo mismo con los roles probablemente sea más complicado, pero, por otro lado, los roles son más fáciles de entender para un usuario promedio.
En este momento, me estoy inclinando más hacia el modelo de "permisos sólo" porque:
- la aplicación probablemente no tendrá más de 30 permisos diferentes;
- grupos mismos se pueden usar para establecer los permisos que ya proporciona una de las ventajas de los roles - la facilidad de gestión de permisos de múltiples usuarios
- el concepto parece claro y por lo tanto fácil de implementar
Sin embargo, si se presentó un modelo lógico y fácilmente comprensible basado en roles que tenía una ventaja sobre la de "solo permisos", la analizaría seriamente. ¿Existen modelos de RBAC bien definidos (documentos, implementaciones, etc.) ya disponibles que podrían aplicarse/adaptarse a los requisitos anteriores (los he estado buscando por algún tiempo, pero los que encontré eran demasiado restrictivos o inexistentes? tomar en cuenta la gestión jerárquica de usuarios)? ¿Cuál es su opinión general sobre el asunto? ¿RBAC vale la pena en este caso?
Respondiendo aquí por lo que usted es notificado de mi comentario. Aquí hay una implementación que usa rol y grupos: http://www.xaprb.com/blog/2006/08/16/how-to-build-role-based-access-control-in-sql/ – koen
re: tu ejemplo He actualizado mi respuesta – koen