Quais schemas possuem grant de DBA?
Olá pessoal!
Um costume chato que se tem por ai é dar GRANT de DBA para resolver problemas do cotidiano.
Não preciso nem citar que além de uma prática perigosa é também uma maneira bem deselegante de resolver as situações do dia-a-dia.
Então digamos que você chegou na nova empresa e eles não tinham um DBA, ou o anterior fazia isso, como vamos resolver?
A primeira coisa obviamente é sentar com o pessoal de desenvolvimento e entender o que eles precisam, quando precisam e se houverem aplicações como elas trabalham, entre outros.
Mas e pra descobrir quem tem permissão de DBA? Esse é o foco de hoje =)
Caso você queira apenas saber quem são pode usar o seguinte comando
system@ORCL> SELECT * FROM dba_role_privs WHERE granted_role = 'DBA';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
SYS DBA YES YES
SYSMAN DBA NO YES
SYSTEM DBA YES YES
No meu caso mostrou apenas os usuários que já vem por padrão com essa permissão.
Se você quiser já criar um comando pronto para dar revoke (no caso de muitos schemas) é só usar o comando abaixo:
SELECT 'REVOKE DBA FROM ' || grantee || ';' FROM dba_role_privs WHERE granted_role = 'DBA' AND grantee NOT LIKE '%SYS%';
Então é isso, espero ter ajudado em alguma coisa no seu dia-a-dia.
Os posts sobre RMAN estão um pouco atrasados por causa do OCP, peço desculpas.
Abraços!
E ai Felipe..Muito bom o post simples porém necessário.
A segurança é um item prioritário para todo DBA.
Abraços
Emerson Martins
Exatamente Emerson!
Acho incrível que ainda hoje tem muita gente, que na pressa ou na preguiça sai liberando permissões desse nível.
Temos que lembrar que, de uma forma ou de outra, estamos sempre lidando com os dados de alguém.
Abraços e obrigado por postar!
Atenciosamente,
Felipe.