1- Protección Bases
El siguiente documento es obra de varios autores aplicable para las versiones de: Access 2000, 2002 (XP) y 2003
1.1- EL MÉTODO DE DAR PERMISOS A LOS USUARIOS
Autor: Carlos Carpio Hernández "CarCar"
1.2- EL MÉTODO DE MODIFICAR LA CABECERA DEL FICHERO
Autor del articulo: Kagiva y Francisco J. García Aguado, "Buho"
1.3- EL MÉTODO DE CAMBIAR DE FORMATO DE MDB A MDE
Autor: " Kagiva"
1.4- EL MÉTODO DE PONER PASSWORD AL CÓDIGO VBA PRAGMÁTICAMENTE
Autor: Javier Gómez "Javier.Mil"
1.1 EL MÉTODO DE DAR PERMISOS A LOS USUARIOS ACCESS
Autor: Carlos Carpio Hernández "CarCar"
OBJETIVOS:
Mediante las herramientas de Access, vamos a procurarnos una seguridad bastante buena en nuestras BD.
1. Disponer de una Base de Datos que, solo la persona que disponga de un archivo .MDW determinado que además conozca un código de usuario concreto y su contraseña asociada, sea capaz de entrar en ella.
2. Esta persona, que será la propietaria de la base de datos, podrá crear grupos de usuario y usuarios a los que podrá dar autorizaciones de uso concretas.
3. Nadie podrá llevarse la base de datos SEGURA a otro sistema Access y acceder a ella, ni como administrador, ni como ningún otro usuario, excepto que se haya llevado también nuestro .MDW y sepa además, nuestro código de usuario y nuestra contraseña.
Inicio
Para conseguir esto, se deben tener conocimientos de los Grupos de Trabajo Access (el trabajo con los ficheros con extensión .MDW o .MDA ).
Access, incorpora unos ficheros (en versiones 7.0 y 97 con extensión .MDW y en versión 2.0 con extensión .MDA ) en los que guarda los valores de seguridad. Se accede a estos ficheros utilizando el ejecutable WRKGADM.EXE que suele encontrarse en el directorio de Access o en el directorio \Windows\System.
Fig. 1
El nombre que suele aparecer para el ejecutable es, Administrador para trabajo en grupo. Access trae por defecto un fichero el SYSTEM.MDW (SYSTEM.MDA en Access 2), normalmente en el mismo directorio, el cual contiene dos Grupos de usuarios: Administradores y Usuarios y, un único usuario llamado Administrador.
Fig. 2
Si se ejecuta Access, se entra en cualquier base de datos y se selecciona del menú Herramientas la opción Seguridad/Cuentas de usuario y de grupo , se puede comprobar en el cuadro de diálogo que se visualiza, que en el cuadro combinado Usuario/Nombre aparece el usuario Administrador y bajo en el cuadro de lista Grupos disponibles , los dos grupos indicados anteriormente Administradores y Usuarios . Todo lo anterior existía, aunque no se intuyera.
Fig. 3
Cuando se inicia Access, el programa se conecta al fichero SYSTEM.MDW, del directorio Access, y por lo tanto, por defecto se entra en las bases de datos como Administrador, y por ello se puede hacer de todo con ellas.
Fig. 4
Lo que hay que hacer para asegurar una base de datos es crear un nuevo fichero para trabajo en grupo, es decir un nuevo .MDW. Para ello ejecutar WRKGADM.EXE y ahí se verá que, sin saberlo, se está conectado a SYSTEM.MDW, (es el archivo que aparece en la línea Archivo de información, ver Fig. 1), el cuadro de diálogo tiene un botón para crear un nuevo archivo (seguir sus instrucciones, leyendo todo y anotando cuidadosamente todo lo que diga en él, que hay que anotar).
Fig. 5
Cuidado a la hora de
grabar pues propone
reemplazar SYSTEM.MDW ,
eso no debe hacerse
,
déle otro nombre.
Fig. 6
Pongamos por caso que se crea un archivo llamado PRUEBSEG.MDW (mejor ubicarlo en el mismo directorio en el que se encuentra la base de datos que se pretende asegurar). Por defecto, al crearlo, Access queda conectado a dicho grupo de seguridad. Se puede comprobar saliendo y volviendo a entrar.
La línea Archivo de información contiene ahora el nombre del nuevo fichero .MDW. Salir de nuevo.
Fig. 7
Ahora, se puede uno conectar (antes de ejecutar el propio Access) con WRKGADM.EXE, a uno u otro grupo de trabajo.
Al entrar en Access habiéndose conectado previamente al nuevo grupo, no aparecen las últimas bases de datos abiertas, sino que el lugar aparece vacío; esto es porque en el archivo MDW, además de grupos de usuarios y usuarios, guarda también esta información.
Ahora vamos a empezar a hacer, una Base de Datos Segura:
* Asegurarse de estar conectado al grupo PRUEBSEG.MDW
* Abrir Access y, sin abrir
ninguna base de datos,
elegir del menú
Herramientas la opción
Cuentas de usuario
y de grupo. Aparece un
cuadro de diálogo más
confuso de lo que a primera
vista parece.
Observar que está abierta la
pestaña Usuarios y
que en el cuadro combinado
Nombre sólo aparece
el usuario Administrador.
Fig. 8
* Pulsar el botón Nuevo para crear un nuevo usuario; se solicitará Nombre para el nuevo usuario e Id.personal; este no es importante y se puede poner el mismo nombre en los dos sitios para no provocar más confusión.
Fig. 9
* Pulsar Aceptar. Verificar que el Nuevo Usuario, aparece en el cuadro combinado y que, por defecto lo ha incluido en el "Grupo Usuarios", comprobar si en el cuadro de lista de abajo a la derecha aparece dicho grupo y señalar Administradores, en el cuadro de lista de la izquierda.
Fig 10
* Pulsar el botón Agregar>>. Ahora el nuevo usuario (imaginemos que se le ha llamado PruebasAdmin ), también pertenece al grupo Administradores. Cualquier usuario que se cree puede pertenecer a más de un grupo de usuarios.
* Pulsar la pestaña Cambiar contraseña de conexión. Aparece un cuadro de diálogo para cambiar la contraseña del usuario actual. Observar que indica que el usuario actual es el Administrador (no PruebasAdmin ). Dejar en blanco el valor Contrase��a anterior y teclear el mismo valor en Contraseña nueva y Confirmación . Pulsar Aceptar. Lo que se acaba de hacer es poner una contraseña al Administrador de Access y, a partir de este momento, cuando se ejecute Access conectado al grupo de usuarios PRUEBSEG.MDW, siempre pedirá usuario y contraseña ( Atención, así como la opci��n usuario no distingue entre mayúsculas y minúsculas, la de contraseña si lo hace por lo que debes teclear los valores exactamente iguales ) .
* Hacemos la prueba, salimos de Access y al intentar entrar de nuevo, Access pedirá usuario y contraseña. Si queremos entrar como Administrador, deberemos teclear Administrador y la Contraseña que le hayamos puesto. Si entramos con el nuevo usuario PruebasAdmin , como al mismo no le hemos asignado contraseña hay que dejar este lugar en blanco.
* Una vez dentro, se puede poner a dicho usuario una contraseña. Ni siquiera el administrador tiene capacidad para asignar ni ver contraseñas ajenas. Lo que se puede hacer es borrar las contraseñas (que siempre es útil para el usuario inútil, al que se le olvida la contraseña). Salir de nuevo de Access.
* Ejecutar WRKGADM.EXE para cambiar de grupo y conectarse al grupo de toda la vida: SYSTEM.MDW y, una vez hecho, entrar de nuevo en Access, notando que ahora todo vuelve a la normalidad; se verán las llamadas, 'antiguas' bases de datos, que no se pide contraseña, etc.
Resumen de lo realizado hasta ahora:
-1. Hemos creado un Grupo de trabajo nuevo al que hemos llamado PRUEBSEG.MDW.
-2. En él hemos creado un
usuario nuevo:
PruebasAdmin
, al que
hemos incorporado en el
grupo de Administradores,
aunque también pertenece al
grupo Usuarios.
ASEGURAR UNA BASE DE DATOS
1. Conectarnos al grupo de trabajo seguro (en nuestro caso PRUEBSEG.MDW).
2. Abrir ACCESS, entraremos
con nuestro usuario seguro:
PruebasAdmin.
3. Crear una base de datos
vacía, la llamaremos
BaseDatosSegura.MDB
4. Importar a la misma todas
las tablas, consultas,
formularios, informes,
macros y módulos desde la
base de datos que queremos
hacer segura.
(En Access 7, 97 y 2000,
menú: Archivo/Obtener
datos externos/Importar...)
Acabamos de crear una base
de datos cuyo propietario es
PruebasAdmin del grupo de
trabajo PRUEBSEG.MDW.
5. Con la base de datos nueva abierta, entrar en el menú Herramientas/Seguridad /Cuentas de usuario y de grupo...
6. Al usuario Administrador
quitarlo del grupo
Administradores.
7. Asegurémonos de que el
usuario PrubasAdmin
pertenece a Administradores
y a Usuarios.
8. Ir al menú
Herramientas/Seguridad/Permisos
de usuario y de grupo...
9. Elegir lista de usuarios,
seleccionar el usuario
PruebasAdmin, en el
combo Tipo de objeto
seleccionar Base de datos
(cuidado está oculta antes
del valor que toma por
defecto: Tabla). Poner las
marcas en todos los check
box. Elegir en Tipo de
objeto el valor Tabla,
seleccionar de la lista
Nombre de objeto, todas las
tablas, incluyendo el valor
Tablas/consultas
nuevas, poner marcas en
todos los check box (lo mas
fácil es quitar la marca en
el check Administrar y
volvérselo a poner). Elegir
todos y cada uno de los
tipos de objeto y hacer lo
mismo para cada uno de
ellos.
En este momento el usuario PruebasAdmin es dueño y señor de todo.
10. Elegir lista de usuarios, seleccionar el usuario Administrador, en el combo Tipo de objeto seleccionar Base de datos. Quitar las marcas a los check box: Abrir o Ejecutar, Abrir en modo exclusivo y Administrar.
11. Elegir lista de grupos,
seleccionar el grupo
Administradores, y hacer lo
mismo del punto anterior:
elegir Base de datos, quitar
marcas...
El punto anterior no se menciona en ninguna ayuda oficial de Access 2, ni 7, ni 97. Tampoco se menciona en los libros que he consultado. ¿?
12. Seleccionar ahora el grupo Usuarios, y hacer lo mismo.
¡¡ Nuestra base de datos ES
SEGURA. !!
Comprobémoslo.
1. Cerremos Access.
2. Nos conectaremos al grupo
de trabajo SYSTEM.MDW.
3. Entramos en Access (por
defecto entramos como
Administrador).
4. Intentemos abrir nuestra
base de datos segura. Nos
dará un mensaje mas o menos
así:
No tiene los permisos
necesarios para acceder al
objeto, etc.
5. Intentemos crear en este
SYSTEM.MDW un usuario
PruebasAdmin igual al que
tenemos creado en
PRUEBSEG.MDW. Recordemos que
para que podamos entrar con
este usuario deberemos poner
una contraseña al usuario
Administrador de este grupo
de trabajo.
6. Entremos en Access como
este usuario, tampoco nos
deja entrar.
7. Nos conectamos a
PRUEBSEG.MDW y entramos como
Administrador, intentamos
abrir la base de datos
segura y... tampoco.
Sólo podemos acceder a ella con nuestro usuario PruebasAdmin estando conectados a PRUEBSEG.MDW y solo el que conozca la contraseña de dicho usuario podrá entrar en la misma.
Ahora podemos empezar a crear nuevos grupos de usuarios y nuevos usuarios y empezar a otorgar permisos al uso de tablas y consultas, y formularios...
O utilizar la base de datos segura, en un entorno de Visual Basic, los usuarios no podrán acceder a ella de ninguna otra manera. (Como en mi caso).
Para hacerla aún mas segura la podemos codificar.
Las instrucciones que desde Visual Basic, debemos incluir en el código para acceder a una base de datos segura son:
Dim gDb as DAO.DataBase
DBEngine.SystemDB = GetSetting(App.EXEName, "Datos", "GrupoMdw")
DBEngine.DefaultUser = "Microfusion"
DBEngine.DefaultPassword = SetPassword("“šš‘”–")
Set gDb = DBEngine.OpenDatabase("C:\Directorio\BasedeDatos.mdb")
1.2- EL MÉTODO DE MODIFICACIÓN CABECERA FICHERO ACCESS
Autor del articulo: Kagiva
Autor del método: Francisco J. García Aguado, "Buho"
Este es un método externo a
Access, bastante bueno en
seguridad para BD's con
soporte Access.
El maestro hizo en su
día un ejemplo que mucha
gente viene utilizando y que
por experiencia puedo decir
que es de lo más seguro.
Aunque como bien dice él
Francisco J. García Aguado,
"Buho", es conveniente
que cada cual por su cuenta,
a partir del mencionado
trabajo, tiene que
experimentar y añadir o
modificar su cuota parte
personal, claro está, si
quiere dotarle de mayor
seguridad, no obstante, el
mencionado ejemplo es todo
un compendio de
posibilidades de
enmascaramiento y de
capacidad de persuasión,
para los 'piratas'.
Y no me extiendo más, de
modo que si estás
verdaderamente interesado en
este sistema de seguridad,
lo estudies y adaptes a tus
necesidades.
Pagina del Autor del método:
https://accessbuho.mvps.org/index.htm
y si No encuentras el ejemplo en la pagina del Autor puedes bajarla desde AQUÍ
1.3- EL MÉTODO AÑADIDO DE CONVERTIR UN MDB A MDE.
Autor: Kagiva
Si deseamos proteger nuestros trabajos, además de lo expuesto hasta el momento, podemos aprovechar la opción de convertir nuestra BD a MDE, esto lo que hace es reducir el código y proteger contra la copia sobre todo los formularios y los módulos, de modo que reduce el 'peso' de la aplicación.
Puede que en algún caso surja alguna dificultad al intentar convertir una BD a MDE, normalmente es debido a que el código no está depurado, uno de los motivos típicos es que hayamos creado algún control (o un botón) que luego hemos decidido no utilizar y lo borramos del formulario sin más, esto es el causante del problema, es decir el resto del código del control (o botón) que ha quedado en el módulo y como no tiene utilidad, el programa desestima dicho código, una vez eliminado del módulo, lo guardamos y queda resuelto el problema.
Si además, queremos que no se pueda ver un objeto de una base da datos en Access, deberemos renombrar ese objeto con el prefijo USys, por ejemplo si tenemos un objeto (tabla, consulta, form o informe) tblClientes lo cambiamos a UsystblClientes, con el resto de objetos hacemos lo mismo, esto lo convierte a la vista de Access como un archivo del sistema.
Hay ocasiones en las que no podemos ejecutar ciertos módulos de una BD, puede que algunas referencias las tengamos inhabilitadas y éste es el motivo de errores habituales de código, bien por haber convertido la BD desde una versión anterior a la actual o por alguna otra razón.
Para evitar en lo posible este tipo de errores, es conveniente revisar nuestras referencias en cada aplicación, éstas por orden son
Visual Basic For Application
Microsoft Access x.x Object Library
Microsoft DAO 3.6 Objetct Library
Microsoft ActiveX Data Objects x.x Library
OLE Automation
Microsoft Visual Basic for Applications Extensibility 5.3
Los dos primeros son los básicos del sistema y son inamovibles. Respetar el orden descrito. Con esto se solventan la mayoría de los problemas.
1.4- EL MÉTODO PONIENDO PASSWORD AL CÓDIGO VBA PRAGMÁTICAMENTE
Autor: Javier Gómez "Javier.Mil"
La protección del código VBA en MDB es otra forma de protección, sin necesidad de convertir el fichero MDB (léase base de datos), a formato MDE, muchas veces engorroso durante el proceso de creación de código.
Además,......... aunque se convierta la aplicación de MDB a MDE se hace imprescindible guardar el formato MDB (original) en algún lugar del PC. De esta manera también te aseguras que tu código VBA en formato MDB este bien protegido.
Para estar realmente bien protegido, la clave debe ser lo suficientemente larga (con un máximo permitido de 32 caracteres de longitud) y preferiblemente que dichos caracteres sean de calidad (caracteres No imprimibles), harán de esta protección sea prácticamente inviolable por hackers.
Mirar en >> Mis Demos >> la DEMO 37 de esta WEB.