Twitter Flickr Pinterest LinkedIn YouTube Google Maps E-mail RSS
formats

Seguridad en Microsoft Access. Control de usuarios y demo de una aplicación.

Publicado en 18 marzo, 2017, por en Access.

No cabe duda que uno de los productos más usados es la suite de Microsoft Office, varias de sus aplicaciones tales como Word, Excel, Powerpoint, Access llevan bastante tiempo con nosotros. Aún existiendo alternativas gratuitas, son aplicaciones que consolidaron el éxito de Microsoft y se han convertido en herramientas extendidas y muy empleadas tanto en entornos profesionales como del hogar.

Una de ellas, quizás la menos empleada de las anteriores mencionadas, posee grandes características para poder crear desarrollos para pequeñas y medianas necesidades.

En esta entrada voy a escribir sobre la seguridad en Microsoft Access, cómo ha evolucionado y lo que podemos hacer con este gestor. También os dejaré un proyecto que he realizado para que podáis analizar cómo implementar una seguridad por usuarios basada en niveles y apoyada en dos bases de datos accdb (protegida con contraseña, con formularios de gestión de usuarios), válidas a partir de la versión 2007. También en el ejemplo, os muestro técnicas de uso con formularios, para crear interfaces de usuario, consultas paramétricas y ejemplos funcionales de recolección y tratamiento de datos y encuestas, que os pueden dar una idea de sus posibles utilidades en otro tipo de ámbitos.

Si bien es cierto que Access NO es un gestor relacional considerado puro, que sus características y seguridad no son tan profesionales como otros productos más sólidos (SQL Server, Oracle, Mysql…), nos puede proporcionar un entorno para crear aplicaciones de escritorio y para trabajo en red bastante funcional y específico. Necesidades específicas que otros programas ERP, CRM, etc no son capaces de recoger sin una costosa modificación o parametrización. Podríamos dar solución a necesidades empresariales(PYMES) y particulares especificas que de otra forma serían más costosas por sus modificaciones tanto a nivel presupuestario como técnico.

Sobre el ejemplo

¿Qué paso en la seguridad de usuarios a partir de la versión 2007?

Las Características de seguridad por usuarios ya no están disponibles en aplicaciones web de Access, bases de datos web o bases de datos que usan uno de los nuevos formatos de archivo (.accdb, .accde, .accdc, .accdr). La base de datos que os suministro posee un formato moderno accdb. Tampoco existen como tal los proyectos ADP, que en ocasiones se usaron para conectar con gestores SQL Server.

Desde la versión 2007 se puede continuar administrando la seguridad en los archivos de base de datos de escritorio de Access que usan un formato de archivo anterior de Access ( .mdb o ADE).

Por lo que esta técnica que os comento, os puede resultar muy interesante, ya que no existe otra en local para nuevos formatos. Podríamos emplear seguridad basada en Sharepoint y Access, o emplear otro gestor de apoyo como SQL Server, pero requiere de servidores externos.

El ejemplo suministrado esta formado por 2 bases de datos. Una de ellas posee una password y almacena los usuarios y sus accesos, también se establecen diversos niveles de acceso, siendo el nivel 2 el empleado por el administrador. Para poder gestionar los usuarios con los formularios creados, es necesario abrir la base de datos usando la contraseña demo.  Posee un control de validación y log de entrada a modo de tabla.

Os he dejado el formato con el código abierto accdb, os recuerdo que el código se encuentra disponible, podríais establecer una password en el código desde el editor de código que incorpora Access, o compilar la base de datos a un formato accde, para que no se viera el código, de tal forma que una vez que se han programado los formularios en los eventos de carga, comprobar su nivel y cargar o mostrar elementos en función del nivel de seguridad establecido.

El proyecto que os dejo, también muestra como desactivar ventanas para que luzca con una interfaz profesional, desactivar teclas f12 que muestran objetos, carga de formularios, uso de calendario alternativo y el código de como atacar mediante programación a una base de datos de Access diferente, de forma siempre relativa. Este código lo subiré para que se pueda hacer lo mismo desde una hoja de cálculo Excel (xlsx), que lea datos de una base Access, sin emplear DSN mediante cadena de conexión. Simplemente es necesario tener presente las referencias a objetos ADO.

