Oracle

¿Cómo revocar permisos en Oracle con REVOKE? Tutorial y ejemplos

En este tutorial te explicaremos cómo utilizar la declaración REVOKE en Oracle para revocar privilegios del sistema y de objetos de un usuario específico. La declaración REVOKE es una herramienta poderosa que te permitirá eliminar los privilegios concedidos previamente a un usuario o a un objeto en particular. Si necesitas restringir o modificar los permisos de un usuario en tu base de datos Oracle, esta guía te ayudará a lograrlo de manera efectiva.

¿Qué es la declaración REVOKE en Oracle?

La declaración REVOKE en Oracle es un comando utilizado para revocar (eliminar) los privilegios otorgados previamente a un usuario o a un objeto en la base de datos. Puede ser utilizada para revocar tanto privilegios del sistema como privilegios de objetos.

Con la declaración REVOKE, puedes restablecer o modificar los permisos que hayas otorgado previamente a un usuario específico. Estos permisos pueden ser privilegios del sistema, como la capacidad de crear tablas o ejecutar procedimientos, o privilegios de objetos, como SELECT o INSERT en una tabla específica.

Es importante tener en cuenta que la declaración REVOKE solo puede revocar los privilegios otorgados directamente mediante una declaración GRANT. No se pueden revocar los privilegios otorgados a través del sistema operativo o mediante roles.

En general, la declaración REVOKE es una herramienta esencial para administrar los permisos y mantener un control adecuado sobre quién tiene acceso y qué tipo de acceso tiene en tu base de datos Oracle.

¿Cómo revocar privilegios del sistema con REVOKE?

Para revoke privilegios del sistema utilizando la declaración REVOKE en Oracle, debes seguir estos pasos:

  1. Verifica que tienes los privilegios necesarios: Para revocar un privilegio del sistema, debes haberlo otorgado previamente con la opción WITH ADMIN OPTION al usuario al que deseas revocárselo. Si no tienes los privilegios adecuados, deberás solicitarlos al administrador de la base de datos.
  2. Abre un cliente de Oracle o una ventana de comandos SQL y conéctate a la base de datos en la que deseas realizar la operación.
  3. Ejecuta la siguiente sintaxis:
REVOKE privilege_name
FROM user_name;

En este caso, reemplaza privilege_name con el nombre del privilegio del sistema que deseas revocar, y user_name con el nombre del usuario al que deseas revocarle dicho privilegio.

Recomendado:  ¿Cómo eliminar índices en Oracle: Ejemplos prácticos?

Por ejemplo, si deseas revocar el privilegio de crear tablas (CREATE TABLE) para el usuario «bob», deberías ejecutar:

REVOKE CREATE TABLE
FROM bob;

Una vez que se ejecute la declaración REVOKE, el usuario «bob» ya no tendrá el privilegio de crear tablas en la base de datos.

Es importante destacar que solo puedes revocar los privilegios del sistema que hayas otorgado previamente utilizando la declaración GRANT con la opción WITH ADMIN OPTION.

¿Cómo revocar privilegios de objetos con REVOKE?

Para revocar privilegios de objetos utilizando la declaración REVOKE en Oracle, debes seguir estos pasos:

  1. Verifica que tienes los privilegios necesarios: Para revocar un privilegio de objeto, debes haberlo otorgado previamente al usuario o tener el privilegio del sistema GRANT ANY OBJECT PRIVILEGE. Si no tienes los privilegios adecuados, deberás solicitarlos al administrador de la base de datos.
  2. Abre un cliente de Oracle o una ventana de comandos SQL y conéctate a la base de datos en la que deseas realizar la operación.
  3. Ejecuta la siguiente sintaxis:
REVOKE privilege_name
ON object_name
FROM user_name;

En este caso, reemplaza privilege_name con el nombre del privilegio de objeto que deseas revocar, object_name con el nombre del objeto al que se le otorgó el privilegio y user_name con el nombre del usuario al que deseas revocarle dicho privilegio.

Por ejemplo, si deseas revocar el privilegio de SELECT en la tabla «employees» para el usuario «bob», deberías ejecutar:

REVOKE SELECT
ON employees
FROM bob;

Una vez que se ejecute la declaración REVOKE, el usuario «bob» ya no tendrá el privilegio de SELECT en la tabla «employees».

Recomendado:  Understanding Oracle Joins: Types and Examples Explained

Recuerda que solo puedes revocar los privilegios de objetos que hayas otorgado previamente mediante una declaración GRANT o si tienes el privilegio del sistema GRANT ANY OBJECT PRIVILEGE.

Limitaciones de la declaración REVOKE

