Volver al blog

Separación del contratista en dos capas

Cuando varias partes comparten una plataforma (personal, subcontratistas e incluso contratistas competidores), cada una de ellas necesita poder ver tanto su propio trabajo como las capas compartidas. A continuación se explica cómo dos niveles de autorización les permiten hacerlo.

authorizationmulti-tenantcontractor-separationsecurity

La situación

Muchas organizaciones gestionan plataformas compartidas en las que varias partes trabajan con los mismos datos de activos. Una empresa de servicios públicos cuenta con equipos internos, un contratista principal de obras y dos o tres subcontratistas en la misma red. Un ayuntamiento cuenta con su propio personal y con empresas de ingeniería externas. Las partes que compiten entre sí a menudo acaban trabajando en la misma aplicación.

Cada usuario necesita un nombre de usuario. El nombre de usuario indica al sistema quién es. La separación requiere una segunda respuesta: qué es lo que cada persona está autorizada a ver.

Lo que requiere una separación

La separación en una plataforma compartida requiere cuatro propiedades.

Una plataforma común. Las partes colaboran en la mayor parte de los datos, elaboran informes sobre ellos y trabajan en un único mapa. La separación se aplica a la parte que es sensible.

Control en origen. Los registros restringidos permanecen en el servidor. El navegador, la API y todas las exportaciones solo reciben la información a la que la persona tiene acceso.

Reglas en un solo lugar. Una vez definida, una regla abarca todas las formas en que se leen los datos, incluidas las funciones que se añadan posteriormente.

Datos actualizados para todos. Cada parte trabaja con los registros en tiempo real.

Aptli cumple con los cuatro requisitos mediante dos capas.

El modelo de dos capas

Nuestro enfoque divide la autorización en dos capas independientes que se combinan.

Los derechos de administrador son de carácter permisivo. Establecen lo que una persona puede hacer: crear una orden de trabajo, modificar un informe o eliminar un artículo de stock. Una persona que no disponga de derechos de administrador solo puede ver los datos que le permiten sus funciones.

Las restricciones de roles son restrictivas. Cada una de ellas especifica un tipo de registro (características, órdenes de trabajo, informes), un campo del mismo (etiquetas, estado, categoría), una comparación y un valor. A los miembros del rol se les impide realizar las acciones seleccionadas (crear, leer, editar, eliminar) en los registros que cumplan los criterios, y cada restricción se expresa en forma de frase sencilla.

Las dos capas funcionan de forma independiente. Un trabajador de campo puede tener derecho a editar informes, mientras que una restricción de rol oculta los informes de otras personas. El derecho de administrador otorga la capacidad, y la restricción de rol limita el alcance. Esa independencia mantiene la solidez del modelo a medida que el producto crece.

Aplicación en el servidor

Aptli aplica restricciones de roles en el servidor, antes de que los datos salgan de la base de datos:

  • El filtro se aplica a todas las formas de consulta de datos: páginas de registros, listas, la API, las exportaciones y el mapa.
  • Una persona que pegue el identificador de un registro al que no tenga acceso recibirá el error 404 Not Found.
  • Un enlace compartido por otra persona solo abrirá aquello que permitan los propios roles de dicha persona.
  • Las nuevas funciones heredan estas reglas, ya que leen a través de la misma capa de datos del servidor.

El sistema responde a una pregunta en cada solicitud: ¿cumple este registro con la regla?

Un ejemplo resuelto

Dos contratistas que trabajan en el mismo proyecto de instalación de fibra óptica. Ambos utilizan el mismo mapa y las mismas capas base compartidas, y ambos registran informes correspondientes a su propio trabajo. Los elementos de cada contratista llevan su propia etiqueta: contractor-a o contractor-b.

Cree un rol denominado Contratista A con una restricción:

  • Tipo de registro: Elemento
  • Campo: etiquetas
  • Comparación: es cualquiera de
  • Valor: contratista-b
  • Acciones bloqueadas: Crear, Leer, Editar, Eliminar

La ventana «Roles» lo muestra como una frase: Los miembros del rol «Contratista A» pueden realizar todas las acciones, excepto crear, leer, editar y eliminar registros de «Feature» en los que la etiqueta sea cualquiera de las siguientes: «contratista-b». Asigne el rol al personal del Contratista A y configure el espejo para el Contratista B con «contractor-a». Esa es toda la configuración.

Los equipos del contratista A ahora pueden ver sus propios elementos y las capas compartidas. En una lista de elementos no aparecen los del contratista B, la exportación a CSV está filtrada y, al pegar un ID, se muestra el error 404 «No encontrado». El contratista B ve exactamente lo contrario. Cada parte puede ver su propio trabajo, dónde se encuentra y cuándo se modificó.

Las capas de infraestructura compartidas (rutas de cables, postes e infraestructura de conductos) no llevan ninguna de las dos etiquetas y permanecen visibles para ambas partes. Las partes colaboran cuando lo desean y mantienen su independencia cuando es necesario.

Cuando las partes no comparten nada

Dos partes que no comparten nada, que nunca colaboran entre sí y que, por motivos normativos, deben utilizar infraestructuras físicamente separadas, utilizan instancias independientes. Aptli gestiona una instancia y una base de datos por cliente, y cada parte puede disponer de las suyas propias.

La prueba es sencilla: las partes que se benefician de las mismas capas base, los mismos informes y el mismo mapa deben pertenecer a una misma plataforma, y la separación debe aplicarse a nivel del servidor.

Resumen

  • Varias entidades, en ocasiones competidoras, suelen compartir una misma plataforma en los sectores de los servicios públicos, las telecomunicaciones y la administración municipal.
  • Cada persona se identifica mediante un nombre de usuario. Una segunda capa determina qué puede ver cada persona.
  • La separación requiere una plataforma compartida, la aplicación de las restricciones en origen, la centralización de las normas en un único lugar y datos actualizados para todos.
  • Las dos capas de Aptli son los derechos de administrador (lo que una persona puede hacer) y las restricciones de rol (a qué registros no tiene acceso), que se aplican en el servidor.
  • Los registros restringidos permanecen en el servidor, fuera de las listas, de la API, de las exportaciones y de los enlaces pegados.
  • La configuración que funciona consiste en un rol por contratista que restringe la etiqueta del otro, con las capas compartidas visibles para ambos.
  • Las partes que no comparten nada y necesitan una infraestructura independiente utilizan instancias separadas.