auditoria en bd de las sesiones web
Upload: seccion-de-metodologias-normalizacion-y-calidad-del-software
Post on 12-Jun-2015
2.258 views
TRANSCRIPT
![Page 1: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/1.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Auditoría en BD de las sesiones web
Bernabé Nicolás García
![Page 2: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/2.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Contenido
1.- Presentación del problema
2.- Contextos
3.- Solución
![Page 3: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/3.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Presentación del problema
Auditoría Cliente servidor
![Page 4: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/4.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Presentación del problema
Auditoría Web
![Page 5: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/5.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Presentación del problema
Trigger base de datos
![Page 6: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/6.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Contextos
http://www.um.es/atica/sql---contextos
Un contexto Oracle (o contexto de aplicación o también namespace), es algo así como una agrupación de variables globales. Oracle permite crear contextos (con el privilegio CREATE ANY CONTEXT), y dentro de cada contexto se pueden definir atributos (similares a variables globales), de forma que una vez que le asigno valor a un atributo lo tendré disponible en cualquier momento dentro de la misma sesión (incluso entre sesiones si defino el contexto como global). Otra sesión puede tener un valor diferente para el mismo atributo anterior.
Para crear un contexto, primero tengo que crear un paquete que me permita definir atributos para dicho contexto (proporcionando seguridad a la citada definición de atributos); de modo que no puedo definir atributos en un contexto ejecutando directamente DBMS_SESSION.SET_CONTEXT (obtendría un error "ORA-01031 Privilegios Insuficientes"), sino que tengo que hacerlo desde el paquete del contexto, por ejemplo:
SQL> create context ctx_prueba using pkg_ctx_prueba ACCESSED GLOBALLY;;Context created.
![Page 7: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/7.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Contextos
Paquete de base de datos para la gestión de contextos
![Page 8: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/8.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Modificaciones en la base de datos:
![Page 9: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/9.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Modificación del Trigger de auditoría
![Page 10: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/10.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Función f_usuario_auditoria. Varias aplicaciones, cada una en un Contexto diferente.
![Page 11: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/11.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Función get_value.
![Page 12: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/12.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Modificaciones en la aplicación Web:
![Page 13: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/13.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Establecemos la variable dni del contexto en la aplicación Web.
![Page 14: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/14.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Set_client_identifier
![Page 15: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/15.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Set_dni
![Page 16: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/16.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Solución
Obtenemos…
![Page 17: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/17.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Alternativa Solución (Aún no probada)
En el POM Principal de la aplicación hay que añadir:
<properties> <fundeweb-jpa-extend.version>1.2.6.CR1</fundeweb-jpa-extend.version></properties>
En la clase ServicioGenericoPao la declaramos como clase abstracta:
![Page 18: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/18.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Alternativa Solución
Le añadimos los siguientes métodos:
protected DataSource getDataSource() { return this.dataSource;}
![Page 19: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/19.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Alternativa Solución
Le añadimos los siguientes métodos:
/** * Metodo utilzado para obtener una conexion del datasource pasado como parametro, configurada con los parámetros de * identificación de la 'acción' a realizar por un 'usuario' de una 'aplicción'. * * @param dataSource * -- un DataSource del que se obtiene la conexion. * @param action * -- la acción realizada * @param application * -- la aplicación donde se realiza la acción * @param user * -- el usuario que realiza la acción * @return Connection -- una conexion JDBC. * @throws SQLException * - si se produce algun error */ protected Connection getConnectionWithClientId(DataSource dataSource, String action, String program, String user) throws SQLException { return dataSource == null ? null : OracleUtils.setClientIdToConnection(dataSource.getConnection(), action, program, user); }
![Page 20: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/20.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Alternativa Solución
Le añadimos los siguientes métodos:
/** * Metodo utilzado para obtener una conexion del datasource obtenido mediante el método getDataSource(), * configurada con los parámetros de identificación de la 'acción' a realizar por un 'usuario' de una 'aplicción'. * * @param action * -- la acción realizada * @param application * -- la aplicación donde se realiza la acción * @param user * -- el usuario que realiza la acción * @return Connection -- una conexion JDBC. * @throws SQLException * - si se produce algun error */ protected Connection getConnectionWithClientId(String action, String program, String user) throws SQLException { return getDataSource() == null ? null : OracleUtils.setClientIdToConnection(getDataSource().getConnection(), action, program, user); }
![Page 21: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/21.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Alternativa Solución
Ahora en las llamadas JDBC tienes que obtener la conexión con el método getConnectionWithClientId, pasándole los parámetros de la acción, aplicación y usuario.
ATENCION: Este método solo funciona con el driver OJDBC de Oracle sin DMS. En el OC4J se esta cargando el driver con DMS, por lo que este método no funciona.
![Page 22: Auditoria en BD de las Sesiones Web](https://reader034.vdocumento.com/reader034/viewer/2022052620/557ae67bd8b42a63778b54b5/html5/thumbnails/22.jpg)
© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Fin
Gracias por vuestra atención
¿Alguna pregunta?