Administrando servidores com Gerenciamento Baseado em Diretivas

Gerenciamento Baseado em Diretivas é um sistema para gerenciar uma ou mais instâncias do SQL Server 2008. Quando os administradores de diretivas do SQL Server usam o Gerenciamento Baseado em Diretivas, eles usam o SQL Server Management Studio para criar diretivas para gerenciar entidades no servidor, como as instâncias do SQL Server, bancos de dados ou outros objetos do SQL Server.

O Gerenciamento Baseado em Diretivas tem três componentes:

  • Gerenciamento de diretiva

    Os administradores de diretivas criam diretivas.

  • Administração explícita

    Os administradores selecionam um ou mais destinos gerenciados e verificam explicitamente se eles estão de acordo com uma diretiva específica, ou explicitamente fazem com que os destinos estejam de acordo com uma diretiva.

  • Modos de avaliação

    Há quatro modos de avaliação, três dos quais podem ser automatizados:

    • Sob demanda. Este modo avalia a diretiva quando especificado diretamente pelo usuário.

    • Ao alterar: impedir. Esse modo automatizado usa gatilhos DDL para impedir violações de diretiva.

      Observação importanteImportante

      Se a opção de configuração do servidor gatilhos aninhados for desabilitada, Ao alterar: impedir não funcionará corretamente. O Gerenciamento Baseado em Diretivas necessita de gatilhos DDL para detectar e reverter operações de DDL que não estejam em conformidade com diretivas que usam este modo de avaliação. Remover os gatilhos DDL do Gerenciamento Baseado em Diretivas ou desabilitar os gatilhos aninhados fará com que este modo de avaliação falhe ou execute de forma inesperada.

    • Ao alterar: log apenas. Este modo automatizado usa a notificação de eventos para avaliar uma diretiva quando uma alteração relevante é feita.

    • Ao agendar. Este modo automatizado usa um trabalho do SQL Server Agent para avaliar periodicamente uma diretiva.

    Quando as diretivas automatizadas não estão habilitadas, o Gerenciamento Baseado em Diretivas não afetará o desempenho do sistema.

Termos e conceitos do Gerenciamento Baseado em Diretivas

  • Destino gerenciado pelo Gerenciamento Baseado em Diretivas
    As entidades gerenciadas pelo Gerenciamento Baseado em Diretivas, como uma instância do Mecanismo de Banco de Dados do SQL Server, um banco de dados, uma tabela ou um índice. Todos os destinos em uma instância de servidor formam uma hierarquia de destino. Um conjunto de destino é aquele resultante da aplicação de um conjunto de filtros de destino à hierarquia de destino. Por exemplo, todas as tabelas do banco de dados de propriedade do esquema HumanResources.

  • Faceta do Gerenciamento Baseado em Diretivas
    Um conjunto de propriedades lógicas que modelam o comportamento ou as características de certos tipos de destinos gerenciados. O número e as características das propriedades são incorporados à faceta e só podem ser adicionados ou removidos pelo criador da faceta. Um tipo de destino pode implementar uma ou mais facetas de gerenciamento, e uma faceta de gerenciamento pode ser implementada por um ou mais tipos de destino. Algumas propriedades de uma faceta só podem ser aplicadas a uma versão específica. Por exemplo, a propriedade Database Mail da faceta Configuração da Área da Superfície só se aplica ao SQL Server 2005 e versões posteriores.

  • Condição de Gerenciamento Baseado em Diretivas
    Uma expressão booleana que especifica um conjunto de estados permitidos de um destino gerenciado pelo Gerenciamento Baseado em Diretivas em relação a uma faceta de gerenciamento.

  • Diretiva de Gerenciamento Baseado em Diretivas
    Uma condição do Gerenciamento Baseado em Diretivas e o comportamento esperado, como, por exemplo, modo de avaliação, filtros de destino e agenda. Uma diretiva só pode conter uma condição. As diretivas podem ser habilitadas ou desabilitadas.

  • Categoria de diretiva do Gerenciamento Baseado em Diretivas
    Uma categoria definida pelo usuário para ajudar a gerenciar diretivas. Os usuários podem classificar as diretivas em categorias diferentes. Uma diretiva pertence a somente uma categoria. Categorias de diretivas se aplicam a bancos de dados e servidores. No nível de banco de dados, as seguintes condições se aplicam:

    • Os proprietários de banco de dados podem assinar um conjunto de categorias de diretiva para um banco de dados.

    • Somente as diretivas das categorias assinadas podem governar um banco de dados.

    • Todos os bancos de dados assinam implicitamente a categoria de diretiva padrão.

    No nível de servidor, é possível aplicar categorias de diretivas a todos os bancos de dados.

  • Diretiva efetiva
    As diretivas efetivas de um destino são aquelas que governam esse destino. Uma diretiva só será efetiva em relação a um destino se todas as seguintes condições forem satisfeitas:

    • A diretiva está habilitada.

    • O destino pertence ao conjunto de destino da diretiva.

    • O destino ou um dos destinos ancestrais assina o grupo de diretivas que contém essa diretiva.

