Download Operaciones del servidor y permisos

Document related concepts
no text concepts found
Transcript
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