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.