Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: otorgar/revocar privilegios
Este tutorial de Oracle describe cómo Otorgar y revocar permisos Sintaxis y ejemplos en Oracle.
describir
Puede otorgar y revocar permisos en varios objetos de base de datos en Oracle. Primero veremos cómo otorgar y revocar permisos en tablas y luego veremos cómo otorgar y revocar permisos en funciones y procedimientos en Oracle.
Otorgar permisos en la tabla
Puede otorgar a los usuarios varios permisos en las tablas. Estos permisos pueden ser cualquier combinación de SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, REFERENCIAS, ALTERAR, ÍNDICE o TODO.
sintaxis
La sintaxis para otorgar permisos de tabla en Oracle es:
GRANT privileges ON object TO user;
privilegio
Permiso para ceder. Puede ser cualquiera de los siguientes valores:
privilegio | describir |
---|---|
escoger | Capacidad para ejecutar sentencias SELECT en tablas. |
insertar | Capacidad para ejecutar instrucciones INSERT en tablas. |
renovar | Capacidad para ejecutar instrucciones UPDATE en tablas. |
Eliminar | Capacidad para ejecutar sentencias DELETE en tablas. |
Referirse a | Capacidad para crear tablas de referencia de restricciones. |
Cambio | Capacidad para ejecutar instrucciones ALTER TABLE para modificar las definiciones de la tabla. |
índice | Se puede crear un índice en una tabla mediante la declaración de creación de índice. |
todo | Todos los privilegios en la mesa. |
objeto El nombre del objeto de la base de datos para el que otorga permisos. En el caso de permisos de tabla otorgados, este será el nombre de la tabla. usuario El nombre del usuario al que se le otorgarán estos permisos.
ejemplo
Veamos algunos ejemplos de cómo otorgar permisos de tabla en Oracle.
Por ejemplo, si quisiera otorgar permisos SELECCIONAR, INSERTAR, ACTUALIZAR y ELIMINAR en una tabla llamada proveedor al nombre de usuario smithj, ejecutaría la siguiente instrucción GRANT:
GRANT SELECT, INSERT, UPDATE, DELETE ON suppliers TO smithj;
También puede usar la palabra clave ALL para indicar que desea otorgar TODOS los permisos a un usuario llamado smithj. Por ejemplo:
GRANT ALL ON suppliers TO smithj;
Si solo desea otorgar a todos los usuarios acceso SELECT a la tabla, puede otorgar permiso a la palabra clave pública. Por ejemplo:
GRANT SELECT ON suppliers TO public;
Revocar privilegios en las tablas
Después de otorgar privilegios, es posible que deba revocar algunos o todos esos privilegios. Para hacer esto, puede ejecutar el comando deshacer. Puede deshacer cualquier combinación de SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, REFERENCIAS, ALTERAR, ÍNDICE o TODO.
sintaxis
La sintaxis para revocar permisos en una tabla en Oracle es:
REVOKE privileges ON object FROM user;
privilegio
Permisos revocados. Puede ser cualquiera de los siguientes valores:
privilegio | describir |
---|---|
escoger | Capacidad para ejecutar sentencias SELECT en tablas. |
insertar | Capacidad para ejecutar instrucciones INSERT en tablas. |
renovar | Capacidad para ejecutar instrucciones UPDATE en tablas. |
Eliminar | Capacidad para ejecutar sentencias DELETE en tablas. |
Referirse a | Capacidad para crear tablas de referencia de restricciones. |
Cambio | Capacidad para ejecutar instrucciones ALTER TABLE para modificar las definiciones de la tabla. |
índice | Se puede crear un índice en una tabla mediante la declaración de creación de índice. |
todo | Todos los privilegios en la mesa. |
objeto El nombre del objeto de la base de datos cuyos permisos desea revocar. En el caso de revocar permisos sobre una tabla, este será el nombre de la tabla. usuario El nombre del usuario cuyos permisos serán revocados.
ejemplo
Veamos algunos ejemplos de cómo revocar permisos de tablas en Oracle.
Por ejemplo, si quisiera revocar los permisos DELETE en una tabla llamada proveedores de un usuario llamado anderson, ejecutaría la siguiente instrucción REVOKE:
REVOKE DELETE ON suppliers FROM anderson;
Si desea revocar todos los permisos en la tabla de un usuario llamado anderson, puede usar la palabra clave ALL de la siguiente manera:
REVOKE ALL ON suppliers FROM anderson;
Si ha otorgado TODOS los permisos al público (todos los usuarios) en la tabla de proveedores y desea revocar esos permisos, puede ejecutar la siguiente instrucción REVOKE:
REVOKE ALL ON suppliers FROM public;
Otorgar privilegios de funciones/programas
Al trabajar con funciones y procedimientos, puede otorgar a los usuarios la capacidad de ejecutar esas funciones y procedimientos.
sintaxis
La sintaxis para otorgar permiso EXECUTE a una función/procedimiento en Oracle es:
GRANT EXECUTE ON object TO user;
EJECUTAR La capacidad de compilar funciones/procedimientos. La capacidad de ejecutar directamente una función/proceso. objeto El nombre del objeto de la base de datos para el que otorga permisos. En el caso de permiso EXECUTE otorgado a una función o procedimiento, este será el nombre de la función o nombre del procedimiento. usuario El nombre del usuario al que se le otorgará el privilegio EXECUTE.
ejemplo
Veamos algunos ejemplos de cómo otorgar permiso EXECUTE a una función o procedimiento en Oracle.
Por ejemplo, si tuviera una función llamada Find_Value y quisiera otorgar acceso EXECUTE a un usuario llamado smithj, ejecutaría la siguiente instrucción GRANT:
GRANT EXECUTE ON Find_Value TO smithj;
Si quisiera otorgar a todos los usuarios la capacidad de realizar esta función, ejecutaría la siguiente instrucción GRANT:
GRANT EXECUTE ON Find_Value TO public;
Revocar privilegios de funciones/programas
Después de otorgar permisos de EJECUCIÓN en una función o procedimiento, es posible que deba revocar esos permisos del usuario. Para hacer esto, puede ejecutar el comando REVOKE.
sintaxis
La sintaxis para revocar permisos sobre una función o procedimiento en Oracle es:
REVOKE EXECUTE ON object FROM user;
EJECUTAR La capacidad de compilar funciones/procedimientos. La capacidad de ejecutar directamente una función/proceso. objeto El nombre del objeto de la base de datos cuyos permisos desea revocar. En el caso de revocar el permiso EXECUTE sobre una función o procedimiento, éste será el nombre de la función o nombre del procedimiento. usuario El nombre del usuario cuyo privilegio EXECUTE será revocado.
ejemplo
Veamos algunos ejemplos sobre cómo revocar los privilegios EXECUTE en una función o procedimiento en Oracle.
Si quisiera revocar el permiso EXECUTE en la función Find_Value de un usuario llamado anderson, ejecutaría la siguiente instrucción REVOKE:
REVOKE execute ON Find_Value FROM anderson;
Si ha otorgado permisos EXECUTE al público (todos los usuarios) para una función denominada Find_Value y desea revocar esos permisos EXECUTE, puede ejecutar la siguiente instrucción REVOKE:
REVOKE EXECUTE ON Find_Value FROM public;