Estoy tratando de formular un modelo de permisos RBAC que permita la separación entre los permisos y los ámbitos en los que se aplican esos permisos. No he podido encontrar un modelo estándar que describa esto.
Aquí hay un ejemplo:
- Un permiso consiste en una operación en un recurso:
- (Ver) (Informes de operaciones)
- (Crear) (Informes de operaciones)
- (Administrar) (Publicaciones)
- Los roles son colecciones de permisos:
- Un (Gerente de producto) puede (Administrar lanzamientos) y (Ver informes de operaciones)
- Un (Administrador de operaciones) puede (Crear informes de operaciones) y (Ver informes de operaciones)
- A los usuarios se les pueden asignar roles:
(Alice) y (Bob) son (Product Manager) s
Hasta ahora, este es el estándar RBAC-0. Ahora agreguemos otra capa ortogonal:
- (Alice) es un (Gerente de producto) para "Cool New Product (CNP)"
- (Bob) es un (Gerente de producto) para "Producto estrella (FSP)"
- (Charlie) es un (Gerente de producto) para ...
- ...
Esto parece ser un caso de uso bastante común.
En una implementación ingenua, podríamos duplicar roles y permisos para cada producto. Así que en lugar de:
- (Gerente de producto)
- (Administrar) (Publicaciones)
- (Ver) (Informes de operaciones)
ahora tenemos:
- ( CNP Product Manager)
- (Administrar) ( CNP Lanzamientos)
- (Ver) ( CNP Informes de operaciones)
- ( FSP Product Manager)
- (Administrar) ( FSP Lanzamientos)
- (Ver) ( FSP Informes de operaciones)
- ...
- ...
Esto puede crecer rápidamente de las manos. ¿Cómo modelo este escenario para evitar la duplicación exponencial?