Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paperino

Monitorando acessos sysadm nas bases

Recommended Posts

Trabalho com unix e com a base de dados oracle.Aqui o desenvolvimento é feito por uma empresa e os testes por outra (minha empresa) Estou fazendo uma query para monitorar os acessos à nossa base de testes porque notamos, através do select abaixo, que existem muitos desenvolvedores que acessavam a nossa base de testes com o usuário sysadm do oracle, o que é inadimissível. O acesso para esses desenvolvedores só é permitido via usuário readonly. A equipe que controla os ambientes me disse que não temos como impedir o acesso deles à nossa base porque mesmo alterando as senhas frequentemente é possível descobrir, num arquivo de core dump do Unix, o usuário e senha sysadm da base. O que pensei em fazer é monitorar os acessos pra gerar relatórios e pra isso a query abaixo ajudou bastante, porém descobrimos que quando alguém acessa via dblink, mesmo quando logado como readonly, o resultado da query diz que o usuário acessou como sysadm. Alguém sabe como tornar este select mais preciso? Bastaria informar através de outra coluna se o acesso é feito por um DBLINK ou não. Query:select DECODE(p.paddr, null, status, 'ORACLE' || DECODE(status, 'ACTIVE',null, '*')) status , DECODE(osuser, 'UNKNOWN',null, osuser) || ';' osuser , s.username || ';', machine, DECODE(p.name, null, s.program, p.name || ' - ' || p.description) program, a.sql_Text || ';', w.seconds_in_wait || ';', w.state || ';', w.event , 'alter system kill session ''' || s.sid || ',' || s.serial# || ''';' KILL, pro.spidfrom v$session s, v$bgprocess p, v$session_wait w, v$sqlarea a, v$process prowhere s.paddr = p.paddr(+) and w.sid(+) = s.sid and a.address(+) = s.sql_Address and s.paddr = pro.addrorder by 1,2,3 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente criar uma trigger para verificar que se loga

 

CREATE OR REPLACE TRIGGER TESTE_LOGON
																	 
AFTER LOGON ON DATABASE
																 
																			

															   
BEGIN
																				   
  IF USER = 'SYSDBA' THEN 
   -- FAZ ALGUMA COISA 
					 
  END IF;
																			   
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.