Blog de Analytics y Gestión de Datos

22/05/2025 | Ing. Fabiana Sasia

🛡️ Grant, Revoke y Deny en SQL Server: La Base de una Seguridad Robusta

 

Cuando hablamos de seguridad en bases de datos, muchos piensan en firewalls, cifrado o redes. Pero en el corazón de SQL Server, uno de los componentes más críticos —y muchas veces mal entendidos— es el sistema de permisos. Este artículo explora cómo, cuándo y por qué utilizar las sentencias GRANT, REVOKE y DENY, explica las dependencias entre objetos como vistas y procedimientos, y plantea los riesgos reales de no implementar estas prácticas correctamente.

🚨 Riesgos Reales de una Mala Administración de Permisos

En el entorno actual, donde los datos son el activo más crítico de cualquier organización, la seguridad de las bases de datos no puede dejarse en manos de suposiciones o buenas intenciones. Las consecuencias de una gestión inadecuada de permisos en SQL Server son severas:

  • Fugas de información sensible.
  • Errores en vistas o procedimientos almacenados.
  • Dificultad para auditar accesos y responsabilidades.
  • Incumplimiento de normativas como GDPR, ISO 27001 o SOX.
  • Riesgo reputacional y legal.

Una política de permisos mal definida puede exponer a la compañía no solo a amenazas externas, sino también a vulnerabilidades internas. La seguridad no debe recaer exclusivamente en capas de aplicación o en firewalls: el control granular en la base de datos es esencial.

 

📣 Administre Correctamente los Permisos: No Es Opcional, Es Estratégico

Los permisos en SQL Server deben ser gestionados desde una perspectiva centralizada, metódica y trazable. No basta con que los desarrolladores o las aplicaciones controlen el acceso. La administración eficaz implica:

  • Uso del principio de mínimo privilegio.
  • Aplicación consciente de GRANT, REVOKE y DENY.
  • Documentación continua y auditoría de accesos.
  • Comprensión clara de las dependencias entre objetos.
  • Alineación con políticas de seguridad corporativas.

Si su equipo no tiene visibilidad completa del mapa de permisos y roles, su empresa está asumiendo riesgos innecesarios.

 

🏗 Sentencias en SQL Server

SQL Server proporciona un sistema de seguridad robusto, pero la herramienta más poderosa para controlar quién puede hacer qué en una base de datos está en manos del DBA: el manejo de permisos.

Las sentencias GRANT, REVOKE y DENY permiten aplicar el principio de mínimo privilegio, clave para una arquitectura segura. No se trata solo de controlar accesos, sino de tener trazabilidad, evitar errores lógicos y cumplir normativas legales.

El principio de mínimo privilegio consiste en otorgar a cada usuario, proceso, cuenta de servicio o aplicación únicamente los permisos necesarios para cumplir su función y nada más. Este previene que se cometan errores humanos, minimiza el impacto de ataques y facilita las auditorías.

✅¿Qué es GRANT y cuándo usarlo?

La sentencia GRANT permite otorgar a un usuario o rol permisos para realizar una acción específica sobre un objeto, como una tabla, vista, función o procedimiento.

Ejemplo:

🧠 ¿Qué métricas son clave para analizar?

¿Cuándo usarlo?
Cuando se necesita conceder permisos específicos de manera explícita.

Cuando se gestionan accesos desde roles y no desde la aplicación.

¿Por qué es importante?
Permite definir accesos de forma clara y segmentada, reduciendo la exposición de los datos.

🔄 ¿Qué es REVOKE?

REVOKE elimina un permiso otorgado previamente, pero no bloquea el acceso si este se hereda por otro medio (como un rol).

Ejemplo:

¿Cuándo usarlo?
Para retirar un permiso directo sin afectar permisos heredados.

Cuando se hace una revisión de accesos y se limpia el exceso de privilegios.

🚫 ¿Qué es DENY?

DENY prohíbe el acceso a una acción sobre un objeto, incluso si el permiso fue heredado. Es una forma explícita de bloquear acciones, con mayor prioridad que GRANT.
Ejemplo:

¿Cuándo usarlo?
Cuando se quiere prevenir terminantemente una acción.

Para evitar errores en entornos compartidos con múltiples roles.

🔗 Permisos y dependencia entre objetos
Un error común entre administradores de bases de datos es asumir que SQL Server requiere permisos directos sobre las tablas subyacentes para acceder a una vista. En realidad, si el usuario tiene permiso de acceso a la vista, y todos los objetos involucrados comparten el mismo propietario (por ejemplo, dbo), SQL Server permitirá el acceso a los datos a través de la vista, incluso sin permisos directos sobre las tablas. Este comportamiento se debe a una característica llamada ownership chaining.

🧩 Ejemplo práctico:

Si se otorga permiso SELECT sobre la vista vw_Empleados, y esta consulta datos de la tabla Empleados, el usuario podrá acceder a los datos de la tabla mientras la cadena de propiedad no se rompa. No es necesario otorgar permisos explícitos sobre Empleados si ambas (vw_Empleados y Empleados) tienen el mismo propietario.

🔁 Procedimientos almacenados y Ownership Chaining

Una excepción importante se da con los procedimientos almacenados. Si todos los objetos involucrados tienen el mismo propietario (por ejemplo dbo), SQL Server omite la comprobación de permisos intermedios. Esto se llama ownership chaining.
🧪 Ejemplo:

En este caso, aunque el usuario no tenga SELECT sobre la tabla, podrá ejecutar el procedimiento sin errores. Esto simplifica la seguridad, pero requiere diseño cuidadoso para evitar fugas de información.

⚠️ ¿Por qué se implementan mal estas sentencias?

Aunque fundamentales, muchas organizaciones no aplican correctamente GRANT, REVOKE y DENY, por causas como:
🔹 Desconocimiento técnico: muchos administradores no dominan su sintaxis ni sus implicancias.

🔹 Desinterés o delegación: se deja el control de seguridad a nivel de aplicación, ignorando la capa de datos.

🔹 Complejidad: en bases con miles de objetos, gestionar permisos sin herramientas se vuelve inviable.

🔹 Ausencia de auditoría: no se documentan los cambios ni se revisan accesos.

📣 ¡Administra correctamente los permisos!

El correcto uso de GRANT, REVOKE y DENY no es una opción: es una responsabilidad crítica del DBA. No confiar en que la aplicación lo maneje todo. Documentar accesos, aplicar roles, auditar permisos y entender la cadena de dependencias es esencial para proteger los activos más valiosos de tu empresa: los datos.
Si necesitas ayuda para gestionar los permisos en tu servidor, no dudes en escribirnos a info@dba24.com.