Tenho certeza de que isso já foi solicitado antes, mas não consigo encontrar os detalhes relevantes para o seguinte.
Existe algum tipo de tabela pré-criada que pode fazer o seguinte (usei o dba_tab_privs, mas é limitado e não atende a todas as minhas necessidades); caso contrário, alguém tem alguma dúvida para responder ao seguinte?
Listar todos os usuários aos quais foi atribuída uma função específica?
Listar todas as funções atribuídas a um usuário?
Listar todos os privilégios dados a um usuário?
Listar a quais tabelas uma determinada função concede acesso ao SELECT?
Listar todas as tabelas das quais um usuário pode SELECIONAR?
Listar todos os usuários que podem SELECIONAR em uma tabela específica (seja através de uma função relevante ou através de uma concessão direta (por exemplo, seleção de concessão na possibilidade de participar))? O resultado dessa consulta também deve mostrar por qual função o usuário tem esse acesso ou se foi uma concessão direta.
— dgf
Listar todos os usuários aos quais foi atribuída uma função específica
Listar todas as funções atribuídas a um usuário
Listar todos os privilégios dados a um usuário
Nota: Extraído de http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html
Este é um bom começo, mas o nº 3 não inclui privilégios de objeto, o nº 5 não inclui os SELECTprivilégios disponíveis devido a uma função e o nº 6 está ausente.
Opps, preciso de alguns CONNECT BY .. ANTERIOR para # 6
A sua resposta para o item 5 inclui tabelas que o usuário pode selecionar através de uma função que foi designada?
Isso funciona se o usuário obtiver o privilégio de uma função à qual foi concedida outra função?
Existem várias maneiras de obter as informações que você deseja usar:
visualizações do dicionário de dados
presente no oracle.
Você pode apenas consultar as visualizações e recuperar os detalhes: Por exemplo:
selecione * de DBA_COL_PRIVS;
selecione * de ALL_COL_PRIVS;
selecione * de USER_COL_PRIVS;
Isso diz a você:
A visualização DBA descreve todas as concessões de objetos da coluna no banco de dados. A visualização TODAS descreve todas as concessões de objetos da coluna para as quais o usuário atual ou PUBLIC é o proprietário, concedente ou donatário do objeto. A visualização USER descreve concessões de objetos de coluna para as quais o usuário atual é o proprietário, concedente ou donatário do objeto.
Para mais informações, confira
— Vimalnath
Isso não parece responder à pergunta: como um DBA pode descobrir o que um usuário arbitrário específico pode acessar?