¿Los roles tienen un dueño en Oracle?

8

Supongamos que he iniciado sesión en la base de datos Oracle usando el usuario X, luego el usuario X crea algunos roles usando el create rolecomando. ¿Quiero saber si el usuario X es el propietario de los roles? ¿Puedo seleccionar todos los roles creados por el usuario X?

rahim asgari
fuente

Respuestas:

4

Los roles en la base de datos Oracle no tienen propietario, así como los directorios no tienen propietario.

Cuando el usuario con CREATE ROLEo SYSDBAprivilegio crea el rol, se le asigna automáticamente ese rol, lo WITH ADMIN OPTIONque significa que el usuario puede posteriormente otorgar ese rol a otros usuarios, incluso si el privilegio CREATE ROLEes revocado por el usuario.

Puede ver qué roles están asignados a qué DBA_ROLE_PRIVSvista de consulta de los usuarios , o USER_ROLE_PRIVSsi desea saber qué roles están asignados al usuario actual.

Además, un usuario no puede crear un rol si el rol con el mismo nombre ya existe. Sin embargo, puede auditar la creación y concesión de roles. Puede hacerlo con la instrucción AUDIT ROLE (si por alguna razón estaba deshabilitada con NOAUDIT ROLE), y luego consultar la DBA_AUDIT_TRAILvista.

Yasir Arsanukaev
fuente
1

Aunque un rol no tiene un propietario, dba_role_privs muestra tanto los usuarios como los roles otorgados a un privilegio.

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

Inner Join a dba_users para ver solo usuarios con opción de administrador en roles.

--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
fuente
0

Si tiene la opción de administrador sobre un rol, puede abandonar ese rol, incluso si no posee el privilegio de abandonar el rol o "posee" el rol, como en, no creó el rol.

Brillar
fuente