Artículo

Programación Sobre la Seguridad de Access

Autor / Fuente

Harvey Triana / Documentación Access y Visual Basic

Tema

Programación con Bases de Datos Access

Actualización

Septiembre 20 de 1997

Descripción

Breve descripción de como asegurar una bases de datos Access con el sistema de seguridad de microsoft. Incluye colección de código de ejemplos microsoft.


Programación Sobre la Seguridad de Access

Les ofrezco una visión global del mecanismo de seguridad de Access y la forma de administrar la misma con código VB. Aclaro que VB no proporciona ningún método para crear una BD del sistema de seguridad, pero si cuenta con la capacidad de administrar la seguridad que esta provee.


Seguridad de Access

Las versiones recientes de Microsoft Access ofrecen dos métodos para proteger una base de datos: contraseña para abrir un archivo de base de datos o mediante seguridad a nivel de usuario o de cuentas. Además de estos métodos, puede eliminar código modificable de VB de la BD y así proteger el diseño de formularios, informes y módulos de la base de datos de posibles modificaciones guardándolo como un archivo MDE. Estos últimos tópicos no serán tratados en este documento.


Contraseña de Archivo MDB

Brevemente me refiero a esta opción para centrarnos en el Sistema de Cuentas que es el propósito de este articulo. El método Contraseña de Archivo MDB es simple y consiste en habilitar una contraseña para abrir un archivo MDB especifico. El método es el adecuado para una base de datos que esté compartida entre un pequeño grupo de usuarios o sobre un sólo equipo. No es aplicable si quiere replicar la BD o pretende implantar un sistema de seguridad en red. Si desea abrir una BD con contraseña de archivo siga este código:

   'Abriendo miDB bajo una contraseña:
    Dim wrkJet As Workspace
    Dim dbsM97 As Database
    Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
    Set dbsM97 = wrkJet.OpenDatabase("miBD.mdb", True, False, ";PWD=miClave")

   'Compactando bajo una contraseña (aportes de José Ramón jlap@zaz.servicom.es):
    DBEngine.CompactDatabase "miBD", "miBaseCompacta", dbLangGeneral, dbVersion30, ";pwd=MiClave"

   'Usando un cursor Data:
    miDataControl.Connect = ";pwd=miClave"

Tenga en cuenta estos ejemplos porque en ninguna parte de la ayuda en línea lo encuentra tan claro. Atensión a los parámetros de compactación, ya que pueden variar.


Sistema de Cuentas

Los usuarios son obligados a identificarse y escribir una contraseña cuando inician Microsoft Access o una Aplicación Access. La seguridad se basa en permisos, los cuales son atributos para un grupo o usuario. Por ejemplo, a un grupo bautizado Usuarios_Alpha se les permita visualizar, introducir o modificar datos en una tabla Clientes, pero no se les permita cambiar el diseño de esa tabla, ni accesar otras tablas. Así un usuario que pertenezca a este grupo sólo tendrá estos atributos y, en particular, los que le quiera dar un Administrador. Una aplicación Visual Basic que use una BD protegida por cuentas, tiene que usar parámetros y procedimientos DAO abrir la BD.


Las tres razones principales para utilizar la seguridad a nivel de usuario son las siguientes:


Si quieren entender plenamente el sistema de seguridad, es necesario estudiar los conceptos del mismo, como son varios, y la teoría es amplia, les tengo que sugerir el capitulo Protección de la aplicación, en el manual Creación de aplicaciones que viene con Microsoft Access (2.0/95/97). Pero para los que están de afán, le sugiero esta receta para crear un sistema de seguridad:


1. Crear a o unirse a grupo de trabajo

Textualmente, Un grupo de trabajo de Microsoft Access es un grupo de usuarios en un entorno multiusuario que comparten datos. Un Grupo de Trabajo se sirve de un archivo donde se almacenan las cuentas. Puede usar una predeterminado, uno existente o crear uno nuevo. Para esto emplea el Administrador para grupos de trabajo., busque el archivo Wrkgadm.exe (Access 2.0 o superior).


2. Cree una Cuenta de Propietario y Una de Administrador.

Con el Grupo de Trabajo activo, inicie MS Access, abra una BD, menú Usuarios, Usuario, del cuadro de dialogo escoja Nuevo, del cuadro de dialogo escriba el Nombre y un ID personal (esta combinación identificara al usuario de aquí en adelante) y Aceptar. Para crear la cuenta de propietario siga las mismas instrucciones. El Administrador administrara el Grupo de Trabajo, el propietario como su nombre lo indica, será el dueño de la BD y sus objetos.