Exemplos de problemas resolvidos com o Gerenciamento Baseado em Diretivas

O Gerenciamento Baseado em Diretivas seria útil na solução dos problemas apresentados nos seguintes cenários:

  • Uma diretiva de empresa proíbe a habilitação do Database Mail ou do SQL Mail. Uma diretiva é criada para verificar o estado do servidor desses dois recursos. Um administrador compara o estado do servidor com a diretiva. Se o estado estiver fora de conformidade, o administrador escolherá o modo Configurar e a diretiva providenciará a compatibilidade do estado do servidor.

  • O banco de dados AdventureWorks tem uma convenção de nomenclatura que requer que todos os procedimentos armazenados comecem com as letras AW_. Uma diretiva é criada para impor essa diretiva. Um administrador testa essa diretiva e recebe uma lista de procedimentos armazenados que estão fora de conformidade. Se os procedimentos armazenados futuros não estiverem em conformidade com essa convenção de nomenclatura, haverá falha nas instruções de criação dos procedimentos armazenados.

Modos de avaliação permitidos

Os modos de avaliação de diretivas são determinados pelas características da faceta de Gerenciamento Baseado em Diretivas usadas pela diretiva. Todas as facetas suportam Sob Demanda e Ao agendar. As facetas suportam Ao alterar: log apenas se a alteração do estado da faceta puder ser capturada por alguns eventos. As facetas suportam Ao alterar: impedir se houver um suporte transacional para as instruções DDL que alteram o estado da faceta. As diretivas que são automatizadas com um desses três modos de execução podem ser habilitadas e desabilitadas.

No SQL Server Management Studio, a caixa de diálogo Avaliar Diretivas fornece duas opções que você pode usar para executar uma diretiva:

  • Avaliar
    Avalia diretivas contra os destinos selecionados.

  • Aplicar
    Permite aplicar alterações em destinos aplicáveis que violam diretivas. Não é possível reconfigurar alguns destinos através do Gerenciamento Baseado em Diretivas. Por exemplo, se você estiver avaliando se há arquivos de dados e o backup em dispositivos separados, o Gerenciamento Baseado em Diretivas pode detectar violações a essa condição; entretanto, você não pode aplicar alterações através do Gerenciamento Baseado em Diretivas para forçar a conformidade à diretiva.

Gerenciamento de diretiva

As diretivas são criadas e gerenciados com o uso do Management Studio. O processo inclui as seguintes etapas:

  1. Selecionar uma faceta de Gerenciamento Baseado em Diretiva que contenha as propriedades a serem configuradas.

  2. Definir uma condição que especifique o estado de uma faceta de gerenciamento.

  3. Definir uma diretiva que contenha uma condição, as condições adicionas que filtram os conjuntos de destino e o modo de avaliação.

  4. Verificar se uma instância do SQL Server está em conformidade com a diretiva.

Para as diretivas com falha, o Pesquisador de Objetos indica um aviso de integridade crítica como um ícone vermelho ao lado do destino e dos nós superiores da árvore do Pesquisador de Objetos.

Armazenamento de Diretivas

As diretivas são armazenadas no banco de dados msdb. Após a alteração de uma diretiva ou condição, deve ser feito backup do msdb. Para obter mais informações, consulte Considerações sobre backup de bancos de dados modelo e msdb.

O SQL Server 2008 inclui diretivas que podem ser usadas para monitorar uma instância do SQL Server. Por padrão, essas diretivas não são instaladas no Mecanismo de Banco de Dados; no entanto, elas podem ser importadas do local de instalação padrão C:\Arquivos de Programas\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1046. Para obter mais informações, consulte Como exportar e importar uma diretiva do Gerenciamento Baseado em Diretivas.

Você pode criar diretivas diretamente usando o menu Arquivo/Novo e salvá-las em um arquivo. Isso permite criar diretivas quando você não estiver conectado a uma instância do Mecanismo de Banco de Dados.

