Administrar servidores mediante administración basada en directivas

La administración basada en directivas es un sistema para administrar una o varias instancias de SQL Server 2008. Cuando los administradores de directivas de SQL Server utilizan la administración basada en directivas, utilizan SQL Server Management Studio para crear directivas que permitan administrar las entidades en el servidor, como la instancia de SQL Server, las bases de datos u otros objetos de SQL Server.

La administración basada en directivas tiene tres componentes:

  • Administración de directivas

    Los administradores de directivas crean las directivas.

  • Administración explícita

    Los administradores seleccionan uno o varios destinos administrados y comprueban explícitamente que los destinos cumplan una directiva concreta o hacen que la cumplan.

  • Modos de evaluación

    Hay cuatro modos de evaluación; tres de ellos se pueden automatizar:

    • A petición. Este modo evalúa la directiva cuando lo especifica el usuario directamente.

    • Al cambiar: impedir. Este modo automatizado usa desencadenadores DDL para evitar infracciones de la directiva.

      Nota importanteImportante

      Si la opción de configuración de servidor nested triggers está deshabilitada, Al cambiar: impedir no funcionará correctamente. La administración basada en directivas se basa en los desencadenadores DDL para detectar y revertir las operaciones DDL que no obedecen a las directivas que utilizan este modo de evaluación. Al quitar los desencadenadores DDL de la administración basada en directivas o deshabilitar los desencadenadores anidados, este modo de evaluación provocará un error o se comportará de forma inesperada.

    • Al cambiar: sólo registrar. Este modo automatizado utiliza la notificación de eventos para evaluar una directiva cuando se realiza un cambio relevante.

    • Al programar. Este modo automatizado utiliza un trabajo del Agente SQL Server para evaluar una directiva periódicamente.

    Cuando las directivas automatizadas no estén habilitadas, la administración basada en directivas no afectará al rendimiento del sistema.

    Nota

    Cuando el sistema calcula el conjunto de objetos para una directiva, los objetos del sistema se excluyen de forma predeterminada. Por ejemplo, si el conjunto de objetos de la directiva hace referencia a todas las tablas, la directiva no se aplicará a las tablas del sistema. Si los usuarios desean evaluar una directiva con los objetos del sistema, pueden agregar explícitamente objetos del sistema al conjunto de objetos. Sin embargo, aunque se admiten todas las directivas para el modo de evaluación comprobar en la programación, por motivos de rendimiento no se admiten todas las directivas con conjuntos de objetos arbitrarios para el modo de evaluación comprobar en los cambios. Para obtener más información, vea https://blogs.msdn.com/b/sqlpbm/archive/2009/04/13/policy-evaluation-modes.aspx

Condiciones y conceptos de la administración basada en directivas

  • Destino de la administración basada en directivas
    Entidades que se administran con la administración basada en directivas, como una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server), una base de datos, una tabla o un índice. Todos los destinos de una instancia de servidor forman una jerarquía de destino. Un conjunto de destinos es el resultado de aplicar un conjunto de filtros de destino a la jerarquía de destino; por ejemplo, todas las tablas de la base de datos que es propiedad del esquema HumanResources.

  • Faceta de administración basada en directivas
    Conjunto de propiedades lógicas que modelan el comportamiento o las características de ciertos tipos de destinos administrados. El número y las características de las propiedades están integrados en la faceta y sólo el fabricante de la faceta las puede agregar o quitar. Un tipo de destino puede implementar una o varias facetas de administración, y uno o varios tipos de destino pueden implementar una faceta de administración. Algunas propiedades de una faceta sólo se pueden aplicar a una versión concreta. Por ejemplo, la propiedad Correo electrónico de base de datos de la faceta Configuración de área expuesta sólo se aplica a SQL Server 2005 y versiones posteriores.

  • Condición de la administración basada en directivas
    Una expresión booleana que especifica un conjunto de estados permitidos de un destino administrado mediante la administración basada en directivas con respecto a una faceta de administración.

  • Directiva de administración basada en directivas
    Una condición de administración basada en directivas y el comportamiento esperado, por ejemplo, el modo de evaluación, los filtros de destino y la programación. Una directiva solo puede contener una condición. Las directivas pueden estar habilitadas o deshabilitadas.

  • Categoría de directiva de administración basada en directivas
    Categoría definida por el usuario para ayudar a administrar las directivas. Los usuarios pueden clasificar las directivas en categorías diferentes. Una directiva pertenece a una y sólo una categoría. Las categorías de directiva se aplican a las bases de datos y servidores. En el nivel de base de datos, se aplican las condiciones siguientes:

    • Los propietarios de base de datos pueden suscribir una base de datos a un conjunto de categorías de directiva.

    • Sólo las directivas de sus categorías subscritas pueden gobernar una base de datos.

    • Todas las bases de datos se suscriben implícitamente a la categoría de directiva predeterminada.

    En el nivel de servidor, las categorías de directiva se pueden aplicar a todas las bases de datos.

  • Directiva efectiva
    Las directivas efectivas de un destino son las que lo gobiernan. Una directiva sólo es efectiva con respecto a un destino si se satisfacen todas las condiciones siguientes:

    • La directiva está habilitada.

    • El destino pertenece al conjunto de destinos de la directiva.

    • El destino o uno de los antecesores de los destinos se suscribe al grupo de directivas que contiene esta directiva.

