Eu quero criar um gatilho de logon. O gatilho fará o seguinte:
Ele bloqueará o acesso ao banco de dados com base em determinados usuários e determinadas informações da máquina. Em seguida, ele dará uma mensagem informativa ao usuário e inserirá essas informações de sessão em uma tabela.
Por exemplo;
Usuários: mike, john, eric, daisy, albert
Máquina: NEWMACH%
Mensagem para o usuário: Você não tem permissão para fazer logon da máquina '||MACHINE|| ' usando '|| NOME DE USUÁRIO
As informações que ele irá inserir na tabela: username, osuser, machine, port, terminal, program, module, instance_id, sid, serial#
Nome da tabela: DBADMINISTRATOR.LOGON_TBL
Eu tenho uma ideia de gatilho da seguinte forma;
CREATE OR REPLACE TRIGGER DBADMINISTRATOR.LOGON_FILTER
AFTER LOGON
ON DATABASE
DECLARE
USERNAME varchar2 (200);
MACHINE varchar2 (200);
begin
...
...
if
...
then
raise_application_error(-20001,'You are not allowed to logon from machine '||MACHINE|| ' using '|| USERNAME);
end if;
end;
/
Você pode ajudar a criar scripts e isso causará problemas de desempenho?
Cumprimentos,
Isso se tornará rapidamente um pesadelo de manutenção. O que acontece quando o novo laptop que seu chefe recebeu esta manhã precisa executar um relatório de banco de dados para uma reunião que começa em 5 minutos, mas você ainda não teve tempo de atualizar a lista de permissões? Além disso, todas as informações do sistema que você pode verificar podem ser falsificadas pelo usuário se ele souber o que está fazendo, portanto, isso não contribui muito para aumentar a segurança.
Se você deseja limitar o acesso, use o firewall do SO ou o Oracle Connection Manager (se você tiver o Enterprise Edition) para limitar os clientes a sub-redes de rede específicas (nunca endereços IP individuais). Caso contrário, controle o que o usuário pode fazer no banco de dados usando funções, perfis e privilégios. Você sempre pode controlar o que o usuário pode fazer quando estiver conectado; é muito mais difícil limitar como eles se conectam.
Se você precisar de mais detalhes, publiquei alguns artigos no blog sobre esse tipo de coisa no ano passado, aqui, inspirado em postagens anteriores nos fóruns do Stack Exchange:
Veja também: