Visual Guard para .NET Artículos Artículo VSJ
Visual Guard para .NET
   
 
     
 
 
.NET Security Articles
  Visual Guard for .NET
Mike James descubre que agregar seguridad a una aplicación puede ser extraordinariamente fácil
POR MIKE JAMES

Asegurar una aplicación es un problema tal que la mayoría de los desarrolladores prefieren ignorarlo. Como ignorarlo es imposible entonces frecuentemente implementamos una solución tradicional con listas de usuarios y contraseñas, o, simplemente esperamos que el control de usuario provisto por el sistema operativo haga el trabajo.

Generalmente al final de este proceso, obtenemos algo que al parecer hace este trabajo pero que en realidad es imposible de administrar y casi imposible de validar.

Visual Guard.NET pone fin a este miserable intento de seguridad, al permitir implementar fácilmente un sistema de seguridad y al proveer herramientas de administración eficaces. Lo anterior se aplica tanto para aplicaciones de escritorio como para sitios web ASP.NET.

Lo que es verdaderamente sorprendente de Visual Guard para .NET es la facilidad con la que se puede integrar a una aplicación ya existente, y lo extensa y específica que es la seguridad proporcionada.

Utilizando el proceso de reflexión, Visual Guard puede ir al código de su aplicación y aplicar derechos de acceso a objetos individuales, selectivamente deshabilitar características de acuerdo al usuario que esté utilizando la aplicación (acción para la cual usted podría pensar que implica hacer cambios en su código).

En realidad, lo único que usted debe hacer es añadir nuevas referencias a las librerías de Visual Guard y poner la línea ocasional de inicialización de código (NAMESPACE), para enseguida agregar un formulario tipo autentificación usuario/ contraseña.

Un formulario adecuado es proporcionado para que usted lo use, sin embargo usted puede crear su propio formulario. Es importante recalcar que usted realmente no necesita hacer cambio alguno en la arquitectura de su aplicación, ciertamente no necesita haber tenido en mente algún tipo de seguridad cuando la creo.

Si usted opta por usar el formulario proporcionado, entonces la integración de Visual Guard a su aplicación es sólo cuestión de cambiar el método principal Main(),es decir, donde su aplicación comienza a leer:

Dim login As New VGLoginForm
If login.ShowDialog() = _
          DialogResult.OK Then
     login.Dispose()
     Application.Run(New MDIForm)
End If

El código anterior despliega el formulario de autentificación, el cual pregunta por el nombre de usuario y contraseña, si éste regresa el cuadro de dialogo OK, entonces su aplicación podrá correr (ejecutarse), es decir, el usuario ha sido autentificado. Este proceso protege el acceso a todos los formularios de su aplicación y si esto es todo lo que usted deseaba hacer entonces su tarea de programación está completa.

Visual Guard detecta automáticamente la instancia de los formularios y aplica la protección que usted ha seleccionado.

Proteger otro tipo de objetos es también muy fácil. Usted debe simplemente añadir la interfaz VGISecurable y una llamada al proceso SetSecurity en el constructor de todas aquellas clases que usted desee proteger.

Usted no tiene que implementar método alguno en la interfaz VGISecurable; esto simplemente determina qué clases son visibles en la consola de administración (ver más adelante).

Usted puede seleccionar cualquier formulario de la lista para asignarle permisos   Una vez seleccionado usted puede establecer cualquier propiedad de cualquier control en el formulario a cualquier valor como resultado de la acción.

ampliar la imagen
 
ampliar la imagen

Administración

Un administrador puede manejar usuarios y asignarles permisos apropiados a su rol usando la consola    

ampliar la imagen
 

Tan pronto usted haya hecho los pequeños cambios necesarios para implementar Visual Guard usted podrá delegar la gestión de la seguridad a alguien más. En realidad, las personas encargadas de la seguridad no necesitan saber nada acerca de su aplicación.
En la mayoría de los casos, sin embargo, el desarrollador establecerá la configuración inicial. Toda la administración se realiza a través de la consola de Visual Guard.
Su primera tarea será crear un repositorio que contenga toda la información de los usuarios y sus permisos. Usted puede seleccionar entre crear sus cuentas en Visual Guard, utilizar sus cuentas de autentificación de Windows o sus cuentas en una base de datos. Cada una de estas soluciones tiene sus ventajas dependiendo de la situación.
Usted puede agregar usuarios y definir conjuntos de permisos y roles. Un conjunto de permisos es, como su nombre lo indica, una lista de permisos que puede ser aplicada totalmente. Los conjuntos de permisos pueden contener en sí otros conjuntos de permisos, haciendo muy fácil el establecimiento de una jerarquía de permisos partiendo de cero y llegando a un todo.
Sin embargo, es obvio que usted no tiene que organizar los permisos de manera jerárquica si ésta no es su necesidad.

Un rol es esencialmente un grupo de usuarios que tiene derecho a los mismos permisos. La idea es que usted cree roles que correspondan a la gente y departamentos dentro de la compañía que utiliza su aplicación (por ejemplo: un rol puede ser una persona de ventas, quién está autorizada a introducir pedidos, pero no a modificar los pedidos ya existentes).

Mucho del trabajo de la creación de las cuentas de usuario y de los roles es una tarea administrativa estándar y familiar altamente delegable.
El área que usted no debe considerar tan delegable es la creación de los permisos.
No es que esta tarea sea difícil, sino que una persona que tiene un mejor conocimiento de la aplicación tiene una mejor oportunidad de hacer el trabajo lógico de especificar lo que debe ser controlado.
Por ejemplo: usted puede determinar que un botón de un formulario en particular sea deshabilitado para restringir el acceso a alguna facilidad.
Usted no debe asignar este permiso y no tiene que agruparlo en un conjunto de permisos en esta etapa (simplemente deje en claro que está es una facilidad crítica que necesita ser controlada).

Parece casi mágico que usted pueda decidir habilitar o deshabilitar un botón desde fuera de la aplicación, pero ésta es la ventaja de poder utilizar la reflexión para entrar en la aplicación y colocar y establecer propiedades. Un permiso es un conjunto de acciones, como por ejemplo establecer la propiedad de habilitar un botón o un elemento de un menú en falso o configurar la visibilidad de una columna de datos para ocultar un campo; dichas acciones serán cargadas por Visual Guard en la aplicación antes que el usuario de dicho permiso tenga acceso al formulario en cuestión.
Dos tipos de acciones son soportadas:
Propiedades de acción: las cuales simplemente establecen una propiedad que pertenece a un objeto a un valor específico;
Acciones de script: que pueden ser mucho más sofisticadas. Usted puede utilizar también C# o VB para crear una acción de script. En muchos casos las propiedades de acción más sencillas son todo lo que usted necesita para asegurar una aplicación.

Crear un nuevo permiso es sólo asunto de seleccionarlo en una lista. Usted puede seleccionar una propiedad o una acción de script y Visual Guard le presentará enseguida una lista de objetos de su aplicación (los formularios o páginas web son los objetos más comunes en los cuales usted aplicará los permisos, pero cualquier clase que tenga la interfaz VGI Securable aplicada, aparecerá en la lista y podrá ser modificada).

Note que no tan sólo usted puede deshabilitar opciones de la interfaz del usuario dejándolos en gris, usted puede también personalizar la interfaz escondiendo los controles. Además usted puede seleccionar un evento que puede desencadenar la acción.
Usualmente esto se realiza antes que los objetos sean cargados, pero usted puede seleccionar el vincular esta acción a cualquier de los eventos usuales que un objeto soporta, mouse down, mouse up, etc. Un nivel más elevado de sofisticación es que usted puede establecer una condición que tiene que ser verdadera para que la acción sea aplicada. Por ejemplo: usted puede disponer aplicar una acción sólo si el control esta visible. Finalmente usted puede editar cualquier propiedad de cualquiera de los controles en un formulario o en una página web. Usted puede establecer tantas propiedades y tantos controles en una sola acción si así lo desea y el editor trabaja muy parecido a la ventana de propiedades de Visual Studio (property window), permitiéndole seleccionar los valores de las propiedades donde sea apropiado.
Una acción de script puede ser establecida más o menos del mismo modo, pero en lugar de editar las propiedades como el paso final, usted está habilitado para teclearla (introducirla) en una ventana de código.
Aquí usted puede hacer casi todo lo que desee con el objeto en cuestión, tal es el caso del método que usted escribe en los ejecutables dentro de la aplicación cuando la acción es desencadenada. En la mayoría de los casos usted será apto para proteger una aplicación con sólo unas cuantas acciones (ejemplo: deshabilitar botones y esconder información y opciones), pero es tranquilizador saber que usted puede hacer más si esto es realmente necesario.

Una vez que usted haya comprendido el poder del mecanismo usted puede preguntarse si hay algunos otros usos de Visual Guard así como el aseguramiento de aplicaciones. Esto es parte de la naturaleza de la programación orientada que permite la inyección de código usando editores visuales (¡ Muy astuto! ¡Muy inteligente!).

Una vez que usted tiene sus permisos y sus conjuntos de permisos el único trabajo que queda por hacer es saber quién será la persona autorizada de otorgar los permisos y a quién. También va a ser muy fácil administrar siguiendo las reglas cotidianas, siempre y cuando usted defina roles de una manera racional por ejemplo: los empleados de ventas pueden acceder a la información que es importante para las ventas y nada más.

Conclusión
Visual Guard para .Net es un producto que vale la pena conocer. En un paquete amigable que resuelve todos los problemas de seguridad casi sin pedirle esfuerzo alguno. Él crea también un ambiente de seguridad que será familiar a los administradores de red y por ende dará a usted la oportunidad de delegar mucho de la instalación inicial y toda la administración cotidiana. Y casi olvido mencionar que Visual Guard tiene herramientas para hacer reportes, para gestionar la entrada a su aplicación (logging) y para auditoría, herramientas que le harán la administración de los usuarios aún más fácil. Es una idea realmente inteligente, Visual Guard está muy bien implementado y no creo que tendré que preocuparme de nuevo por el diseño de la seguridad dentro de mis aplicaciones. ¡Nunca jamás!

En suma con sus roles de desarrollador practicante y de editor de VSJ, Mike James trabaja como administrador de redes para un grupo distribuido de consultores y escritores. El está al tanto de los dolores de cabeza que genera la seguridad

APRIL 2008 - VISUAL SYSTEMS JOURNAL - WWW.VSJ.CO.UK

 
 
 
Versión de evaluación
  Solicitar una versión de evaluación de Visual Guard  
pulse aquí
 
Ressources
  Visual Guard Support Website
Visual Guard Technical Documentation
Visual Guard Update List