Un alto porcentaje de la lógica del negocio se encuentra codificada en los procedimientos almacenados o Stored Procedures
Por razones de seguridad, o por alguna otra razón, algunas veces es importante esconder la lógica del procedimiento almacenado. Existe en T-SQL una expresión para mandar a encriptar el texto del procedimiento almacenado que es WITH ENCRYPTION. Una vez que se encripta el procedimiento almacenado, no se puede obtener el texto original del mismo. Este texto debe ser copiado y guardado en un lugar seguro por el programador para su uso posterior.
No sólo el texto del procedimiento almacenado estará fuera de la posibilidad de visualizar sino también el plan de ejecución quedará fuera del alcance y la pestaña de Plan de Ejecución se mostrará deshabilitada. Veamos.
Por ejemplo, si creamos un procedimiento almacenado encriptado con la cláusula WITH ENCRYPTION y luego lo ejecutamos teniendo la opción MS SQL Sever "Actual Execution Plan" activada, En el panel de resultados no obtendremos la pestaña Execution Plan como lo veremos enseguida en el ejemplo.
El siguiente procedimiento sirve para ilustrar este comportamiento:
/* Crear SP with Encryption */
CREATE PROCEDURE
#EncriptadoSP
WITH
ENCRYPTION
AS
SELECT TOP 100 country, city, trafficcode
FROM
Office.Address
GO
Al ejecutar este procedimiento almacenado, observamos que no aparece la pestaña "Execution Plan" en el panel de resultados:
/* Ejecutar SP - Pestaña
Execution Plan no aparece */
EXEC
#EncriptadoSP
GO
La observación que debe hacerse es que al no mostrarse el Plan de Ejecución, SQL Server Management Studio está protegiendo tanto la confidencialidad del código, como la lógica de las reglas del negocio. Por qué? Porque a partir del plan de ejecución, el usuario final podría deducir la lógica detrás de la aplicación.
Para evitar esta brecha de seguridad para los procedimientos almacenados encriptados, el SQL Management Studio no despliega el Plan de Ejecución.
No hay comentarios.:
Publicar un comentario