auditoria en bd de las sesiones web

Post on 12-Jun-2015

2.258 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

© 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

© 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

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Presentación del problema

Auditoría Cliente servidor

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Presentación del problema

Auditoría Web

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Presentación del problema

Trigger base de datos

© 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.

© 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

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Solución

Modificaciones en la base de datos:

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Solución

Modificación del Trigger de auditoría

© 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.

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Solución

Función get_value.

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Solución

Modificaciones en la aplicación Web:

© 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.

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Solución

Set_client_identifier

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Solución

Set_dni

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Solución

Obtenemos…

© 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:

© 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;}

© 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); }

© 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); }

© 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.

© 2009. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.

Fin

Gracias por vuestra atención

¿Alguna pregunta?

top related