Control de acceso para aplicaciones Multi-Tenant y SaaS

¿Qué es una aplicación multi-tenant?

‘Multitenancy’ es un concepto donde une sola copia de la aplicación corre en un servidor y es usada simultáneamente por varios clientes (tenants). La aplicación está diseñada para repartir su información y su configuración, para que así cada empresa pueda trabajar con una instancia personalizada y privada de la aplicación.

Los dos tipos de aplicaciones multi-tenant más frecuentes son:

  • Aplicaciones in-house: desarrolladas por empresas de gran tamaño y usadas a distancia por sus filiales, agencias, subsidiarias o socios
  • Aplicaciones comerciales: aplicaciones SAAS (software as a service), albergadas en una cloud pública (public cloud) y usadas por varios clientes

¿Cómo asegurar las aplicaciones multi-tenant?

El control de acceso para las aplicaciones multi-tenant necesita cumplir ciertos criterios.

1 – Proteger la información de cada una de las empresas que utilizan la aplicación
El riesgo de divulgación de la información es mayor en las aplicaciones multi-tenant. Los usuarios deben estar seguros de que su información está asegurada, a pesar del hecho de que comparten la aplicación con otras empresas.
Un sistema de control de acceso robusto, que aisla la información de cada uno de los tenant y que les provee un sistema individual de protección, sería el adecuado. Este sistema debe proveer, idealmente, las siguientes funcionalidades:

  • Definir y administrar los tenant (set de usuarios)
  • Definir y administrar las cuentas usuario como miembros de un tenant
  • Restringir el acceso a la información de cada tenant

2 – Delegar los privilegios de administración
El proprietario de la información debe tener la habilidad de decidir quién puede verla y entrar en ella. Cada empresa debe ser capaz de personalizar de manera independiente los derechos de acceso para cada usuario.
Por lo tanto, el sistema de control de acceso debe permitir a los usuarios:

  • Delegar la seguridad de la administración a los directores locales en el interior de cada empresa
  • Proteger la confidencialidad de la información: un administrador tenant no debe tener acceso a la información de la seguridad de otros tenants
  • Preservar la disponibilidad de los datos: mientras que la información necesita estar segura, también necesita ser accesible y disponible de manera oportuna. Lo mismo debe aplicar para las funcionalidades de los administradores

Administración de tenants independientes

El sistema de control de acceso debe ser capaz de reproducir cualquier repartición existente de los “sets de usuarios”. Visual Guard le permite definir la jerarquía de los grupos de usuarios, así como de los grupos que a su vez contienen usuarios u otros subgrupos.

Este principio puede ser adaptado a la mayor parte de las situaciones:

Ejemplo 1: una aplicación comercial SAAS debe poner sus “clientes” en el primer nivel de la jerarquía. Cada cliente podrá crear enseguida sus proprios subgrupos para recrear su estructura organizacional.

Ejemplo 2: una administración puede definir un tenant para cada agencia que usa su sistema. Si estas agencias son parte de ciertos departamentos o de ciertas divisiones, entonces deben ser colocadas en un nivel más bajo de la jerarquía.

Ejemplo 3: si una organización necesita administrar una población mixta de usuarios internos y externos, se pueden definir tenants que administren cada set de usuarios de forma independiente.

Nota: en este caso, VG también le permite combinar la autenticación por medio de las cuentas Windows (usuarios internos) y cuentas de tipo usuario/contraseña (usuarios externos), si desea más información de este tipo de autenticación lea, modo de autenticación mixta.


Aparte de estos ejemplos básicos, Visual Guard soporta otros tipos de configuración. Por ejemplo: usted puede autenticar sus usuarios con sus cuentas Windows, independientemente de que cada tenant utilice su propio Active Directory o no. En este caso, Visual Guard le permite federar varios Active Directories que no pertenecen a la misma red. (Más información, vea federación de identidades). En ciertos casos, usted también puede implementar el Single Sign-On (SSO) basado en las cuentas Windows de los usuarios.

Usted puede definir la jerarquía de los grupos, desde:

  • La consola Windows de Visual Guard
  • La consola Web de Visual Guard
  • Su aplicación (ASP.NET o WCF/Silverlight por ejemplo) la cual llamará la API de Visual Guard

Cómo asegurar sus aplicaciones multi-tenant

Securing Multitenant Applications
  1. Desarrollo
    Los desarrolladores definen los permisos con la consola Win de VG.
    Los permisos son guardados en un repositorio de desarrollo.
    Los desarrolladores desplegarán los permisos en el repositorio de producción con una herramienta de VG.

  2. Administración
    Los administradores gestionan los usuarios y les dan permisos.
    Ellos pueden pertenecer o no al tenant.
    La administración de sus privilegios puede ser restringida a un tenant, a un grupo de usuarios, a una aplicación, a un tipo de operación o a cualquier combinación de las opciones anteriores.

  3. Implementación
    Los usuarios finales pueden entrar en la aplicación, VG asegurará la aplicación como cualquier otra aplicación. Por defecto, los usuarios utilizarán cuentas usuario/contraseña. Ellos también pueden utilizar sus propias cuentas Windows (vea federación de identidades).
    Sus acciones se guardarán en el repositorio de VG.

  4. Auditoría
    Los auditores pueden controlar los atributos de los usuarios, los roles y sus privilegios a través de varios sistemas.
    Ellos también pueden revisar las operaciones. Los auditores pueden o no pertenecer al tenant.
    En cuanto a los administradores, su acceso será restringido por tenant, por un grupo, una aplicación, o una combinación de éstos.
