Use la herramienta adecuada para el trabajo como dicen. RBAC, como cualquier modelo de control de acceso, tiene sus debilidades. Muchos son bien entendidos, incluso discutidos por el equipo original de NIST que enmarcó el modelo.
enlace
Sin embargo, hubo algunas inexactitudes en la respuesta de David Brossard. Por ejemplo ...
yo Es estático. RBAC no puede usar información contextual, por ejemplo, hora, ubicación del usuario, tipo de dispositivo ...
Las restricciones se aplican comúnmente durante la activación de usuarios, roles y permisos en RBAC. Por ejemplo, colocar restricciones temporales en la activación de un rol. De hecho, INCITS 494 prescribe su uso:
5.4 RBAC Policy Enhanced Constraints
Las restricciones mejoradas van más allá del estándar INCITS 359 RBAC al incluir tipos adicionales de restricciones. Las restricciones en los roles pueden ser estáticas o dinámicas. Las restricciones estáticas se aplican fuera de línea antes de que el usuario active la función. Las restricciones dinámicas se aplican en línea después de que se activan los roles. Estas restricciones dinámicas mejoradas pueden introducir atributos en el entorno RBAC.
INCITS 494-2012, pág. 8
II. No puede atender a la segregación dinámica del trabajo.
RBAC admite restricciones de SoD dinámicas. De la especificación:
Separación dinámica de relaciones de servicio
La separación estática de las relaciones de trabajo reduce el número de permisos potenciales que pueden estar disponibles para un usuario al colocar restricciones en los usuarios que pueden asignarse a un conjunto de roles. Las relaciones de separación dinámica de tareas (DSD), como las relaciones SSD, están destinadas a limitar los permisos que están disponibles para un usuario. Sin embargo, las relaciones de DSD difieren de las relaciones de SSD por el contexto en el que se imponen estas limitaciones. Las relaciones SSD definen y colocan restricciones en el espacio total de permisos de un usuario. Este componente del modelo define las propiedades de DSD que limitan la disponibilidad de los permisos sobre el permiso de un usuario
espacio al colocar restricciones en los roles que se pueden activar dentro o a través de las sesiones de un usuario.
ANSI INCITS 359-2004, p. 10
III. Se basa en código personalizado dentro de las capas de aplicación (API, aplicaciones, DB ...) para implementar controles más precisos.
Esta afirmación confunde un poco porque antes usted declaró que RBAC es de grano grueso.
¿Quiere decir que debe escribirse un código personalizado porque los controles RBAC no satisfacen adecuadamente los requisitos de seguridad para la autorización?
¿Dónde están las especificaciones funcionales publicadas de ABAC? ¿Dónde están el modelo estándar de objeto (datos) y funcional (api) para calcular (y almacenar) sus decisiones?
¿Quizás es mejor usar una implementación ABAC no estándar y comprobada que un widget de aplicación personalizado? Si eso es lo que estás diciendo, entonces estoy de acuerdo, pero ninguno de los dos es ideal.
ABAC tiene su lugar al igual que RBAC. Saber cuándo usar uno, el otro, o ambos, es importante. Comprender las limitaciones y fortalezas de cada uno es crucial antes de abordar adecuadamente los desafíos que enfrentamos como profesionales de la seguridad.