Mi experiencia al experimentar con una implementación de RBAC personalizada es la siguiente:
-
Usted lee mucha literatura de RBAC y cree que la entiende. Luego continúa y trata de implementarlo, solo para darse cuenta de que realmente no lo entendió en absoluto. Eventualmente tendrá sentido a medida que avance en el proyecto.
-
Según su pregunta, ya conoce el dominio comercial al que desea aplicar RBAC. Pero olvídese de los objetos comerciales reales por ahora. Su implementación de RBAC debe ser genérica, lo que significa que tiene un esquema de base de datos que consta de tablas de roles, usuarios, permisos, operaciones, etc. Entonces tendrá objetos que se asignan a dichas tablas (relación uno a uno).
Una vez que tenga esta implementación de RBAC, se puede modelar para prácticamente cualquier dominio comercial, como un "Departamento" que haya mencionado.
Solo recuerde que no todo es perfecto... He mejorado/modificado/derivado de la literatura RBAC real para agregar funciones personalizadas, mejorar el rendimiento, etc.
No he trabajado en esto por un tiempo, así que espero estar en lo correcto en lo siguiente:
- Usuario:las instancias se crean y guardan en su tabla de respaldo.
-
Rol:las instancias se crean y se guardan en su tabla de respaldo. Los roles se asignarán a los usuarios.
-
Permiso:Un permiso básicamente es una combinación de una Operación en un Objeto. Los permisos se asignan a los roles.
-
Operación:Una operación es simplemente cualquier cosa que quieras. Podría ser CRUD (crear, leer, actualizar, eliminar) o también podría ser 'imprimir', 'buscar' o cualquier cosa que un humano (o sistema) pueda realizar en un objeto (o grupo de objetos).
- Objeto:esto es básicamente todos sus objetos que componen su dominio comercial.
Para obtener aún más poder, puede implementar restricciones para aplicar una enorme cantidad de restricciones diversas.
Con este marco, debería poder mapear:
- Quién puede asignar usuarios a un departamento
- Quién puede eliminarlos de los departamentos
- Cuántos usuarios puede haber en un departamento
- Qué tipo de usuarios (según sus roles asignados) pueden estar en un departamento
- Qué roles pueden realizar qué operaciones a un departamento (crearlos, leerlos, actualizarlos, eliminarlos)
- Etc.