Saltar al contenido

¿Cómo mostrar todos los privilegios de un usuario en Oracle?

Si encuentras algún fallo en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

Puede probar estas vistas a continuación.

SELECT * FROM USER_SYS_PRIVS; 
SELECT * FROM USER_TAB_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;

Los DBA y otros usuarios avanzados pueden encontrar los privilegios otorgados a otros usuarios con el DBA_ versiones de estas mismas vistas. Están cubiertos en la documentación.

Esas vistas solo muestran los privilegios otorgados directamente al usuario Hallazgo todos los privilegios, incluidos los otorgados indirectamente a través de roles, requieren declaraciones SQL recursivas más 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;

Hay varios scripts flotando que harán eso dependiendo de qué tan loco quieras volverte. Yo personalmente usaría el script find_all_privs de Pete Finnigan.

Si desea escribirlo usted mismo, la consulta se vuelve bastante desafiante. A los usuarios se les pueden otorgar privilegios del sistema que son visibles en DBA_SYS_PRIVS. Se les pueden otorgar privilegios de objeto que son visibles en DBA_TAB_PRIVS. Y se les pueden otorgar roles que son visibles en DBA_ROLE_PRIVS (Los roles pueden ser predeterminados o no predeterminados y también pueden requerir una contraseña, por lo que el hecho de que a un usuario se le haya otorgado un rol no significa que el usuario necesariamente pueda usar los privilegios que adquirió a través del rol de forma predeterminada). Pero a esos roles se les pueden otorgar, a su vez, privilegios de sistema, privilegios de objeto y roles adicionales que se pueden ver mirando ROLE_SYS_PRIVS, ROLE_TAB_PRIVSy ROLE_ROLE_PRIVS. La secuencia de comandos de Pete recorre esas relaciones para mostrar todos los privilegios que terminan fluyendo hacia un usuario.

Otro recurso útil:

http://psoug.org/reference/roles.html

  • DBA_SYS_PRIVS
  • DBA_TAB_PRIVS
  • DBA_ROLE_PRIVS

Si aceptas, puedes dejar un ensayo acerca de qué le añadirías a este artículo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *