Auditoria en BD de las Sesiones Web

2,487 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,487
On SlideShare
0
From Embeds
0
Number of Embeds
1,910
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Auditoria en BD de las Sesiones Web

  1. 1. Auditoría en BD de las sesiones web Bernabé Nicolás García© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  2. 2. Contenido1.- Presentación del problema2.- Contextos3.- Solución© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  3. 3. Presentación del problema Auditoría Cliente servidor© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  4. 4. Presentación del problema Auditoría Web© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  5. 5. Presentación del problema Trigger base de datos© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  6. 6. Contextoshttp://www.um.es/atica/sql---contextos Un contexto Oracle (o contexto de aplicación o también namespace), es algo así comouna agrupación de variables globales. Oracle permite crear contextos (con el privilegioCREATE ANY CONTEXT), y dentro de cada contexto se pueden definir atributos (similares avariables globales), de forma que una vez que le asigno valor a un atributo lo tendré disponibleen cualquier momento dentro de la misma sesión (incluso entre sesiones si defino elcontexto como global). Otra sesión puede tener un valor diferente para el mismo atributoanterior.Para crear un contexto, primero tengo que crear un paquete que me permita definir atributospara dicho contexto (proporcionando seguridad a la citada definición de atributos); de modoque no puedo definir atributos en un contexto ejecutando directamenteDBMS_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.© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  7. 7. Contextos Paquete de base de datos para la gestión de contextos © 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  8. 8. Solución Modificaciones en la base de datos:© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  9. 9. Solución Modificación del Trigger de auditoría © 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  10. 10. Solución Función f_usuario_auditoria. Varias aplicaciones, cada una en un Contexto diferente.© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  11. 11. Solución Función get_value.© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  12. 12. Solución Modificaciones en la aplicación Web:© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  13. 13. Solución  Establecemos la variable dni del contexto en la aplicación Web.© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  14. 14. Solución Set_client_identifier© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  15. 15. Solución  Set_dni© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  16. 16. Solución  Obtenemos…© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  17. 17. 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:© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  18. 18. Alternativa Solución  Le añadimos los siguientes métodos: protected DataSource getDataSource() { return this.dataSource; }© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  19. 19. 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); }© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  20. 20. 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); }© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  21. 21. 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.© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
  22. 22. Fin Gracias por vuestra atención ¿Alguna pregunta?© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

×