Serie Preparación Examen 70-453: Entendiendo el Declarative Management Framework (DMF) en SQL Server 2008 (Parte 1 de 2)

Este es el primero de una serie de posts que tratan sobre los temas menos conocidos del examen 70-453: Upgrade: Transition Your MCITP SQL Server 2005 DBA to MCITP SQL Server 2008 necesario si uno posee la certificación MCITP SQL Server 2005 DBA y desea actualizar a la versión 2008 es decir obtener el MCITP SQL Server 2008 DBA, en mi caso he dado este examen dos veces y si bien conocía bastante características de administración del producto muy comunes desde versiones anteriores, mi preparación no fue suficiente en las nuevas características introducidas en la versión 2008 de SQL Server, por lo que no fue suficiente para alcanzar el puntaje requerido. Pues bien en este artículo abordaré una nueva característica presente desde la versión 2008: el Declarative Management Framework (DMF).

El DMF permite a los administradores crear y aplicar políticas que regulan la configuración y operación de un servidor o servidores SQL Server. Imaginemos que los servidores que administras en tu compañía requieren el uso de la funcionalidad de expiración de contraseñas, pues bien con DMF puedes crear una política que refuerce el cumplimiento de este requerimiento en todos los servidores SQL Server de tu compañía y de esta manera evitar –e incluso auditar intentos de transgresión- situaciones pongan en riesgo la seguridad de los servidores.

Bien, antes de empezar a administrar servidores, es necesario conocer ciertos elementos específicos a DMF, entre los cuales tenemos.

  1. Targets: entidades administrables usando DMF, puede ser una instancia, base de datos, tabla o login
  2. Facets: Colección de propiedades relacionadas para un objeto o conjunto de objetos similares. En SQL Server 2008 los usuarios no pueden crear sus propios facets. Algunos ejemplos de facets incluyen logins, filegroups, servers y stored procedures.
  3. Conditions: Colección de una o más clausulas que especifican propiedades de un facet. Cada management facet tiene propiedades que pueden ser expresadas en condiciones, por ejemplo la faceta de logins puede tener condiciones relacionadas con el nombre de usuario, fecha de creación, y la ejecución de complejidad de contraseñas, entre otros.
  4. Policies: especifican la condición que se espera que un target cumpla y la manera en que desearía que se cumpla esta política (modo de evaluación). Cada política contiene solamente una condición.

Poniendo en un escenario real estos elementos podríamos presentar un caso en el cual decido reforzar la política de contraseñas seguras en una instancia SQL Server llamada SQL01, podríamos decir que:

  • el target de la política es la instancia de SQL Server llamada SQL01
  • el facet involucrado es Logins que contiene todas las propiedades relacionadas a los SQL Server logins
  • la condición a crear en base al facet Logins contendría una sola clausula que exija que el campo @Password ExpirationEnabled tenga un valor de True
  • finalmente, se debería crear una política que refuerce esta condición contra el target SQL01

SQL server incluye algunas políticas predefinidas que pueden ayudar a tener idea de las buenas prácticas de seguridad que Microsoft recomienda. Para acceder a estas políticas predefinidas, es necesario dirigirse al Explorador de Objetos en SQL Server Management Studio, carpeta Management, nodo Policy Management y elegir de la carpeta \Program Files\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1033 el archivo .xml con la definición de la política a utilizar. En este caso, probaremos elegir una política predefinida llamada SQL Server Password Policy que evalúa la existencia de un password para un login existente.

image

 

image

 

image

 

image

 

Una vez importada la política predefinida del sistema, ejecutaremos una evaluación de la política contra el target al cual apunta: los logins. El resultado: vemos cómo algunos logins no logran cumplir la política predefinida, recientemente importada y ejecutada.

image

 

image

 

Bien, entonces ahora es momento de crear nuestra propia política En esta ocasión, crearemos una política que obligue a todos los procedimientos almacenados de usuario que se creen a tener el prefijo usp_ en el nombre y a no exceder los 50 caracteres de largo en el nombre. Para ello dirigirse al Explorador de Objetos en SQL Server Management Studio, carpeta Management, nodo Policy Management, nodo Conditions para luego dar clic derecho sobre dicho nodo y elegir la opción New Condition, elegimos como nombre cn_procedimiento_almacenado_nombre_largo para esta nueva condición.

image

 

image

 

image

 

Una vez creada la condición cn_procedimiento_almacenado_nombre_largo, es necesario crear una política que refuerce el cumplimiento de esa condición frente a los targets u objetivos. Para ello dirigirse al Explorador de Objetos en SQL Server Management Studio, carpeta Management, nodo Policy Management, nodo Policies para luego dar clic derecho sobre dicho nodo y elegir la opción New Policy:

image

 

image

Una vez que aparezca la ventana de creación de nueva política elegimos el nombre pl_procedimiento_almacenado_nombre_largo. Luego en la lista desplegable Check Condition elegimos la condición que creamos anteriormente llamada cn_procedimiento_almacenado_nombre_largo, luego elegimos que se aplique en todos los procedimientos de todas las base de datos y finalmente en la lista desplegable Evaluation Mode la opción On change: prevent. Es importante notar que una política se creará por defecto deshabilitada, por lo que marcaremos la opción Enabled en la ventana de diálogo. El DMF de SQL Server brinda cuatro modos de evaluación de políticas:

  • On Demand: no realiza un chequeo automático de la política sino que permite hacerlo a discreción y de manera manual.
  • On Schedule: permite programar la ejecución automática de la política usando el Agente SQL Server, asimismo se crea un registro cada vez que la política se ejecuta y encuentra una ocurrencia de no cumplimiento de ésta.
  • On Change – Log Only: crea un registro cada vez que se encuentra una ocurrencia de no cumplimiento de una política.
  • On Change – Prevent: cada vez que se encuentra una acción que no cumpla una política, será impedida de ejecutarse.

Cabe recordar que las políticas y condiciones DMF son almacenadas en la base de datos msdb, por lo que es conveniente realizar una copia de seguridad de manera frecuente de esta base de datos.

Es momento de probar el funcionamiento de nuestra política, para ello trataremos de crear dos procedimientos almacenados, el primero que no cumpla con las condiciones establecidas por la políticas. En el primer caso, al crear un procedimiento almacenado llamado proc01, que no cumple con la política pl_procedimiento_almacenado_nombre_largo, SQL Server impedirá la creación del mismo, sin embargo al crear el mismo procedimiento almacenado pero ahora con el nombre usp_proc01, que sí cumple con la política pl_procedimiento_almacenado_nombre_largo, la ejecución será exitosa.

 

image

 

image

Bien, en está primera entrega sobre el DMF de SQL Server hemos visto la parte básica de la creación de política y sus elementos, en las siguientes entregas, tocaremos la creación avanzada de políticas, los diversos uso que podemos darle y los diferentes modos de evaluación de éstas.

Hasta la siguiente entrega

Deja una respuesta

Tu dirección de correo electrónico no será publicada.