Ejemplos de problemas resueltos utilizando la administración basada en directivas

La administración basada en directivas sería útil para resolver los problemas presentados en los escenarios siguientes:

  • Una directiva de la compañía prohíbe habilitar Correo electrónico de base de datos o SQL Mail. Una directiva se crea para comprobar el estado del servidor de esas dos características. Un administrador compara el estado del servidor con la directiva. Si el estado del servidor indica que es incompatible, el administrador elige el modo Configurar y la directiva pone el estado del servidor como compatible.

  • La base de datos AdventureWorks2008R2 tiene una convención de nomenclatura que requiere que todos los nombres de los procedimientos almacenados comiencen con las letras AW_. Se crea una directiva para aplicar esta convención. Un administrador prueba esta directiva y recibe una lista de procedimientos almacenados que no la cumplen. Si los procedimientos almacenados futuros no obedecen esta convención de nomenclatura, se produce un error en las instrucciones de creación de los procedimientos almacenados.

Modos de evaluación permitidos

Los modos de evaluación de una directiva están determinados por las características de la faceta de administración basada en directivas que usa la directiva. Todas las facetas admiten A petición y Al programar. Las facetas admiten Al cambiar: sólo registrar si el cambio de estado de la faceta puede ser capturado por algunos eventos. Las facetas admiten Al cambiar: impedir si hay compatibilidad transaccional con las instrucciones DDL que cambian el estado de la faceta. Las directivas que se automatizan con alguno de estos tres modos de ejecución pueden habilitarse y deshabilitarse.

En SQL Server Management Studio, el cuadro de diálogo Evaluar directivas proporciona dos opciones que puede utilizar para ejecutar una directiva:

  • Evaluar
    De este modo las directivas se evaluarán con los destinos seleccionados.

  • Aplicar
    Permite aplicar los cambios a los destinos aplicables que infrinjan las directivas. Algunos destinos no se pueden volver a configurar a través de la administración basada en directivas. Por ejemplo, si está evaluando si los archivos de datos y de copia de seguridad se hallan en dispositivos independientes, la administración basada en directivas puede detectar las infracciones de esta condición; sin embargo, no puede aplicar los cambios a través de la administración basada en directivas para exigir el cumplimiento de las directivas.

Administración de directivas

Las directivas se crean y se administran por medio de Management Studio. El proceso consta de los pasos siguientes:

  1. Seleccione una faceta de administración basada en directivas que contenga las propiedades que se van a configurar.

  2. Defina una condición que especifique el estado de una faceta de administración.

  3. Defina una directiva que contenga la condición, las condiciones adicionales que filtran los conjuntos de destinos y el modo de evaluación.

  4. Compruebe si una instancia de SQL Server cumple la directiva.

Para las directivas que no se cumplen, el Explorador de objetos indica una advertencia de estado crítico en forma de icono rojo al lado del destino y los nodos superiores en el árbol del Explorador de objetos.

Almacenamiento de directivas

Las directivas se almacenan en la base de datos msdb. Después de cambiar una directiva o condición, se debe hacer una copia de seguridad de la base de datos msdb. Para obtener más información, vea Consideraciones para hacer copias de seguridad de las bases de datos model y msdb.

SQL Server 2008 incluye directivas que se pueden utilizar para supervisar una sesión de SQL Server. De forma predeterminada, estas directivas no están instaladas en Motor de base de datos; sin embargo, se pueden importar desde la ubicación de instalación predeterminada C:\Archivos de programa\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1033. Para obtener más información, vea Cómo exportar e importar una directiva de administración basada en directivas.

Puede crear directamente las directivas utilizando el menú Archivo/Nuevo y guardándolas después en un archivo. Esto le permite crear directivas cuando no esté conectado a una instancia de Motor de base de datos.

