Extracción de las Vistas en SQL Server

Extracción de las Vistas en SQL Server

Extracción de Vistas en SQL Server, la administración de bases de datos no es solo cuestión de almacenar y recuperar datos de manera eficiente. También es fundamental garantizar que la información esté protegida y que solo las personas autorizadas puedan acceder a ella. Una de las formas más efectivas de controlar el acceso es a través de la gestión de vistas y el uso de comandos GRANT en SQL Server. En este artículo, exploraremos cómo extraer vistas y conceder permisos de manera segura y eficiente.

¿Qué es una Vista en SQL Server?

Una vista es una consulta almacenada que proporciona una manera de ver y trabajar con los datos sin necesidad de interactuar directamente con las tablas subyacentes. Las vistas pueden simplificar las consultas complejas, proteger la información sensible y facilitar la administración de permisos.

Ejemplo de una Vista

Imaginemos que tenemos una tabla llamada empleados con las columnas nombre, salario y departamento. Podemos crear una vista para ver solo los nombres y departamentos de los empleados:

CREATE VIEW vista_empleados
AS
SELECT nombre, departamento
FROM empleados;

Extracción de las Vistas en SQL Server

A medida que nuestra base de datos crece, puede ser necesario listar todas las vistas creadas a partir de una fecha específica. Esto es útil para auditar cambios recientes o para asegurarse de que todas las vistas tengan los permisos adecuados.

Consulta para Extraer Vistas

El siguiente script permite extraer todas las vistas creadas después del 20 de septiembre de 2021, que no son vistas internas de Microsoft, y ordenarlas por fecha de creación de manera descendente:

SELECT *, 'GRANT VIEW DEFINITION ON [' + s.name + '].[' + o.name + '] TO [db_view]'
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE type = 'V' -- objeto vista
AND create_date > '2021-09-20' -- fecha aproximada a partir de cuando se crean las nuevas vistas
AND is_ms_shipped = 0 -- que NO son vistas internas de Microsoft
ORDER BY create_date DESC;

Este script no solo extrae la información de las vistas, sino que también genera el comando GRANT correspondiente para otorgar permisos de definición de vista.

Extracción de las Vistas en SQL Server

Otorgar Permisos con el Comando GRANT

En SQL Server, los permisos se gestionan mediante el uso del comando GRANT. Este comando permite conceder varios tipos de permisos, como SELECT, INSERT, UPDATE, DELETE, y más. En el contexto de las vistas, uno de los permisos más relevantes es VIEW DEFINITION.

¿Qué es VIEW DEFINITION?

El permiso VIEW DEFINITION permite a un usuario ver la definición de una vista, es decir, ver el código SQL que la compone. Esto es particularmente útil para desarrolladores y administradores que necesitan entender la estructura de las vistas sin modificar los datos subyacentes.

Ejemplo de Comando GRANT

Supongamos que queremos otorgar permisos de definición de vista a un usuario llamado db_view para la vista vista_empleados. El comando sería:

GRANT VIEW DEFINITION ON dbo.vista_empleados TO db_view;

Este comando es sencillo, pero cuando se tiene una base de datos con muchas vistas, automatizar la generación de estos comandos puede ahorrar mucho tiempo y reducir errores.

Automatización de la Gestión de Permisos

El script proporcionado al inicio genera automáticamente los comandos GRANT para cada vista que cumple con los criterios especificados. Esto facilita enormemente la gestión de permisos, especialmente en entornos de desarrollo y pruebas donde las vistas pueden cambiar con frecuencia.

Ejemplo Completo

A continuación, se muestra un ejemplo completo que combina la extracción de vistas y la generación de comandos GRANT:

SELECT *, 'GRANT VIEW DEFINITION ON [' + s.name + '].[' + o.name + '] TO [db_view]'
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE type = 'V'
AND create_date > '2021-09-20'
AND is_ms_shipped = 0
ORDER BY create_date DESC;

Este script proporciona una lista de todas las vistas junto con los comandos necesarios para otorgar permisos. Solo necesita copiar y ejecutar los comandos generados.

