Raptor 2 (Módulo de Seguridad Syntarsus)

La seguridad es el elemento más repetitivo e importante dentro de cualquier desarrollo, unos la subvaloran y otros no entienden por qué gastar el tiempo en garantizar un determinado nivel de seguridad.

La realidad es que:

Es un basamento importante dentro de las info-comunicaciones, que van desde la criptografía hasta la protección de activos. En resumen nunca se debe pensar en ella como una charla educativa y formadora, es un hecho real que tienen y deben afrontar todos los sistemas de software.

Garantizar un cierto nivel de seguridad puede ser desde tedioso hasta complicado, todo en dependencia de cuán bueno se quiera ser. Actualmente los frameworks de desarrollo de aplicaciones web, no se conciben sin haber aplicado técnicas y procedimientos, que le permitan mitigar riesgos dentro de las diferentes situaciones en que se puede encontrar el sistema. Toma mayor importancia si el valor de estos es el de proveer una determinada abstracción en el desarrollo.

Si me preguntan, ahorrar 2 o 3 meses de desarrollo de estos elementos me parece genial, es parte de la abstracción y se sería un iluso en no considerarlo. Todas las maquinarias productivas de software del mundo se basan en esta abstracción, la seguridad solo se desarrolla una vez, luego queda como una plataforma actualizable y reutilizable para posteriores desarrollos. Existen quienes tienen su propia base tecnológica y existen quienes usan otras disponibles en el mundo (Symfony, Zend, Laravel etc.) pero siempre se utilizan y además siendo parte fundamental de la reducción del tiempo de desarrollo de software.

Otro elemento esencial es la implementación de un modelo de control de acceso lo más flexible y robusto posible. Históricamente el RBAC ha sido el preferido por sus características para cumplimentar esta parte tan importante. Con sobrados motivos se ha demostrado el porqué de su utilización, el modelo de control de acceso basado en roles sin duda es una de las aproximaciones más exitosas.

¿Cómo tributa Raptor a la seguridad de mi sistema?

Pues Raptor implementa un grupo de técnicas de protección basadas en principios establecidos internacionalmente de acuerdo a los tipos de ataques. Provee además un grupo de funcionalidades para la implementación de un manejador de seguridad siguiendo los procesos principales de seguridad.

Partiendo del fundamento de abstracción Raptor provee en su repositorio local (viene con el sistema) un módulo de seguridad (Syntarsus) que se encarga de la protección de tus activos, implementando los procesos de seguridad en tu manejador, con lo que solo debes preocuparte por la lógica de negocio de tu aplicación. Esta combinación de técnicas de protección por parte de Raptor como sistema base y Syntarsus como manejador, garantizan un nivel alto de seguridad para tu sistema.

Módulo de seguridad Syntarsus

Es un módulo encargado de la gestión de usuarios y el control de accesos a los recursos del sistema, utilizando como modelo un RBAC jerárquico. Sin duda la aproximación usuarios, roles y permisos es muy buena, pero no lo suficiente para determinados contextos.

El RBAC jerárquico se basa en la perspectiva real de las estructuras organizacionales que existen en el mundo que nos rodea, donde las personas no solo cumplen un rol determinado sino que también pertenecen a diferentes niveles dentro de una estructura organizacional.

Estructura organizacional de una empresa.

image094

Con esta aproximación es posible que 4 usuarios con igual rol, asignados a niveles de estructuras diferentes, tengan otra perspectiva de interacción con los activos del sistema. El modelado de una estructura organizacional toma forma de árbol, implementado bajo los basamentos de objetos recursivos expresados por Europio Engine y conocido a nivel procedural como enfoque de lista adyacente.

El otro avance en este modelo es la expansión del concepto de privilegio. Digamos que en este concepto un privilegio podría ser administración de recursos, donde este podría tener varias acciones como insertar, editar, eliminar y listar, conocido también como CRUD. Así que la definición de privilegio incluye a su vez la creación de un nuevo concepto acciones. La definición de acción es mucho más granular, pudiendo ajustar para un determinado rol, ciertos privilegios, con ciertas acciones.

El modelo en general plantea un sistema de usuarios basados en estructuras, roles, privilegios y acciones, por lo que es posible aplicarlo en casi todos los contextos.

Instalación del módulo de seguridad

De forma general la instalación y utilización del módulo de seguridad es bastante sencilla. Para esto vamos al panel de control de Raptor, abrimos el menú Bundle y pulsamos sobre Bundle Installer.

Buscamos la sección Bundles Repository y encontraremos el módulo Syntarsus.

Antes de instalar asegúrese de haber configurado el acceso a la base de datos, ya que el modulo en su instalación creará la estructura necesaria para su funcionamiento.

installer

Luego pulsamos en el botón Install y esperamos a la notificación del sistema por el proceso de instalación.

installer2

Hasta este punto el sistema ha instalado el módulo y es plenamente funcional. Para verificar que todo está bien recargamos el panel de control y aparecerá un nuevo menú llamado Syntarsus que contendrá cada una de las funciones para su gestión.

syntarsus1

Dentro de este menú encontrarás cada una de las funciones para la gestión de usuarios, roles, privilegios-acciones, estructuras, categorías de estructuras y la auditoria del sistema. Además el acceso a la API interna de seguridad y la configuración del SAML como encargado del proceso de identificación-autenticación (La utilización del SAML es opcional, aparece por defecto desactivado).

Ahora bien, si pulsamos sobre el gestor de usuarios veremos una ventana de autenticación pidiendo las credenciales de administración, por defecto el sistema viene con el usuario admin, contraseña admin.