Nota
  • Estas funcionalidades están disponibles para cualquier tecnología soportada por VG, en particular para las aplicaciones .Net (Winforms, asp.Net, WPF, WCF, Silverlight...)
  • Los administradores y los auditores pueden operar desde cualquier lugar en donde tengan una acceso a Internet

Restricción de los derechos de administración de un tenant

En general, Visual Guard le permite dar privilegios a un administrador para que este pueda administrar los usuarios y pueda darles permisos para cada aplicación.

Los privilegios de administración también pueden ser limitados a un grupo de usuarios. En este caso, el administrador solo ve y administra los usuarios de su grupo.

Cuando se trabaja con una aplicación multi-tenant, se recomienda nombrar al menos un administrador por tenant y enseguida limitar sus derechos de administración en dicho tenant.


Ejemplo 1: Se puede nombrar un administrador por tenant

Sin embargo, Visual Guard puede hacer mucho más: podemos limitar la administración de los permisos a cualquier nivel de la jerarquía. Este sistema le ofrece una alta flexibilidad de la distribución de los derechos de administración en cualquier entidad dentro de los tenants.


Ejemplo 2: Se puede limitar la administración a un sub-grupo dentro del tenant

Acciones avanzadas:
Usted puede combinar diversos criterios para limitar la administración de los permisos

  • Como lo vimos anteriormente, se pueden limitar estos permisos a ciertos grupos de usuarios.
  • También, se pueden limitar estos permisos a ciertas aplicaciones.
  • Además, se pueden limitar a ciertas operaciones administrativas (por ejemplo, el administrador puede crear usuarios y darles roles, pero dicho administrador no puede definir un rol)


Ejemplo 3: se puede definir varios niveles de administración en cada tenant

Funcionalidades de administración accesibles para cada tenant

Es importante facilitar el acceso de los administradores a las funcionalidades de administración:

  • Las aplicaciones multi-tenant son usadas en varios sitios. La interfaz de administración debe ser fácil de implementar así como la aplicación.
  • Para poder distribuir los derechos de administración de manera flexible, cada usuario debe ser capaz de acceder a las funcionalidades de administración, no importando que los mismos tengan o no competencias técnicas.

Por defecto, existen dos soluciones principales:

1 – Consola Web de Visual Guard:

  • Esta aplicación le permitirá administrar los usuarios y sus grupos, roles, permisos, etc…
  • La misma consiste en una aplicación web (asp.NET), accesible desde cualquier navegador.
  • Puede ser desplegada con la aplicación y así ser accesible a los usuarios.
  • Esta consola incluye un mecanismo de extensión: los consultores Visual Guard pueden añadir páginas asp.net personalizadas a la consola para cumplir con requerimientos específicos del cliente.
  • Encontrará más información de la Consola Web de VG aquí

2 – Interfaz del administrador personalizable:

  • Una interfaz de administración personalizable ASP.NET o WCF/Silverlight puede también ser personalizada.
  • Esta puede ser desplegada como una consola de admnistración o también puede ser integrada en su aplicación.
  • También se puede llamar las APIs para llevar a cabo todas las acciones de administración. Estas API están aseguradas como se describió anteriormente. Las mismas permiten, en particular, administrar los tenant y delegar las restricciones de la administración a cada tenant. Encontrará más información de las APIs de Visual Guard aquí
  • Usted puede desarrollar estos formularios o puede utilizar los servicios de los consultores Visual Guard

Auditoría: ¿Vista y control centralizado o distribuído?

Semejante a los derechos de administración, también puede ser posible tanto dar como restringir permisos para ver y controlar la seguridad de la aplicación multi-tenant.

Dependiendo de las circunstancias, podemos desear tanto centralizar o distribuir estos permisos.

Ejemplo 1: una aplicación in-house es usada por varias entidades de una gran empresa

  • Por defecto, este tipo de aplicación requiere un control de seguridad centralizado.
  • El auditor debe ser capaz de ver todos los derechos de acceso y todas las operaciones sensibles que se han hecho, sin tomar en cuenta los usuarios, los departamentos o los tenant concernidos.
  • Cada cliente es libre de limitar el alcance de su auditor a ciertos sets de usuarios o aplicaciones.

Ejemplo 2: aplicaciones comerciales SAAS usadas por varios clientes

  • El vendedor de software debe ofrecer a cada cliente la habilidad de controlar la seguridad de sus usuarios. En este caso, el alcance de cada auditor sera limitado a cada tenant (cliente).
  • El auditor de cada tenant puede ver los derechos de acceso de sus usuarios. Ellos también podrán controlar las acciones realizadas por los usuarios y los administradores de su tenant.
  • Si es necesario, el vendedor de software puede controlar las operaciones realizadas por sus clientes. Esto puede ser útil en algunos casos para el soporte técnico, por ejemplo, para entender el uso de la aplicación o de la administración. Referencias:

http://en.wikipedia.org/wiki/Multitenancy
http://msdn.microsoft.com/en-us/library/ff966480.aspx
http://www.intranetjournal.com/articles/200311/ij_11_10_03a.html