object_idnameschema_idparent_object_idtypetype_desccreate_datemodify_dateis_ms_shippedis_publishedis_schema_publishedschema_idschema_nameGRANT_VIEW_COMMAND
545673010vista_ventas10VVIEW2022-03-15 10:30:452022-03-15 10:30:450001dboGRANT VIEW DEFINITION ON [dbo].[vista_ventas] TO [db_view]
678945321vista_clientes10VVIEW2022-01-10 14:20:222022-01-10 14:20:220001dboGRANT VIEW DEFINITION ON [dbo].[vista_clientes] TO [db_view]
784512369vista_productos10VVIEW2021-11-05 09:15:332021-11-05 09:15:330001dboGRANT VIEW DEFINITION ON [dbo].[vista_productos] TO [db_view]
Tabla resultante de sacar los Grants con el script.

Descripción de los Campos

  • object_id: Identificador único del objeto en la base de datos.
  • name: Nombre de la vista.
  • schema_id: Identificador del esquema al que pertenece la vista.
  • parent_object_id: Identificador del objeto padre (en el caso de las vistas, este valor suele ser 0).
  • type: Tipo de objeto (V indica que es una vista).
  • type_desc: Descripción del tipo de objeto.
  • create_date: Fecha de creación de la vista.
  • modify_date: Fecha de última modificación de la vista.
  • is_ms_shipped: Indica si es una vista interna de Microsoft (0 significa que no lo es).
  • is_published: Indica si la vista está publicada.
  • is_schema_published: Indica si el esquema está publicado.
  • schema_name: Nombre del esquema al que pertenece la vista.
  • GRANT_VIEW_COMMAND: Comando GRANT generado automáticamente para otorgar permisos de definición de vista.

Resultado de la Extracción de las Vistas en SQL Server

Cada fila incluye una columna GRANT_VIEW_COMMAND, que contiene el comando SQL necesario para otorgar permisos VIEW DEFINITION a un usuario llamado db_view para la vista correspondiente. Por ejemplo:

  • Para la vista vista_ventas, el comando es: GRANT VIEW DEFINITION ON [dbo].[vista_ventas] TO [db_view];

Este enfoque automatiza la generación de comandos GRANT, facilitando la tarea de administrar permisos en múltiples vistas dentro de una base de datos.

Beneficios de Usar Vistas y GRANT en SQL Server

Seguridad

Las vistas permiten ocultar columnas sensibles y controlar el acceso a los datos. Al usar vistas, podemos asegurarnos de que los usuarios solo vean la información que necesitan.

Simplicidad

Las vistas simplifican las consultas complejas. En lugar de escribir consultas largas y complicadas, podemos crear una vista y referenciarla como si fuera una tabla.

Mantenimiento

Las vistas hacen que el mantenimiento de las bases de datos sea más manejable. Si la estructura subyacente de las tablas cambia, solo necesitamos actualizar la vista en lugar de cambiar todas las consultas que la utilizan.

Control de Accesos

El uso del comando GRANT facilita la administración de permisos, asegurando que solo los usuarios autorizados puedan ver o modificar la definición de las vistas.

Conclusión

La gestión de vistas y permisos en SQL Server es una práctica esencial para mantener la seguridad y la eficiencia en la administración de bases de datos. Al automatizar la extracción de vistas y la generación de comandos GRANT, podemos ahorrar tiempo, reducir errores y asegurarnos de que nuestras bases de datos estén bien protegidas.

Implementar estas prácticas en tu trabajo diario no solo mejorará la seguridad de tus datos, sino que también te ayudará a mantener un control más preciso sobre quién puede acceder y modificar la información en tu base de datos. ¡Empieza hoy mismo y optimiza la seguridad de tu SQL Server!

Qué es la temp-db en sql

Eliminar usuarios huérfanos SQL server

Script para saber el histórico de queries ejecutados SQL

Script Creación de Roles en SQL Server

Sacar permisos de Base de Datos SQL scripts

¿Qué hace DBCC CHECKDB?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

error: Contenido protegido :)