Resumen Seguridad en las Bases de Datos

jlap@zaz.servicom.es wrote:
>
> Hola listeros.
> Estoy intentando establecer la seguridad de una base de datos, en principio
> monousuario, como ejercicio para entender este tema. Por mucho que lo
> intento no me aclaro.
> Establezco una contraseña global abriendo la base de datos en Access,
> ¿Como la verifico en VB para acceder a ella?
> Si creo los grupos de usuarios en Access ¿Como los identifico con el codigo?
>
> He revisado los objetos User y Workspace pero sigo sin tenerlo claro. A
> ver si alguien me echa una mano.
>
> Un saludo para todos
> Jose Ramon.

Lo que seguramente tú haces es establecer una constraseña para el
usuario Administrador (Admin en VB). En el código que mando debajo,
sustituye la variable POscar por una contraseña errónea, y ya verás lo
que te dice VB. Si pones la contraseña buena, te dejará entrar. El motor
de la base de datos no te permite ver la contraseña (aunque sea tuya),
porque si no, menudo pitorreo. De todas maneras, cuando diseñes una base
de datos con seguridad, te recomiendo que hagas unos pasos previos:

1) Ve al administrador de grupos de Access y crea un grupo de trabajo
nuevo, y en el directorio de diseño (no uses el system.mda, más que nada
por confusión con el system.mda por defecto);

2) Entra en Access. Crea la base de datos (si la tienes creada pero en
otro grupo de trabajo, importa todas las tablas y consultas; apenas te
llevará un par de minutos si son muchas).

3) Una vez creadas las tablas y consultas, tienes que asignar los
derechos. En el menú de Usuarios, Autorizaciones, puedes manipular todos
los usuarios, así como crear contraseñas, aunque para cambiar la
contraseña de un usuario nuevo tienes que salir de Access y volver a
entrar con ese usuario, y luego elegir la opción de cambiar contraseña.

4) Una vez puestos todos los usuarios, grupos y permisos, ejectuta de
nuevo el administrador de grupos para unirte al grupo que sueles usar
habitualmente (generalmente system.mda).

Voy a mandar un trozo de código que pueda ayudarte.



Aprovecho la ocasión para mandar un código con el cual tengo un
problema.
Primero decir que yo sólo tengo Access 2.0 (16 bits), y el código
funciona perfectamente en VB4 de 16 bits, pero si uso el mismo código
fuente lo complio en VB4 32, me da el error 3028, que no encuentra la
base de datos del sistema (típicamente SYSTEM.MDW), cuando trata de
acceder a la contraseña del usuario principal. Tengo instalado el módulo
de compatibilidad 2.5/3.0, e incluso he llegado a instalar manualmente
la referencia al DAO2016.DLL (que es la que usa VB4 16), pero me da el
mismo error.


FichIni = App.Path & "\" & NombreBase & ".ini"
SaveSetting App.EXEName, "Options", "SystemDB", FichIni
Passw = "kkl"
DBEngine.IniPath = GetSetting(App.EXEName, "options", "SystemDB")
DBEngine.DefaultUser = "Oscar"
DBEngine.DefaultPassword = POscar
Set WK = DBEngine.CreateWorkspace("Video", "Oscar", POscar)
Set BD = WK.OpenDatabase(App.Path & "\" & NombreBase & ".MDB")


P.D.: La razón por la que creo un workspace (pero no lo añado a la
colección Workspaces) es que Microsoft dice que pueden existir
"filtraciones" y mediante DLL's averiguar contraseñas, y por eso no uso
Workspaces(0).



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com