Estoy trabajando en el componente de control de acceso de una aplicación web compleja. Uno de los objetivos es tener un modelo estrictamente definido para quién puede hacer qué, pero no puedo encontrar un modelo existente que satisfaga nuestras necesidades.
El problema es definir un sistema que pueda consultar con pares de objetos (normalmente un usuario y otra cosa, pero no necesariamente) para encontrar el nivel de acceso adecuado según la estructura de la aplicación. Estos 'objetos' son, en mi caso, 'modelos' en una aplicación web de estilo MVC. Digamos que uno de los modelos es un blog, y otro es un grupo de interés de algún tipo; un blog puede pertenecer a un grupo, un usuario puede pertenecer a un blog o un grupo y un grupo puede pertenecer a otro grupo. Un ejemplo del tipo de reglas que quiero usar: 'un usuario puede publicar comentarios en un blog si el usuario es miembro de un grupo al que pertenece ese blog'; "un usuario puede ver un blog si es un miembro de un grupo que es miembro de un grupo al que pertenece el blog", etc.
Estos casos son fáciles de implementar explícitamente en el código, pero me gustaría un modelo formal como RBAC y amigos. ¿Existe tal cosa? Si no es así, ¿hay alguna buena razón por la cual?
(Editado para - ¡con suerte! - Claridad)
Otras ediciones para mayor claridad:
Cortesía del enlace de Dennis, una definición de RBAC:
Unlike ACLs, access to a resource is determined based on the relationship
between the requester and the organization or owner in control of the
resource; in other words, the requester’s role or function will determine
whether access will be granted or denied.
En estos términos, me interesan las "relaciones [s] más complejas entre el solicitante y la organización ... ', junto con las relaciones similares entre las organizaciones y los recursos del sistema: en lugar de que cada recurso tenga una lista , establecido por su propietario, diciendo que 'tal y cual rol tiene tal y tal nivel de acceso', quiero que el nivel de acceso esté determinado por la relación (posiblemente compleja) entre el usuario y el 'propietario 'y entre el propietario y el recurso.
Conceptualmente tengo un gráfico que incluye usuarios, organizaciones y recursos, y quiero que las reglas de control de acceso estén determinadas (en parte) por la estructura de ese gráfico.
Edit: el tipo de tema del que estoy hablando es bastante similar a los 'predicados de políticas' en S4.2 de enlace .