Alguém pode me dizer como mostrar todos os privilégios / regras de um usuário específico no sql-console?
fonte
Alguém pode me dizer como mostrar todos os privilégios / regras de um usuário específico no sql-console?
Você pode tentar as visualizações abaixo.
SELECT * FROM USER_SYS_PRIVS;
SELECT * FROM USER_TAB_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;
DBAs e outros usuários avançados podem encontrar os privilégios concedidos a outros usuários com as DBA_
versões dessas mesmas visualizações. Eles são abordados na documentação .
Essas visualizações mostram apenas os privilégios concedidos diretamente ao usuário. Encontrar todos os privilégios, incluindo aqueles concedidos indiretamente por meio de funções, requer instruções SQL recursivas mais complicadas:
select * from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER' order by 1,2,3;
select * from dba_sys_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3;
select * from dba_tab_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3,4;
Existem vários scripts flutuando que farão isso, dependendo de quão louco você deseja ficar. Eu pessoalmente usaria o script find_all_privs de Pete Finnigan .
Se você quiser escrevê-lo sozinho, a consulta será um tanto desafiadora. Os usuários podem receber privilégios de sistema que são visíveis em DBA_SYS_PRIVS
. Eles podem receber privilégios de objeto que são visíveis em DBA_TAB_PRIVS
. E eles podem receber funções que são visíveis em DBA_ROLE_PRIVS
(funções podem ser padrão ou não padrão e também podem exigir uma senha, então só porque um usuário recebeu uma função não significa que ele pode necessariamente usar os privilégios que ele adquirida por meio da função por padrão). Mas esses papéis podem, por sua vez, ser privilégios concedidos sistema, privilégios de objeto e funções adicionais que podem ser vistos olhando ROLE_SYS_PRIVS
, ROLE_TAB_PRIVS
e ROLE_ROLE_PRIVS
. O script de Pete percorre esses relacionamentos para mostrar todos os privilégios que acabam fluindo para um usuário.
SYS
privilégios e apenas desejam examinar os privilégios de nossa própria conta, o script é totalmente inútil. Eu não tenho acesso aUTL_FILE
nemDBA_SYS_PRIVS
e outroDBA
eSYS
áreas os olhares de script no.ROLE_SYS_PRIVS
,ROLE_TAB_PRIVS
eROLE_ROLE_PRIVS
precisa ser examinado. Os documentos indicam que são para o usuário atual .Outro recurso útil:
http://psoug.org/reference/roles.html
fonte
DBA
ouSYS
e quiser apenas encontrar os privilégios de sua própria conta.Embora a resposta de Raviteja Vutukuri funcione e seja rápida de montar, ela não é particularmente flexível para variar os filtros e não ajuda muito se você estiver procurando fazer algo programaticamente. Então, eu montei minha própria consulta:
Vantagens:
WHERE
cláusula.DBMS_OUTPUT
ou algo assim (em comparação com o script vinculado de Pete Finnigan). Isso o torna útil para uso programático e para exportação.GRANT
.fonte
USER_SYS_PRIVS
(privilégios de sistema concedidos diretamente),USER_TAB_PRIVS
(privilégios de objeto concedidos diretamente)USER_ROLE_PRIVS
(funções concedidas diretamente ao usuário),ROLE_ROLE_PRIVS
(para obter funções herdadas),ROLE_SYS_PRIVS
(privs de sistema por meio de funções) eROLE_TAB_PRIVS
(privs de objeto por meio de funções). Ugh. Oracle é tão complicado.Você pode usar o código abaixo para obter todas as listas de privilégios de todos os usuários.
fonte
Para mostrar todos os privilégios:
fonte