3. Activar el procedimiento de inicio de sesión

Una BD será protegida cuando el administrador tenga contraseña y tenga Titularidad. Con el Grupo de Trabajo activo, inicie MS Access, abra una BD, menú Cambiar Contraseña, Cambiar Contraseña. Siga el cuadro de dialogo. La próxima vez que inicie Access, el cuadro de dialogo Conexión solicitara el nombre de un usuario y su contraseña.


4. Cambie la Titularidad

Inicie la sesión con la cuenta del nuevo Administrador creado anteriormente, Cree una nueva BD: menú Archivo, Complementos, Importar BD. Seleccione el archivo MDB cuya titularidad desea cambiar, y de Aceptar. También puede cambiar la titularidad de un objeto individual, desde los diálogos Cambiar Propietario, pero no desviemos la atención. Valga aclara que las bases de datos creadas desde una sesión de grupo, no necesitan cambiar su titularidad porque la traen de nacimiento.


5. Cree las cuentas de los Usuarios.

Cree grupos y usuarios de la siguiente manera. Abra la BD, menú seguridad, Grupos o Usuarios, siga los diálogos. Los PID son importantes para el administrador, no para los usuarios, anotelos. Después de creados los usuarios y grupos, puede hacer que un usuario, digamos John, pertenezca a un grupo y así limite sus permisos. Para generalizar, recuerde, la administración de las cuentas se lleva a cabo desde el menú Seguridad, creo que no necesitas memorizar más recetas.


6. Asignar Autorizaciones

Una vez creadas las cuentas, puede asignar autorizaciones a esas cuentas. Menú seguridad, autorizaciones. Importante: su BD no estará segura hasta no eliminar las autorizaciones del usuario Administrador y del grupo Usuarios (cuentas predeterminadas de Access). En realidad la administración de autorizaciones es el proceso donde invertirá la mayor parte del tiempo (la lógica de autorizaciones se aprende ensayando). Tenga presente en autorizaciones no solo a las tablas, también a las consultas, módulos y formularios.


7. Asignar Contraseñas

Al fin llegamos al paso fácil. Asígnele una contraseña a cada uno de sus usuarios. Es más rápido con código VB. Con Access, tiene que iniciar Access con cada cuenta, ir al menú Seguridad, Cambiar Contraseña y asignar el password. Si un usuario no tiene contraseña, cualquiera puede entrar con el nombre de ese usuario, en ese momento la contraseña es una cadena vacía. Un usuario puede cambiar su contraseña en el momento que lo desee.

Otro nivel es la codificación de la BD, pero aun no he llegado a este extremo. Es útil para protegerse de hackers ¿ o, no ?. No es difícil, pero sí riesgoso (opinión personal). Desde el menú Archivo, seleccione Codificar/Decodificar BD.

Si llego hasta aquí, y no esta aún frustrado, me alegra. Vea lo que le espera para implantar una aplicación que acceda una BD protegida.


Código Visual Basic

VB proporciona una interfaz poderosa de código para administrar un sistema de cuentas. Pero antes que se anime, lo más crítico es decirle a VB cual BD del sistema usar. Si trabaja en 16 bits, muy posiblemente tentrá que vérselas con el espantoso Regedit.Exe o con los INI. Al respecto, le recomiendo buscar el ayuda en línea estos temas. Afortunadamente, VB4 y VB5, implementan la propiedad SystemDB del objeto DBEngine, lo cual facilita en forma drámatica el asunto. Los ejemplos siguientes esclarecerán la cuestión.


Ejemplos Visual Basic

Puede lanzarse a programar con VB. Los siguientes bloques de código los obtuve de la ayuda en línea, los refine y organice. Son para DAO 3.5, para otras versiones el códigos es similar, solo que más sencillos. Es mi fuente de información. El módulo es muy completo y didáctico.

Por favor Guille, coloca aquí un vinculo para bajar el archivo que contiene este documento y el módulo de ejemplos: Aquí está el link solicitado (Harvey_MSJet.zip 7.7KB)


Harvey Triana Envíe sus comentarios a: psoft@latino.net.co
Derechos libres de reutilización solo para programación.