Para revocar privilegios de tipo OBJECT que han sido otorgados con la opción GRANT OPTION en Oracle, puedes utilizar el comando REVOKE. La opción GRANT OPTION permite a un usuario que recibe un privilegio poder, a su vez, otorgar ese privilegio a otros usuarios. Cuando revocas un privilegio que fue otorgado con esta opción, el usuario pierde tanto el privilegio como la capacidad de otorgarlo a otros.
Sintaxis para Revocar Privilegios de Tipo OBJECT
La sintaxis básica para revocar un privilegio de objeto es:
REVOKE privilegio ON objeto FROM usuario;
Ejemplo de como revocar privilegios
Supongamos que tienes un usuario llamado nuevo_usuario al que se le otorgó el privilegio SELECT sobre una tabla llamada tabla_ejemplo, con la opción de GRANT OPTION. Para revocar este privilegio, seguirías estos pasos:
- Conectar a la base de datos: Asegúrate de conectarte como un usuario que tenga los permisos necesarios (por ejemplo,
SYSo el propietario del objeto).
sqlplus / as sysdba
Revocar el privilegio:
REVOKE SELECT ON tabla_ejemplo FROM nuevo_usuario;
Efecto de la Revocación
- Eliminación del Privilegio: Después de revocar
SELECTdenuevo_usuario, este usuario ya no podrá seleccionar datos detabla_ejemplo. - Eliminación de la Opción de Otorgar: También perderá la capacidad de otorgar el privilegio
SELECTa otros usuarios.
Ejemplo
Otorgar el privilegio con GRANT OPTION:
GRANT SELECT ON tabla_ejemplo TO nuevo_usuario WITH GRANT OPTION;
Revocar el privilegio:
REVOKE SELECT ON tabla_ejemplo FROM nuevo_usuario;
Consideraciones
- Siempre es buena práctica verificar qué privilegios tiene un usuario antes de revocarlos, para no afectar la funcionalidad necesaria. Puedes hacer esto consultando la vista
USER_TAB_PRIVSoALL_TAB_PRIVS. - Al revocar un privilegio, asegúrate de comunicar con otros usuarios que puedan haber estado utilizando ese privilegio a través del usuario al que se le revocó.
- Cuando revocas privilegios de objetos en Oracle 19c (o en otras versiones de Oracle), es importante entender cómo funciona el efecto en cascada, especialmente si esos privilegios han sido otorgados con la opción
GRANT OPTION.
Aquí te explico cómo se comportan estos revocaciones y qué implicaciones pueden tener.
Efecto en Cascada al Revocar Privilegios de Objetos
- Revocación Directa:
- Cuando revocas un privilegio directamente de un usuario, dicho usuario pierde ese privilegio sobre el objeto específico.
- Si el privilegio fue otorgado con
GRANT OPTION, el usuario también pierde la capacidad de otorgar ese privilegio a otros usuarios.
- Implica Revocación de Privilegios Adicionales:
- Si el usuario al que se le revoca un privilegio anteriormente otorgó ese privilegio a otros usuarios (debido a la opción
GRANT OPTION), la revocación de privilegio no se aplica automáticamente a esos usuarios. Sin embargo, el usuario que recibió el privilegio a su vez seguirá teniendo acceso a ese objeto, pero ya no podrá tener la certeza de que ese privilegio se mantenga (en caso de que haya una cadena de otorgaciones). - Por ejemplo, si
UsuarioAotorgaSELECTentabla_ejemploaUsuarioBconGRANT OPTION, y luegoUsuarioApierde el privilegio (es revocado),UsuarioBtodavía puede seguir utilizandoSELECTen latabla_ejemplohasta que alguien le revoque el privilegio aUsuarioB.
- Si el usuario al que se le revoca un privilegio anteriormente otorgó ese privilegio a otros usuarios (debido a la opción
- Revocaciones de Privilegios en Cascada:
- No ocurre automáticamente: Si
UsuarioAtiene derechos sobre el objeto y se los revoca, no se revocan automáticamente los derechos de cualquier usuario adicional queUsuarioAhaya otorgado. Tendrás que revocar manualmente esos derechos adicionales si es necesario.
- No ocurre automáticamente: Si
Ejemplo
Supongamos que tienes los siguientes usuarios y privilegios:
UsuarioAotorgaSELECTentabla_ejemploaUsuarioBconGRANT OPTION.UsuarioBotorgaSELECTentabla_ejemploaUsuarioCconGRANT OPTION.
Si luego decides revocar el privilegio de SELECT de UsuarioA:
REVOKE SELECT ON tabla_ejemplo FROM UsuarioA;
- Efectos:
UsuarioAno podrá seleccionar datos detabla_ejemplo.UsuarioBseguirá teniendo el privilegioSELECTsobretabla_ejemplo.UsuarioCtambién podrá seguir utilizandoSELECTentabla_ejemplo, porque los privilegios no se revocan automáticamente en cascada.
Consideraciones
- Gestión Manual de Privilegios: Como administrador de la base de datos, es crucial que tengas un control y registro de los privilegios que han sido otorgados, ya que revocar derechos de acceso a un usuario no garantiza que los usuarios «hijos» (que han recibido esos privilegios posteriormente) también los perderán.
- Auditoría y Limpiado de Privilegios: Es aconsejable realizar auditorías periódicas de privilegios y revocar aquellos que ya no son necesarios, para asegurar la seguridad y la integridad de la base de datos.






Deja un comentario