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
.