Vista encriptadas y no encriptadas en Microsoft SQL ServerFecha: 12/Oct/2005 (05/10/05)
|
dando la base acerca de la generación de vistas....
...extraída de la documentación de SQL Server....
Las vistas suelen utilizarse para centrar, simplificar y personalizar la percepción de la base de datos para cada usuario. Las vistas pueden emplearse como mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos por medio de la vista, pero no les conceden el permiso de obtener acceso directo a las tablas base subyacentes de la vista.
Una vista se puede considerar una tabla virtual o una consulta almacenada. Los datos accesibles a través de una vista no están almacenados en un objeto distinto de la base de datos. Lo que está almacenado en la base de datos es una instrucción SELECT. El resultado de la instrucción SELECT forma la tabla virtual que la vista devuelve. El usuario puede utilizar dicha tabla virtual haciendo referencia al nombre de la vista en instrucciones Transact-SQL, de la misma forma en que se hace referencia a las tablas. Las vistas se utilizan para alguna de estas funciones, o para todas:
- Restringir el acceso del usuario a filas concretas de una tabla. Por ejemplo, permitir que un empleado sólo vea las filas que guardan su trabajo en una tabla de seguimiento de actividad laboral. Restringir el acceso del usuario a columnas específicas. Por ejemplo, permitir que los empleados que no trabajen en el departamento de nóminas vean las columnas de nombre, oficina, teléfono y departamento de la tabla de empleados, pero no permitir que vean las columnas con los datos de salario u otra información personal.
- Combinar columnas de varias tablas de forma que parezcan una sola tabla.
- Agregar información en lugar de presentar los detalles. Por ejemplo, presentar la suma de una columna o el valor máximo o mínimo de una columna.
...."
AQUÍ EMPIEZA MI APORTACIÓN
Ejemplo:
Las vistas se crean definiendo la instrucción SELECT que recupera los datos presentados por la vista. Las tablas de datos a las que hace referencia la instrucción SELECT se conocen como las tablas base para la vista. En este ejemplo, viewCustomers viewCustomers de la base de datos northwind es una vista que selecciona las cinco clientes de la tabla Customers visualizando los siguientes campos: CustomerID, CompanyName, ContactName, Country, city, y además con la condición de que el nombre de la ciudad a la que pertenecen empiece con la letra M, ordenándolos por el campo companyname.
--creamos una nueva versión de la vista create view viewCustomers as select top 5 CustomerID, CompanyName, ContactName, Country, city from customers where city like 'M%' order by companynameUna vez creada, se puede hacer referencia a viewCustomers en las instrucciones, de la misma forma que se hace referencia a una tabla:
select * from viewCustomers
VISTAS ENCRIPTADAS vs. VISTAS NO ENCRIPTADAS
Una vista no cifrada nos permite obtener información acerca de su definición debido a que es posible que necesite ver la definición de la vista para entender cómo derivan sus datos de las tablas de origen o para ver los datos que ella misma define. Una vista no encriptada es aquella cuya secuencia de comandos no ha sido encriptada, de modo que la columna VIEW_DEFINITION de la vista INFORMATION_SCHEMA.VIEWS expone legiblemente al usuario la T-SQL que genera la vista. Para crear una vista no encriptada de manera predeterminada no se utiliza el atributo ENCRYPTION.
Por ejemplo, la siguiente secuencia de comandos muestra la manera de crear un vista de la tabla Customers de la base de datos Northwind (incluye las sentencias CREATE VIEW para generar la vista denominada viewCustomers y la sentencia SELECT necesaria para definir el conjunto de resultados de la vista).
En este cuadro se detalla paso a paso todo este "rollo" de crear una vista no encriptada, como verá es sumamente sencilla.
--=================================================--VISTA NO ENCRIPTADA--=================================================use Northwind go --eliminamos la version anterior de una vista con nombre 'viewCustomers' if exists( select table_name from information_schema.Views where table_name='viewCustomers') drop view viewCustomers go --creamos una nueva versión de la vista create view viewCustomers as select top 5 CustomerID, CompanyName, ContactName, Country, city from customers where city like 'M%'order by companyname go --mostramos la vista select * from viewCustomers --para verificar que es una vista no encriptada, --mostramos la secuencia de comandos de la vista... --notamos que es bastante legible... select table_name, view_definition from information_schema.Views where table_name='viewCustomers'Se dará; cuenta que no usamos el atributo ENCRYPTION, o en todo caso, no se usa la cláusula WITH ENCRYPTION. Podemos comprobar esto al momento de ejecutar la siguiente sentencia (explicada en el cuadro anterior):
select table_name, view_definition
from information_schema.Views
where table_name='viewCustomers'
Usted podrá observar de manera clara toda la sencuencia de comando que la generó.
En contraste, para generar una vista encriptada se usa la cláusula WITH ENCRYPTION que se encargará de encriptar la T-SQL de la vista. En este cuadro es explica a detalle todo el proceso de generación y consulta de la vista encriptada.
--para verificar que es una vista encriptada, --mostramos la secuencia de comandos de la vista --notamos que no es nada legible... select table_name,view_definition from information_schema.Views where table_name='viewcustomersEncrypted'--================================================= --VISTA ENCRIPTADA --=================================================use Northwind go --eliminamos la version anterior de una vista con nombre 'viewCustomersEncrypted' if exists( select table_name from information_schema.Views where table_name='viewCustomersEncrypted') drop view viewCustomers go --creamos una nueva versión de la vista create view viewCustomersEncrypted with encryption as select top 5 CustomerID, CompanyName, ContactName, Country, city from customers where city like 'M%'order by companyname go --mostramos la vista select * from viewCustomersEncrypted goPues ahora usted verá que el campo view_definition está encriptado, negándonos de esta manera leer la secuencia de comandos que define esta vista viewCustomersEncrypted.
Espero le haya sido de utilidad, mi intención es ayudar a entender mejor el tema.
Nos vemos.
Percy Reyes
Microsoft Certified ProfessionalSaludos desde Trujillo - Perú
Por favor, califica este artículo en PanoramaBox, así me animarás a continuar colaborando contigo.