También os muestro cómo cargar Access sin mostrar su logo (personalizando el de la empresa), o como se pueden leer imágenes desde el exterior (carpeta imágenes necesaria). Las ayudas son todas dinámicas apoyadas en tablas, para poder cambiarlas sin tocar código. Recordad que yo simplemente he establecido datos de la tabla usuarios de la otra base, pueden depositarse mas tablas si así fuera necesario.

Validación de usuarios en otra base

Seguridad alternativa

Los mejores consejos para aplicar seguridad alternativa, es cifrar la base de datos o  emplear un  servidor de bases de datos externo que administre datos y usuarios pero bajo el paraguas del gestor como SQL Server.

Seguridad de usuarios proporcionada por Sharepoint Server, que posibilitan incluso el trabajo sin conexión.

O finalizar con aplicaciones de Access que se ejecuten el en explorador web, usando la seguridad a nivel de servidor.

 

Archivos del fichero RAR

Recuerda… posee una password: demo, para acceder a la base de datos tienes que disponder como mínimo de Access 2007 y una estructura de archivos que dejo dentro del rar.

El fichero rar contiene 2 bases de datos, la base de datos usuarios requiere una contraseña para acceder (demo). La demo de formularios y todo el código se encuentra disponible en demo.accdb.

Es necesario dejar la carpeta imágenes al lado de las bases.

Demo de código ACCDB

Recuerda que puedes compilar la base de datos en formato accde para nadie pueda ver el código de seguridad por niveles.

Validamos si existe el usuario en la base de datos
'Procedimiento acceso a la base de datos con contraseña
Set cnn = New ADODB.Connection
ruta_base = Left(CStr(Application.CurrentDb.Name), Len(CStr(Application.CurrentDb.Name)) - 11) + "\usuarios.accdb"
'ruta = Left(CStr(Application.CurrentDb.Name), Len(CStr(Application.CurrentDb.Name)) - 23) + "\logo.jpg"
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
     "Data Source=" & ruta_base & ";" & _
     "Jet OLEDB:Database Password=demo"

Set registro = New ADODB.Recordset
Set registro_log = New ADODB.Recordset
cSQL = "select count(*) as cuenta from usuarios where login ='" & LCase(login) & "' and password = '" & LCase(password) & "';"
registro.Open cSQL, cnn, adOpenDynamic, adLockOptimistic
registro_log.CursorType = adOpenOptimistic
registro_log.LockType = adLockOptimistic
registro_log.Open "log", cnn
'Nos preparamos para la gestión del log
registro_log.AddNew
registro_log!Fecha = Date
registro_log!hora = Time
usuario = login
registro_log!login = login

registro_log!password = password
If registro!cuenta = 0 Then
estado.Caption = "Acceso no válido, compruebe sus credenciales. "
registro_log!fallido = "SI"
registro_log.Update
registro_log.Close
registro.Close
cnn.Close
Else
'Mostramos la barra de menus si se poseen los permisos adecuados
registro_log!fallido = "NO"
registro_log.Update
registro_log.Close
registro.Close



'Establecemos las variables globales
Global_usuario = LCase(usuario)
Global_Password = LCase(password)

Set registro = New ADODB.Recordset
cSQL = "select nivel from usuarios where login ='" & LCase(login) & "' and password = '" & LCase(password) & "';"
registro.Open cSQL, cnn, adOpenDynamic, adLockOptimistic

'Se establece el nivel de acceso a la entrada
Global_nivel = registro!Nivel
registro.Close
cnn.Close
DoCmd.Close

DoCmd.OpenForm "principal"
Form_principal.usuario.Caption = usuario & " , nivel " & Global_nivel

End If

 

Vídeo

Galería fotográfica.


Usted debe ser Registrado para publicar un cometario

Home Access Seguridad en Microsoft Access. Control de usuarios y demo de una aplicación.
© www.palentino.es, desde el 2012 - Un Blog para compartir conocimientos ...

Uso de cookies en mi sitio palentino.es

Este sitio web utiliza cookies para que tengamos la mejor experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de la política de cookies

ACEPTAR
Aviso de cookies