La declaración REVOKE en Oracle tiene algunas limitaciones que es importante tener en cuenta:

  1. Solo puede revocar privilegios otorgados directamente con una declaración GRANT: La declaración REVOKE no puede revocar privilegios otorgados a través del sistema operativo o a través de roles. Solo puedes revocar los privilegios que hayas otorgado explícitamente utilizando la sintaxis GRANT.
  2. Requiere privilegios adecuados: Para ejecutar la declaración REVOKE, debes tener los privilegios necesarios. Para revocar un privilegio del sistema, debes haberlo otorgado previamente con la opción WITH ADMIN OPTION al usuario. Para revocar un privilegio de objeto, debes haberlo otorgado previamente o tener el privilegio del sistema GRANT ANY OBJECT PRIVILEGE. En caso de no tener los privilegios adecuados, deberás solicitarlos al administrador de la base de datos.

A pesar de estas limitaciones, la declaración REVOKE sigue siendo una herramienta poderosa para administrar los privilegios en Oracle y permite revocar de manera efectiva los permisos concedidos previamente a usuarios o objetos.

Revocar todos los privilegios de un usuario

Si deseas revocar todos los privilegios del sistema de un usuario en Oracle, puedes utilizar la declaración REVOKE ALL PRIVILEGES FROM user. Este comando te permitirá eliminar todos los privilegios otorgados a un usuario, tanto privilegios del sistema como privilegios de objeto.

A continuación, te mostraremos cómo utilizar esta declaración paso a paso:

  1. Abre un cliente de Oracle o una ventana de comandos SQL y conéctate a la base de datos en la que deseas realizar la operación.
  2. Ejecuta la siguiente sintaxis:
REVOKE ALL PRIVILEGES FROM user;

En este caso, reemplaza user con el nombre del usuario al que deseas revocar todos los privilegios.

Por ejemplo, si deseas revocar todos los privilegios del usuario «bob», deberías ejecutar:

REVOKE ALL PRIVILEGES FROM bob;

Una vez que se ejecute la declaración, se revocarán todos los privilegios del usuario «bob», tanto privilegios del sistema como privilegios de objeto. Esto incluirá cualquier privilegio otorgado previamente mediante una declaración GRANT.

Recomendado:  ¿Cómo utilizar Oracle ALTER USER Profile y Statement?

Es importante tener en cuenta que esta declaración debe utilizarse con precaución, ya que revocará todos los privilegios del usuario y no se pueden deshacer los cambios una vez ejecutada.

Recuerda que para utilizar esta declaración, debes tener los privilegios adecuados para revocar los privilegios otorgados al usuario.

Ejemplo paso a paso: revocar privilegios a un usuario llamado bob

A continuación, te presentaré un ejemplo paso a paso de cómo utilizar la declaración REVOKE para revocar privilegios del sistema y de objetos a un usuario llamado «bob» en Oracle:

  1. Abre un cliente de Oracle o una ventana de comandos SQL y conéctate a la base de datos en la que deseas realizar la operación.
  2. Verifica que tienes los privilegios necesarios para ejecutar la declaración REVOKE.
  3. Consulta los privilegios actuales de «bob»:
SELECT * FROM USER_SYS_PRIVS WHERE GRANTEE = 'BOB';
SELECT * FROM USER_TAB_PRIVS WHERE GRANTEE = 'BOB';

Estas consultas te mostrarán los privilegios del sistema y de objetos que han sido otorgados previamente a «bob».

  1. Decide qué privilegios deseas revocar a «bob» y anota sus nombres. Pueden ser privilegios del sistema, como «CREATE TABLE» o «SELECT ANY TABLE», o privilegios de objetos, como «INSERT» o «DELETE» en tablas específicas.
  2. Ejecuta la declaración REVOKE para cada uno de los privilegios que deseas revocar:
REVOKE privilege_name
FROM bob;

Reemplaza privilege_name con el nombre del privilegio que deseas revocar. Puedes utilizar varias declaraciones REVOKE para revocar múltiples privilegios.

  1. Verifica que los privilegios han sido revocados:
SELECT * FROM USER_SYS_PRIVS WHERE GRANTEE = 'BOB';
SELECT * FROM USER_TAB_PRIVS WHERE GRANTEE = 'BOB';

Estas consultas mostrarán los privilegios actuales de «bob» después de haber ejecutado las declaraciones REVOKE. Los privilegios revocados ya no deberían aparecer en los resultados.

Recuerda que los privilegios revocados no se pueden recuperar fácilmente, así que asegúrate de estar seguro de los privilegios que deseas eliminar antes de ejecutar la declaración REVOKE.

Este ejemplo te muestra cómo utilizar la declaración REVOKE paso a paso para revocar privilegios del sistema y de objetos a un usuario específico en Oracle. Siguiendo estos pasos, podrás controlar los permisos y mantener la seguridad en tu base de datos.

Autor

osceda@hotmail.com

Deja un comentario

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