GrantForge

    Inicio rápido

    Conceptos básicos

    Inquilinos, cuentas, recursos, roles, autorizaciones, asignaciones y evaluación, así como la relación entre ellos.

    El modelo de GrantForge se resume en una frase: la cuenta obtiene roles mediante asignaciones, los roles se autorizan sobre recursos, y en la evaluación esas autorizaciones se combinan en los permisos efectivos de la cuenta.

    flowchart LR
      A[Cuenta] -->|asignación directa| R[Rol]
      G[Grupo] -->|asignación| R
      O[Departamento] -->|asignación, subordinados incluidos| R
      P[Puesto] -->|asignación| R
      A -.pertenece a.-> G
      A -.pertenece a.-> O
      A -.ocupa.-> P
      R -->|hereda| R2[rol padre]
      R -->|autorización permitir/denegar| S[Recurso]
      S --- M[Menú · Página · Botón]
      S --- API[API]
      S --- D[Entidad de datos · Campo]

    Inquilinos

    El inquilino es la frontera de aislamiento de los datos: cada inquilino tiene sus propias cuentas, organización, roles y autorizaciones, que no son visibles para los demás. El primer inquilino que se crea en la inicialización es el inquilino plataforma; sus administradores pueden además gestionar otros inquilinos, el catálogo de recursos y el servidor de autorización. Si solo das servicio a una organización, puedes quedarte con ese único inquilino.

    Cuentas y organización

    • Cuenta: el sujeto que inicia sesión; el nombre de usuario es único en toda la plataforma. Una cuenta puede ser local (la contraseña se guarda en GrantForge) o proceder de una fuente de identidad (LDAP u OIDC, en cuyo caso la contraseña la gestiona la fuente de identidad).
    • Departamento: estructura en árbol; cada cuenta tiene un departamento principal y puede colaborar en otros departamentos.
    • Grupo: conjunto de personas sin relación con la estructura organizativa, por ejemplo el "grupo de guardia".
    • Puesto: un cargo, por ejemplo "responsable financiero"; una cuenta puede ocupar varios puestos.

    Recursos

    Un recurso es "todo aquello que puede recibir una autorización", organizado en un árbol por aplicación:

    Tipo Explicación
    Módulo, menú Agrupaciones que organizan las páginas
    Página, etiqueta Una página de la consola o de una aplicación, o una pestaña dentro de una página
    Botón Una acción sobre una página, por ejemplo "Eliminar usuario"
    API Una interfaz REST, por ejemplo api:GET:/api/v1/users
    Entidad de datos, campo Una entidad de negocio cuyo rango de filas se puede limitar, así como los campos de esa entidad que se pueden ocultar o enmascarar

    Entre los recursos puede haber dependencias: un botón necesita la API que llama, y una página necesita las API de las que carga datos. Al autorizar una página o un botón, sus dependencias se arrastran consigo, lo que evita "ver el botón y obtener un error de falta de permiso al pulsarlo".

    La propia consola de GrantForge también es una aplicación: sus páginas, botones y API se registran automáticamente en el catálogo de recursos al arrancar, de modo que los permisos de la consola también los deciden los roles.

    Roles, autorizaciones y asignaciones

    • Rol: el nombre de un conjunto de autorizaciones. Los roles de sistema (administrador del inquilino, administrador de la plataforma) se crean junto con el inquilino, cubren módulos completos y no se pueden modificar; el resto son roles personalizados.
    • Autorización: un rol "permite" o "denega" un recurso. La denegación prevalece sobre el permiso.
    • Herencia: un rol puede heredar todas las autorizaciones de otros roles; las relaciones de herencia no pueden formar ciclos.
    • Asignación: entrega el rol a una cuenta, a un grupo, a un departamento (opcionalmente con los departamentos subordinados) o a un puesto; se pueden fijar las fechas de entrada en vigor y de caducidad.

    Evaluación

    Cuando hace falta determinar un permiso, GrantForge encuentra todos los roles efectivos de la cuenta (los asignados directamente, los obtenidos por grupo, departamento o puesto, y los obtenidos por herencia, siempre que estén vigentes y que el rol esté habilitado), combina sus autorizaciones y obtiene:

    • los recursos utilizables (páginas, botones, API);
    • el rango de filas de cada entidad de datos en la lectura, la modificación, la eliminación y la exportación;
    • la forma de leer y escribir cada campo (visible, enmascarado, oculto; editable, solo lectura).

    El resultado lleva un número de versión: cualquier cambio en las autorizaciones, las asignaciones o el catálogo hace que ese número cambie, y la consola y el SDK refrescan su caché en consecuencia. Las reglas detalladas están en el modelo de permisos.

    Editar esta página en GitHub