syn3

Una vez que entremos las credenciales podremos ver la interfaz de administración de usuarios.

Aclaración

Debido a los cambios en la tematización del sistema probablemente la interfaz aparezca con otra apariencia visual mucho más atractiva que las aquí ilustradas.

image109

El módulo de seguridad viene preparado para el ajuste automático del idioma, así que si su navegador se encuentra en idioma inglés, es posible que visualice las funcionalidades en inglés. Este comportamiento por supuesto puede ser modificado.

Para ilustrar como utilizar el módulo de seguridad Syntarsus, desarrollaremos un ejemplo básico donde tendremos que crear 2 páginas, la primera pública y la segunda privada, en la que la segunda la protegeremos y daremos acceso a determinados usuarios registrados a través de los privilegios y acciones.

Utilizando el bundle MiEjemploBundle creado en tutoriales anteriores, abrimos el controlador por defecto que aparece y definimos 2 acciones que representarán nuestras 2 páginas.

def

Como podemos ver estas 2 acciones tendrán como prefijo de rutas /ejemplos, así que la definición completa de cada una de las rutas sería /ejemplos/hola1 y /ejemplos/hola2.

Para probarlas y ver que funcionan correctamente, limpiamos la cache de configuración y luego accedemos a cada una de ellas.

hola1

hola2

Ya tenemos nuestras 2 rutas de páginas, ahora a través del módulo de seguridad protegeremos una de ellas para que solo pueda ser accedida por los usuarios registrados.

Para esto vamos a la clase MiEjemploBundle.php del bundle en que trabajamos y buscamos la función registerRouteRule.

bundleclass

Una vez aquí determinaremos mediante una regla de ruta que nuestro módulo de seguridad proteja la página 2.

protection

Lo que hicimos primeramente fue llamar al contenedor de reglas (rulecontainer) y adicionar una regla, este método espera 2 parámetros, el primero es el patrón de ruta (admite expresiones regulares, así que es posible especificar más de una ruta) y el segundo es la regla que se ejecutará cuando se cumpla ese patrón de ruta.

Para nuestro ejemplo determinamos que se ejecutará la regla cuando exactamente sea esa ruta y que la regla a ejecutar será el manejador de seguridad del sistema, que en este caso será el módulo de seguridad.

Una vez hecho esto podemos correr nuestros ejemplos de nuevo.

hola1

La primera ruta es accesible, mientras que para la segunda veremos esto.

loginhola

Si usted se autenticó antes en el módulo de seguridad probablemente se muestre lo que aparece en la sigueinte imagen.

holadenied

De todas maneras una vez autenticado con el usuario admin verán la imagen anterior, no se asuste es algo normal y tiene su explicación. Esta imagen significa que la ruta fue protegida pero su usuario no tiene privilegios para acceder a esta página, lo cual es real ya que en el módulo de seguridad no existe ningún privilegio que corresponda a esta ruta.

Ahora el próximo paso es registrar esta ruta como un privilegio dentro del módulo de seguridad, para esto accedemos a la administración de privilegios en el panel de control.

pri

Dentro de esta funcionalidad se puede ver que las rutas son organizadas en forma de árbol, pudiéndose registrar contenedores y funcionalidades (rutas), los contenedores son utilizados para darle una organización visual a las funcionalidades, ya que Syntarsus también brinda un servicio para crear menús con la misma formación que se especifique aquí.

Para el ejemplo crearemos un contenedor llamado Páginas, en el que registraremos la funcionalidad (ruta) de la página 2. Marcamos donde crear el contenedor, en este caso en Privileges y luego pulsamos en Adicionar contenedor, aparecerá un formulario para llenar el nombre del contenedor.

pri2

Luego de llenar los datos le damos aceptar. Ahora pasaremos a registrar la funcionalidad (ruta) de la página 2, marcamos el contenedor que recién acabamos de crear y pulsamos en Adicionar funcionalidad. Llenamos los datos con el nombre (Usado para la creación de los menús) y la ruta de la funcionalidad, en este caso la ruta es /ejemplos/hola2.

pri3

Como ayuda al registro de rutas, el campo Ruta de la funcionalidad irá completándote a medida que escribas el patrón de ruta.

Para terminar le damos aceptar.

Hasta este punto ya la ruta de la página 2 se encuentra registrada en el módulo de seguridad, pero sigue siendo inaccesible para todos los usuarios registrados en Syntarsus. Para lograr que esta pueda ser visualizada solo para determinados usuarios, es necesario establecerle los permisos al rol designado para ello.

En el ejemplo utilizaremos el rol que viene registrado por defecto para el usuario admin, para esto abrimos el administrador de roles en el panel de control.

rol

Como se puede apreciar solo existe un solo rol registrado en el sistema, así que lo utilizaremos para darle permisos sobre la funcionalidad de la página 2. Seleccionamos en la lista a Raptor admin y luego pulsamos en el botón Privilegios. Luego se abrirá una ventana con todos los permisos que pueden ser asignados al rol y marcamos el privilegio que recién añadimos.

rol2

Hecho todos estos pasos, ya el usuario admin tiene privilegios para acceder a la funcionalidad de la página 2 del ejemplo. Probamos nuevamente en el navegador y veremos que ya la funcionalidad es accesible para el usuario admin.

hola2

El ejemplo desarrollado muestra cómo utilizar el módulo syntarsus para proteger determinados patrones de rutas en el sistema, aunque no se trataron los temas de estructuras.

Nos vemos en un próximo tutorial para Raptor 2 !!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *