Gestión de permisos
La gestión de permisos se lleva a cabo a través de los comandos GRANT y REVOKE. Antes de estudiar dichos comandos hay que explicar los conceptos básicos de los permisos:
Privilegios
Los privilegios son permisos que se otorgan a los usuarios para realizar operaciones específicas en las bases de datos, tablas o incluso columnas individuales. Los privilegios que se pueden otorgar o revocar a los usuarios son :
SELECT: Permite al usuario seleccionar datos de una tabla o vista. Este privilegio permite leer datos, pero no modificarlos.
INSERT: Permite al usuario insertar nuevos registros en una tabla.
UPDATE: Permite al usuario modificar registros existentes en una tabla.
DELETE: Permite al usuario eliminar registros de una tabla.
CREATE: Permite al usuario crear nuevas tablas, vistas, índices u otros objetos en una base de datos.
DROP: Permite al usuario eliminar tablas, vistas, índices u otros objetos de una base de datos.
ALTER: Permite al usuario modificar la estructura de una tabla existente, como agregar, eliminar o modificar columnas.
GRANT OPTION: Permite al usuario otorgar o revocar los privilegios que él mismo posee a otros usuarios.
REFERENCES: Permite al usuario crear una clave externa que haga referencia a una tabla en otra base de datos.
INDEX: Permite al usuario crear índices en una tabla.
ALL PRIVILEGES: Concede todos los privilegios disponibles en una base de datos o tabla.
Objeto
Identifica el objeto sobre el que se están otorgando o revocando los privilegios. Puede ser una base de datos, una tabla, una columna o un conjunto de ellos.
Es posible seleccionar todas las tablas de una base de datos usando el comodín *
sakila.*Es posible seleccionar todas las tablas de un schema usando la palabra reservada DATABASE
ON ALL TABLES IN SCHEMA sakilaUsuario o rol
Especifica a qué usuario o rol se están otorgando o revocando los privilegios.
GRANT
El comando GRANT se utiliza para otorgar privilegios a un usuario en una base de datos, tabla o columna específica. La sintaxis básica del comando GRANT es la siguiente:
GRANT privilegio1. privilegio2 ON base_de_datos.tabla1 TO <usuario>;Por ejemplo, si quisiera permitir al usuario employee que pueda leer los datos de la tabla actor de sakila, ejecutaría
GRANT SELECT ON sakila.actor TO 'employee';En PostgreSQL, además de los permisos específicos que se dan sobre las tablas de los esquemas, es necesario dar un permiso especial de uso sobre el schema. Sin este permiso, el usuario no podrá acceder a las tablas del esquema, aunque tenga permisos sobre ellas.
-- Damos permiso para usar sakila
GRANT USAGE ON SCHEMA sakila TO employee;
-- Damos permiso para leer todas las tablas de sakila
GRANT SELECT ON ALL TABLES IN SCHEMA sakila TO employee;Si queremos dar permisos en todas las tablas de una base de datos
GRANT SELECT ON sakila.* TO 'employee';GRANT SELECT ON ALL TABLES IN SCHEMA sakila TO employee;REVOKE
El comando REVOKE se utiliza para revocar los privilegios previamente otorgados a un usuario en una base de datos, tabla o columna específica. La sintaxis básica del comando REVOKE es la siguiente:
REVOKE privilegios ON base_de_datos.tabla FROM <usuario>;Por ejemplo, si quisiera revocar los privilegios al usuario employee de forma que no pueda leer los datos de ninguna las tablas de Sakila ejecutaría
REVOKE SELECT ON sakila.actor FROM 'employee';REVOKE SELECT ON sakila.actor FROM employee;FLUSH (MySQL)
Después de otorgar o revocar privilegios, es necesario recargarlos para que tengan efecto usando el comando FLUSH
FLUSH PRIVILEGES;Last updated