O histórico de diretivas avaliadas na instância atual do Mecanismo de Banco de Dados é mantido em tabelas do sistema de msdb. O histórico de diretivas aplicadas a outras instâncias do Mecanismo de Banco de Dados ou aplicadas ao Reporting Services ou ao Analysis Services não é retido. Para obter mais informações, consulte Solucionando problemas de diretivas do Gerenciamento Baseado em Diretivas.

Configurando alertas para notificar os administradores de diretivas sobre falhas

Quando as diretivas do Gerenciamento Baseado em Diretivas são executadas em um dos três modos de avaliação automatizados, se ocorrer uma violação de diretiva, uma mensagem será gravada no log de eventos. Para ser notificado quando essa mensagem for gravada no log de eventos, você pode criar um alerta para detectar a mensagem e executar uma ação. O alerta deve detectar as mensagens como mostra a tabela a seguir.

Modo de execução

Número da mensagem

Ao alterar: impedir

(se automático)

34050

Ao alterar: impedir

(se por demanda)

34051

Ao agendar

34052

Ao alterar

34053

Para configurar um alerta para responder às mensagens de erro do Gerenciamento Baseado em Diretivas, consulte os seguintes tópicos:

Considerações adicionais sobre alertas

Esteja atento às seguintes considerações adicionais sobre alertas:

  • Os alertas só são gerados para diretivas que estiverem habilitadas. Como as diretivas Sob demanda não podem ser habilitadas, não são gerados alertas para diretivas executadas sob demanda.

  • Se a ação que você deseja executar incluir o envio de um email, você deverá configurar uma conta de email. É recomendável usar o Database Mail. Para obter mais informações sobre como configurar o Database Mail, consulte Como criar contas do Database Mail (Transact-SQL).

  • Segurança de alerta:

    Quando as diretivas são avaliadas por demanda, elas são executadas no contexto de segurança do usuário. Para gravar no log de erros, o usuário deve ter permissões ALTER TRACE ou ser um membro da função de servidor fixa sysadmin. As diretivas avaliadas por um usuário com menos privilégios não gravarão no log de eventos e não irão disparar um alerta.

    Os modos de execução automatizados são executados como um membro da função sysadmin. Isso permite que a diretiva grave no log de erros e gere um alerta.

Segurança

A administração do Gerenciamento Baseado em Diretivas requer a associação na função PolicyAdministratorRole no banco de dados msdb. Essa função tem controle completo de todas as diretivas do sistema. Esse controle inclui a criação e edição de diretivas e condições, além da habilitação e desabilitação de diretivas.

Observação sobre segurançaObservação sobre segurança

Possível elevação de credenciais: os usuários na função PolicyAdministratorRole podem criar gatilhos de servidor e agendar execuções de diretivas que possam afetar a operação da instância do Mecanismo de Banco de Dados. Por exemplo, a função PolicyAdministratorRole pode criar uma diretiva que impeça a criação da maioria dos objetos no Mecanismo de Banco de Dados. Devido a essa possível elevação de credenciais, a função PolicyAdministratorRole deve ser concedida somente aos usuários que sejam confiáveis no controle da configuração do Mecanismo de Banco de Dados.

Os seguintes princípios de segurança se aplicam:

  • Um administrador de sistema ou proprietário de banco de dados pode assinar uma diretiva ou um grupo de diretivas para um banco de dados.

  • Os membros da função PolicyAdministratorRole podem habilitar ou desabilitar diretivas.

  • Os membros da função PolicyAdministratorRole podem criar diretivas que eles não têm permissão para executar ad hoc, mas que podem ser bem sucedidas quando forem executadas por outros usuários que tenham permissão suficiente.

    Observação sobre segurançaObservação sobre segurança

    Possível elevação de credenciais: os usuários na função PolicyAdministratorRole podem criar diretivas que contenham uma condição que use a função ExecuteSql ou ExecuteWql. Se um usuário que tenha permissões sysadmin executar posteriormente a diretiva, o Transact-SQL fornecido pelo Administrador de Diretivas será executado com a permissão sysadmin do usuário que a estiver executando.

  • A execução de diretiva ad hoc ocorre no contexto de segurança do usuário.

  • Diretivas com o modo de avaliação Ao agendar usam os trabalhos do SQL Server Agent de propriedade do logon de sa.

Considerações ao usar o Gerenciamento Baseado em Diretivas

Esteja ciente que as diretivas podem afetar como alguns recursos do SQL Server funcionam. Por exemplo, a captura de dados de alterações e a replicação transacional usam uma tabela systranschemas que não possui um índice. Se você habilitar uma diretiva em que todas as tabelas devem ter um índice, forçar a conformidade com a diretiva fará com que estes recursos falhem.