sql >> Base de Datos >  >> RDS >> Oracle

Diferencia entre consulta de privilegios en tablas

Son bastante diferentes, sí.

En Oracle, los privilegios sobre una tabla se pueden otorgar directamente a un usuario (en cuyo caso aparecerán en ALL_TAB_PRIVS ) o se pueden otorgar privilegios a un rol (visible en ROLE_TAB_PRIVS ) y ese rol se puede otorgar a un usuario (visible en USER_ROLE_PRIVS ). La primera consulta le mostrará los usuarios que tienen subvenciones directas en una tabla. La segunda consulta le mostrará los usuarios a los que se les ha otorgado un rol y se les ha otorgado acceso a la tabla (tenga en cuenta que en ambos casos realmente debe especificar un OWNER además del nombre de la tabla). Tampoco le mostrará información sobre las concesiones que se han realizado a través de múltiples niveles anidados de roles (es decir, al usuario A se le ha otorgado el Rol 1, al Rol 1 se le ha otorgado el Rol 2, al Rol 2 se le ha otorgado acceso a una tabla). Las concesiones realizadas a través de roles también pueden ser un poco complicadas porque hay roles predeterminados y no predeterminados y roles protegidos por contraseña y los roles se pueden habilitar y deshabilitar en una sesión.

En general, sugeriría echar un vistazo a los scripts disponibles en el sitio de Pete Finnigan si quieres tener algo que cubra todos los casos posibles. En este caso, probablemente quieras usar su who_can_access script para determinar qué usuarios pueden acceder a una tabla en particular.