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
|