Seguridad listener Oracle

Sácame de una duda:
Tengo instalado Oracle 9i sobre Linux en un servidor y todos
mis usuarios se conectan sin problema al servicio con una aplicación exclusiva
para esta base. Sin embargo también se pueden conectar haciendo uso de Excel o Access
lo cual pone en riesgo la información.
Existe alguna forma de hacer que la base de datos brinde
servicio solamente a aquellos equipos que se conecten haciendo uso del sistema
desarrollado para esta base de datos?

3

3 respuestas

Respuesta
1

Puedes por ejemplo crear un trigger de B.D. :

After logon on database

Y hacer un RAISE APPLICATION ERROR cuando el programa de conexión sea el que quieras.

Para obtener el programa de la sesión:

select program from v$session where audsid = userenv('SESSIONID')

Muchas gracias por tu aporte, podrías por favor aclarar un poco mas como funcionaria esto?

muchas gracias

La idea es crear un trigger que se dispara cuando se conecta un usuario a la B.D., dentro de el validas el programa que se conecta y si no es correcto haces un raise application que aborta la conexión. Por ejemplo para que no se pueda entrar desde el TOAD:

Create or replace trigger TRG_logon_programa after logon on database
declare programa varchar2(500);
Begin
-- Programa de la sesión que se conecta
select program into programa
from v$session
where audsid=userenv('SESSIONID');

if ((upper(r_session.program) like '%T%O%A%D%')
or (upper(r_session.program) like '%TOAD%'))
then
raise_application_error(-20009,'No esta permitido entrar desde el TOAD');
end if;
end;
/

Para EXCEL suele funcionar con esto:

<p class="scayt-misspell" data-scayt_word="r_session" data-scaytid="18">create or replace trigger TRG_logon_programa after logon on database
declare programa varchar2(500);
Begin
-- Programa de la sesión que se conecta
select program into programa
from v$session
where audsid=userenv('SESSIONID');
if upper(programa) like '%EXCEL%')
then
raise_application_error(-20009,'No esta permitido entrar desde el EXCEL');
end if;
end;
/
Respuesta
1

A ver, existen métodos para hacer esto que pides, pero ten en cuenta que, aunque sea poco, afectara al rendimiento ya que has de añadir un trigger que analizara cada petición.

En primer lugar, yo te recomiendo que definas una buena política de usuarios, de forma que tu aplicación tenga un usuario con unos accesos, y a la gente que usa el excel le des otro usuario con menos permisos. Esta es la solución buena!

Si aún así, no tienes control sobre tus usuarios o la gente puede obtener el usuario/pass de la aplicación fácilmente, en tal caso tendrás que hacer un trigger que, mire que programa esta accediendo al sistema y, en el caso que no sea TU programa, rechazar la conexión.

Te paso un link de una persona que pregunta algo parecido a lo tuyo y le han respondido muy bien:

http://es.groups.yahoo.com/group/AdminBDOracle/message/2275

La diferencia con tu caso, es que el lo que quiere es que la gente de una cierta aplicación no pueda conectarse, en tu caso, te interesa que cualquier persona que no sea de tu aplicación no se pueda conectar, es decir, tienes que modificar la linea:

IF UPPER(vprogram) LIKE '%TOAD%' THEN

por

IF UPPER(vprogram) NOT LIKE '%NOMBRE DE TU APLICACION%' THEN

Es un tema un poco complejo, comentame los problemas que te vayan saliendo y lo resolvemos poco a poco.

Respuesta
1

No se mucho de oracle en linux pero lo que se es que la bases de datos se conectan a través de una fuente de datos (odbc por ejemplo), entonces una opción es: que el origen de datos de tus clientes, (si es que es windows) esta creado en un ODBC de sistema de windows y todas las aplicaciones tanto excel como la aplicación principal apunten a ese ODBC y se conecten en automático, o bien, que dentro de la aplicación principal y aplicaciones de office tengan configurada la conexión, cualquiera de los puntos, se me ocurre que puedes quitar de excel el odbc o cambiar la contraseña y habilitarsela unicamente a tu aplicación principal, cuéntame que es.o. usas y que origen de datos tienes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas