sistema example espaƱol ejemplo control basado acceso mysql credentials rbac db-schema

mysql - example - sistema de control de acceso basado en roles de yii2



Esquema DB de un control de acceso basado en roles (2)

Parece que no estoy viendo muchas de las asignaciones de RBAC, como:

Operation = Any action, such as CRUD operations Object = Reference to any object instance Permission = Mapping of ''Operation'' + ''Object''

No estoy seguro de cuáles son todas sus tablas de "credenciales"? Una credencial normalmente tiene propiedades para probar la identidad de uno (es decir, nombre de usuario / contraseña). ¿Por qué tienes credenciales para los roles?

Actualmente estoy desarrollando una administración miembro para una asociación local y estoy desarrollando el esquema de base de datos en este momento. Me gustaría compartirlo con usted para mejorarlo y dar a otros un ejemplo de un modelo de acceso basado en roles (RBAC). Apreciaría cualquier crítica constructiva, especialmente sobre las relaciones que utilicé entre las tablas.

Enlace a highres: http://i.stack.imgur.com/WG3Vz.png

Heres el esquema:

Cómo funciona:

Estoy mapeando clientes existentes (en realidad miembros de la asociación) desde una aplicación externa a mi aplicación de administración. (tabla de clientes)

La asociación está estructurada en División, Subdivisiones, etc. (tabla intern_structures). Cada cliente puede ser miembro en múltiples divisiones, subdivisiones, secciones, etc.

Cada cliente puede tener uno o varios roles en dichas membresías (divisiones, ...) como Presidente, Actuario, Tesorero, etc., y cada rol tiene ciertos privilegios que el propietario del rol puede aplicar a otros en su División, Subdivisión, Sección, etc. .

Una credencial está conectada a una determinada acción de una aplicación. El propietario de la credencial puede ejecutar esta acción en otros miembros en su alcance. Pueden existir múltiples aplicaciones "independientes" pero todas comparten el mismo sistema de autenticación / autorización.

Una aplicación está estructurada en Módulos / Submódulos / Acciones, etc. Un ejemplo podría ser un módulo de "Detalles personales" y este módulo contiene un submódulo llamado "Imagen" y podría aplicar la vista de acciones, eliminar, editar "en esta imagen. Pero no puede eliminar ninguna imagen a menos que la persona cuya imagen intenta eliminar esté en una división / sección en la que tenga el rol adecuado para hacerlo.

La estructura interna y de la aplicación son ambos árboles, implementados como lista de adyacencia y conjunto anidado. La lista de adyacencia garantiza la integridad y el conjunto anidado me permite atravesar el árbol rápidamente.

Una excepción es que puede dar ciertas credenciales a alguien directamente (client_credentials). Esto es necesario si alguien necesita realizar ciertas acciones en alguien que no está en su división / sección.

Entonces, alguien puede ser miembro en múltiples divisiones / secciones y obtener múltiples roles en cada división / sección de la que sea miembro. Voy a fusionar todas las credenciales que alguien tiene a través de sus múltiples roles. Y las credenciales son siempre positivas, significa que las credenciales restrictivas no son posibles.


Voy a dar otro ejemplo de un sistema RBAC que realmente me gusta. Por favor revisa el marco de radicore de Tony Marston here .

No estoy seguro de si cumple con todos sus requisitos, pero puede ayudar algo con lo que pueda comparar su trabajo.