Este es un problema clásico. He estado interesado en este desde hace algún tiempo y no conozco ningún modelo estándar que realmente lo resuelva de inmediato (aún).
RBAC se puede adaptar para trabajar para su situación introduciendo parámetros. Hay varios nombres que pasan por estas adaptaciones, el más común es el RBAC parametrizado (pRBAC). También he visto nombres como Context Aware RBAC, Object Aware RBAC y RBAC relacional, que son diferentes encarnaciones de la misma idea básica. Desafortunadamente, algunos de estos términos, debido a que no hay estandarización o consenso, también se refieren a otros modelos de acceso.
Hay varios conceptos de pRBAC flotando alrededor, que difieren en todos los detalles pero siguen siendo en gran medida la misma idea.
Puede consultar los documentos Un diseño para roles parametrizados por Mei Ge y Sylvia L. Osborn . Un modelo formal de ha sido descrito por Ali E. Abdallah y Etienne J. Khayat en su documento Un modelo formal para el control de acceso parametrizado basado en roles .
Al igual que en el RBAC estándar, en pRBAC, a un sujeto se le asigna un rol. El rol consiste en uno o más permisos, cada permiso consiste en una operación, par de objetos.
Además de RBAC, pRBAC permite que los objetos tengan parámetros y que los usuarios se inicialicen para un determinado rol con valores de parámetros para un objeto en el que tienen permiso en ese rol.
Entonces, por ejemplo, al objeto studentCourseResult
se le asignaría el parámetro studentId
. En lugar de tener un rol llamado Teacher
, definiría el rol TeacherOf
con los valores del parámetro studentId = {1, 2, 7, 9, 11}
.
Si el valor del parámetro para el objeto está dentro del conjunto de valores de parámetro asignados a un sujeto para este rol, se otorga el acceso.
Tenga en cuenta que es un paso fácil desde aquí no solo permitir el operador =
para restricciones de parámetros, sino también permitir >
, <
, <=
, etc.
Además de pRBAC, puede consultar Control de acceso basado en atributos (ABAC) , que está bastante de moda en este momento ( pero está resolviendo un problema diferente y creando otros nuevos) y control de acceso basado en autorización (ZBAC) que es definitivamente un concepto muy interesante, pero es probable que sea una exageración para el caso de uso que usted describe, ya que soluciona el problema de la autorización entre dominios en su mayoría (y de manera muy clara).