Operaciones del servidor y permisos
Transcripción
Operaciones del servidor y permisos
SGME – Documento Adjunto Manual de introducción al acceso a la base de datos Andrés Moschini Índice Introducción ....................................................................................................................................................2 Aclaración sobre tipos...................................................................................................................................2 Operaciones del servidor y permisos...................................................................................................................3 Creación de Usuario................................................................................................................................3 Eliminación de Usuario.............................................................................................................................3 Conexión a la base de datos.....................................................................................................................4 Desconexión de la base de datos...............................................................................................................4 Modificación de Clave de usuario...............................................................................................................4 Asignación de rol a usuario.......................................................................................................................4 Desvincular rol y usuario..........................................................................................................................5 Validación de una persona como configurador.............................................................................................5 Validación de una persona como usuario....................................................................................................5 Invocación de las operaciones principales............................................................................................................6 SGME - Manual de introducción al acceso a la base de datos Introducción El presente documento se incluye con el objetivo de generar un nivel de abstracción, que en los demas documentos del proyecto SGME permitirá hacer referencia a la base de datos como si se tratase de un subsistema con una iterface bien definida y delimitada o API. Dicha API estará conformada por un conjunto de operaciones, en general stored procedures. Son la excepción aquellas relacionadas mas directamente con el servidor Firebird mismo, cuyos comandos están fuera del lenguaje PSQL, por ejemplo: creación de usuarios y login. La arquitectura de nuestra aplicación se basa en el modelo cliente/servidor, con clientes mas o menos livianos que solo implementan la interfase con el usuario. Las capas de negocio y de datos están integradas en en el servidor: los datos organizados en tablas y la lógica de negocio distribuida en triggers, permisos, restricciones y stored procedures. La intención de esta API es ocultar al sistema cliente la organización interna del servidor, simplificando y ordenando el diseño de ambas partes. La definición de esta API escapa al alcanze del presente documento e irá creciendo a medida que se avance en las iteraciones. Aclaración sobre tipos Firebird no soporta de forma nativa el tipo booleano, por lo cual se ha definido un dominio D_BOOL CHAR(1) que reprenta Verdadero con el carácter 'T' y Falso con el carácter 'F'. Tampoco soporta tipos de datos variables en una misma columna, eso se resolvio guardando los datos que podrían tomar valores de diferentes tipos como VARCHAR(255) cuyo primer carácter indicaría el tipo al que corresponde el contenido. 2 SGME - Manual de introducción al acceso a la base de datos Operaciones del servidor y permisos Algunas de las operaciones del servidor no pertenecen al standard SQL o al lenguaje PSQL, por ello, a continuación se explicara como realizar dichas operaciones de dos diferentes formas: Utilizando las herramientas de línea de comandos de Firebird y utilizando la interfase ADO.NET. Previamente se presentarán algunas conceptos comunes para todas estas operaciones. Sintaxis ADO.NET Inicialización del objeto encargado de agregar, eliminar y modificar usuarios del servidor de base de datos: FirebirdSql.Data.Firebird.Services.FbSecurity FBSecurity = new FbSecurity(); FBSecurity.ConnectionString = <<string de la forma "User=nombreUsr; Password=claveUsr; Server=Server;”>> Selección de un usuario por su nombre: FbUserData buscarUsuario(FbSecurity _fbSecurity, String nombreUsuario) { FbUserData[] datosDeUsuarios = _fbSecurity.DisplayUsers(); FbUserData datosUsuario = null ; foreach (FbUserData DatosUsuario in datosDeUsuarios) { if (DatosUsuario.UserName == nombreUsuario) datosUsuario = DatosUsuario; } } Sintaxis Línea de Comandos Ejecución de la herramienta gsec para un servidor local: gsec –user nombreUsr –password claveUsr Ejecución de la herramienta gsec para un servidor remoto: gsec –user nombreUsr –password claveUsr –database “DirecciónServer:RutaBaseDatosSecurity” Creación de Usuario Vista de diseño: SERV_FIREBIRD.NUEVOUSR(NOMBRE : string, CLAVE : int) Permitido a: AdminClaves. Sintaxis ADO.NET <<Inicializacion de FBSecurity>> FbUserData UsuarioModificar = new FbUserData(); UsuarioModificar.UserName = NOMBRE; UsuarioModificar.UserPassword = CLAVE; FBSecurity.AddUser(UsuarioModificar); Sintaxis Línea de Comandos <<Ejecución de GSEC>> GSEC> add NOMBRE –pw CLAVE Eliminación de Usuario Vista de diseño: SERV_FIREBIRD.QUITARUSR(NOMBRE : string) Permitido a: AdminClaves. Sintaxis ADO.NET <<Inicializacion de FBSecurity>> FbUserData UsuarioModificar = buscarUsuario(FBSecurity, NOMBRE); FBSecurity.DeleteUser(UsuarioModificar); Sintaxis Línea de Comandos <<Ejecución de GSEC>> GSEC> delete NOMBRE 3 SGME - Manual de introducción al acceso a la base de datos Conexión a la base de datos Vista de diseño: SERV_FIREBIRD.CONECTAR(NOMBRE : string, CLAVE : string, ROL : string) Permitido a: Persona. Sintaxis ADO.NET FbConnection FBConnection = new FbConnection(<<string de la forma "User=nombreUsr; Password=claveUsr; Database=RutaBaseDatosMANTMMGR; DataSource=DireccionServer; Role=ROL;”>>); FBConnection.Open(); Sintaxis Línea de Comandos <<Ejecución de herramienta ISQL>> SQL>CONNECT “RutaBaseDatos” user ‘nombreUsr’ password ‘claveUsr’; Desconexión de la base de datos Vista de diseño: SERV_FIREBIRD.Desconectar() Permitido a: Persona. Sintaxis ADO.NET <<Conexión FBConnection Establecida>> FBConnection.Close(); Sintaxis Línea de Comandos <<Conexión SQL Establecida>> SQL> EXIT; Modificación de Clave de usuario Vista de diseño: SERV_FIREBIRD.CAMBIARCLAVE(NOMBRE : string, CLAVE : string) Permitido a: Persona (solo cambiar su propia clave); AdminClaves (Cambiar cualquier clave). Sintaxis ADO.NET <<Inicializacion de FBSecurity>> FbUserData UsuarioModificar = buscarUsuario(FBSecurity, NOMBRE); UsuarioModificar.UserPassword = claveNueva; fbSecurity.ModifyUser(UsuarioModificar); Sintaxis Línea de Comandos <<Ejecución de GSEC>> GSEC> modify NOMBRE –pw CLAVE Asignación de rol a usuario Vista de diseño: DB_MANTMMGR.ASIGNARROL(USR : string, ROL : string) Permitido a: AdminClaves. Sintaxis ADO.NET <<Conexión FBConnection Establecida>> FbCommand command = new FbCommand("GRANT “+ ROL +” TO " + USR + ";", FBConnection); command.ExecuteNonQuery(); Sintaxis Línea de Comandos <<Conexión SQL Establecida>> SQL> GRANT ROL TO USR; 4 SGME - Manual de introducción al acceso a la base de datos Desvincular rol y usuario Vista de diseño: DB_MANTMMGR.QUITARROL(USR : string, ROL : string) Permitido a: AdminClaves. Sintaxis ADO.NET <<Conexión FBConnection Establecida>> FbCommand command = new FbCommand("REVOKE “+ ROL +” FROM " + USR + ";", FBConnection); command.ExecuteNonQuery(); Sintaxis Línea de Comandos <<Conexión SQL Establecida>> SQL> REVOKE ROL FROM USR; Validación de una persona como configurador Vista de diseño: APIDB.VALIDARCONFIGURADOR() Permitido a: Configurador. Sintaxis SQL: EXECUTE PROCEDURE VALIDARCONFIGURADOR; Validación de una persona como usuario Vista de diseño: APIDB.VALIDARUSUARIO() Permitido a: Usuario. Sintaxis SQL: EXECUTE PROCEDURE VALIDARUSUARIO; 5 SGME - Manual de introducción al acceso a la base de datos Invocación de las operaciones principales Las operaciones principales a realizar sobre los datos del sistema se implementan como stored procedures de manera que pueden ser invocados como cualquier orden SQL standard. Dichas operaciones se describirán en un documento acerca de la API de la base de datos. Ejemplos desde ADO.NET Llamada a un SP “ejecutable” que no devuelve nada: <<Conexión FBConnection Establecida>> FbCommand command = new FbCommand(“EXECUTE PROCEDURE <<NOMBRE DEL SP Y SUS PARAMETROS>>;”, FBConnection); command.ExecuteNonQuery(); Llamada a un SP “ejecutable” que devuelve un valor: <<Conexión FBConnection Establecida>> FbCommand command = new FbCommand(“EXECUTE PROCEDURE <<NOMBRE DEL SP Y SUS PARAMETROS>>;”, FBConnection); object Variable = command.ExecuteScalar(); Llamada a un SP “seleccionable” que devuelve varias filas: <<Conexión FBConnection Establecida>> FbCommand command = new FbCommand(“SELECT <<COLUMNAS>> FROM <<NOMBRE DEL SP Y SUS PARAMETROS>>;”, FBConnection); FbDataReader reader = command.ExecuteReader(); Ejemplos desde Línea de Comandos Llamada a un SP “ejecutable”: <<Conexión SQL Establecida>> SQL> EXECUTE PROCEDURE <<NOMBRE DEL SP Y SUS PARAMETROS>>; Llamada a un SP “seleccionable”: <<Conexión SQL Establecida>> SQL> SELECT <<COLUMNAS>> FROM PROCEDURE <<NOMBRE DEL SP Y SUS PARAMETROS>>; 6