Os papéis têm um proprietário no oracle?

8

Suponha que eu tenha efetuado login no banco de dados oracle usando o usuário X e, em seguida, o usuário X crie algumas funções usando o create rolecomando Quero saber que o usuário X é o proprietário das funções? Posso selecionar todas as funções criadas pelo usuário X?

rahim asgari
fonte

Respostas:

4

As funções no Oracle Database não têm proprietário, assim como os diretórios não têm proprietário.

Quando o usuário com CREATE ROLEou SYSDBAprivilégio cria a função, ele recebe automaticamente essa função, o WITH ADMIN OPTIONque significa que o usuário pode conceder essa função posteriormente a outros usuários, mesmo que o privilégio CREATE ROLEseja revogado.

Você pode ver quais funções estão atribuídas a quais usuários consultando a DBA_ROLE_PRIVSexibição ou USER_ROLE_PRIVSse deseja saber quais funções estão atribuídas ao usuário atual.

Além disso, um usuário não pode criar uma função se a função com o mesmo nome já existir. No entanto, você pode auditar a criação e concessão de funções. Você pode fazer isso com a instrução AUDIT ROLE (se por algum motivo tiver sido desativada NOAUDIT ROLE) e, em seguida, consultando a DBA_AUDIT_TRAILexibição.

Yasir Arsanukaev
fonte
1

Embora uma função não tenha um proprietário, dba_role_privs mostra usuários e funções concedidos a um privilégio.

--This lists both users and roles
SELECT * FROM dba_role_privs
WHERE admin_option = 'YES'
order by grantee, granted_role;

Participe do dba_users para ver apenas os usuários com a opção de administrador nas funções.

--This lists only users with admin option on roles
SELECT rp.grantee, rp.granted_role, rp.admin_option
FROM dba_role_privs rp
JOIN dba_users u
  ON rp.grantee = u.username
WHERE admin_option = 'YES'
ORDER BY grantee, granted_role;
ExcessOperatorHeadspace
fonte
0

Se você tiver a opção de administrador sobre uma função, poderá abandoná-la, mesmo que não possua o privilégio de descartar ou "seja o proprietário" da função, como em, não a criou.

Brilhar
fonte