Sentencias GRANT y REVOKE en Transact SQL
Dentro de SQL, DCL (Data Control Language) es el lenguaje encargado de administrar el acceso a base de datos y sus contenidos, a través y principalmente de las sentencias GRANT (para otorgar permisos y privilegios de acceso a los usuarios) y REVOKE (para eliminar los privilegios existentes)
DCL, permite crear y eliminar roles, permisos e integridad referencial para controlar y administrar los diferentes usuarios de acceso a base de datos.
GRANT
La instrucción GRANT permite otorgar permisos o privilegios sobre un securable a un principal.
-
securable: recurso al que el sistema de autorización de SQL Server regula el acceso. Por ejemplo, una base de datos, una tabla, un procedimiento almacenado…
-
principal: entidad que puede solicitar el recurso de SQL Server. Por ejemplo, un usuario.
-
permisos: Restricciones de un principal (usuario) sobre un securable (función, tabla, procedimiento…)
La sintaxis básica de la instrucción GRANT es la siguiente:
GRANT permisos
ON securable
TO principal;
Para ejemplificar el funcionamiento de la sentencia GRANT, vamos a crear un nuevo usuario sobre el que otorgar permisos:
CREATE USER Rebeca
FOR LOGIN Rebeca;
Una vez creado el nuevo usuario: Rebeca, vamos a otorgarle los siguientes permisos:
GRANT SELECT
ON Clientes
TO Rebeca;
GRANT SELECT, INSERT, UPDATE, DELETE
ON Empleados
TO Rebeca;
De esta manera al usuario Rebeca le estamos concediendo permisos de solo lectura (Ejecutar SELECT) sobre la tabla Clientes, mientras que sobre la tabla Empleados, le estamos concediendo privilegios de lectura y escritura para poder consultar registros, insertar nuevos, modificarlos y/o eliminarlos.
REVOKE
La instrucción REVOKE permite eliminar o revocar permisos o privilegios otorgados anteriormente en un securable para un principal.
REVOKE se utilizará a menudo, para eliminar y restringir privilegios de ciertas operaciones para usuarios específicos
La sintaxis básica de la instrucción REVOKE es la siguiente:
REVOKE permisos
ON securable
FROM principal;
Para ejemplificar el funcionamiento de la instrucción REVOKE, vamos a eliminar los permisos otorgados al usuario recién creado: Rebeca, sobre las tablas: Clientes y Empleados
REVOKE SELECT
ON Clientes
TO Rebeca;
REVOKE ALL
ON Empleados
TO Rebeca;
Es posible también eliminar permisos parcialmente. Por ejemplo, podríamos haber eliminado únicamente los permisos de manipulación de datos sobre la tabla Empleados;
REVOKE INSERT, UPDATE, DELETE
ON Empleados
TO Rebeca;
De esta manera el usuario Rebeca podría seguir ejerciendo consultas sobre la tabla Empleados.