El historial de las directivas evaluadas en la instancia actual de Motor de base de datos se mantiene en las tablas del sistema de msdb. El historial de las directivas aplicadas a otras instancias de Motor de base de datos o a Reporting Services o Analysis Services no se conserva. Para obtener más información, vea Solucionar problemas de directivas de administración basada en directivas.

Configurar alertas para notificar los errores de directiva a los administradores de directivas

Cuando las directivas de administración basada en directivas se ejecutan en uno de los tres modos de evaluación automatizados, si se produce la infracción de una directiva, se escribe un mensaje en el registro de eventos. Para que se le notifique cuando este mensaje se escribe en el registro de eventos, puede crear una alerta que se active al detectar el mensaje y permita realizar una acción. La alerta debería detectar los mensajes que se muestran en la tabla siguiente.

Modo de ejecución

Número de mensaje

Al cambiar: impedir

(si es Automático)

34050

Al cambiar: impedir

(si es A petición)

34051

Al programar

34052

Al cambiar

34053

Si desea configurar una alerta para responder a los mensajes de error de administración basada en directivas, vea los temas siguientes:

Consideraciones adicionales sobre las alertas

Tenga en cuenta las consideraciones adicionales siguientes acerca de las alertas:

  • Las alertas sólo se generan para las directivas que están habilitadas. Dado que las directivas A petición no pueden estar habilitadas, no se generan alertas para las directivas que se ejecutan a petición.

  • Si la acción que desea tomar incluye enviar un mensaje de correo electrónico, debe configurar una cuenta de correo. Recomendamos usar Correo electrónico de base de datos. Para obtener más información acerca de cómo configurar Correo electrónico de base de datos, vea Cómo crear cuentas de Correo electrónico de base de datos (Transact-SQL).

  • Seguridad de alerta:

    Cuando las directivas se evalúan a petición, se ejecutan en el contexto de seguridad del usuario. Para escribir en el registro de errores, el usuario debe tener permisos ALTER TRACE o ser miembro del rol fijo de servidor sysadmin. Las directivas que evalúe un usuario que tenga menos privilegios no escribirán en el registro de eventos y no desencadenarán una alerta.

    Los modos de ejecución automatizados se ejecutan como un miembro del rol sysadmin. Esto permite que la directiva se escriba en el registro de errores y se genere una alerta.

Seguridad

Para usar la administración basada en directivas se necesita la pertenencia al rol PolicyAdministratorRole en la base de datos msdb. Este rol tiene el control completo de todas las directivas en el sistema. Este control permite crear y modificar las directivas y condiciones, y habilitar y deshabilitar las directivas.

Nota de seguridadNota de seguridad

Posible elevación de credenciales: los usuarios del rol PolicyAdministratorRole pueden crear desencadenadores del servidor y programar ejecuciones de directivas que pueden afectar al funcionamiento de la instancia de Motor de base de datos. Por ejemplo, PolicyAdministratorRole puede crear una directiva que puede impedir la creación de la mayoría de los objetos en Motor de base de datos. Debido a esta posible elevación de credenciales, el rol PolicyAdministratorRole se debe conceder únicamente a los usuarios que sean de confianza para controlar la configuración del Motor de base de datos.

Se aplican los principios de seguridad siguientes:

  • Un administrador del sistema o propietario de la base de datos puede suscribir una base de datos a una directiva o grupo de directivas.

  • Los miembros del rol PolicyAdministratorRole pueden habilitar o deshabilitar directivas.

  • Los miembros de PolicyAdministratorRole pueden crear directivas para las que no tienen permiso de ejecución ad hoc, pero que se ejecutan correctamente cuando otros usuarios que dispongan del permiso necesario las ejecuten.

    Nota de seguridadNota de seguridad

    Posible elevación de credenciales: los usuarios del rol PolicyAdministratorRole pueden crear directivas que contengan una condición que use las funciones ExecuteSql o ExecuteWql. Si un usuario que tiene permisos de sysadmin ejecuta posteriormente la directiva, la instrucción de Transact-SQL proporcionada por el administrador de directivas se ejecutará con los permisos de sysadmin del usuario que la está ejecutando.

  • La ejecución de la directiva ad hoc se produce en el contexto de seguridad del usuario.

  • Con las directivas que tengan el modo de evaluación Al programar, use trabajos del Agente SQL Server que sean propiedad del inicio de sesión sa.

Consideraciones para usar la administración basada en directivas

Tenga en cuenta que las directivas pueden afectar a la forma de funcionamiento de algunas características de SQL Server. Por ejemplo, la captura de datos modificados y la replicación transaccional usan ambas la tabla systranschemas, que carece de índice. Si habilita una directiva que indique que todas las tablas deben tener un índice, exigir el cumplimiento de la directiva hará que estas características generen un error.