Declarative Management Framework

Um dos recursos mais aguardados do SQL Server 2008 para os administradores é o Declarative Management Framework. Trata-se de um sistema de gerenciamento baseado em políticas que, através de objetos reutilizáveis, permite que se configure o SQL Server e seus componentes em aderência a políticas de governança das empresas. Por exemplo: digamos que a política de uma empresa define que o Database Mail não deve estar habilitado em um grupo de servidores SQL Server, ou que todas as tabelas criadas em um banco de dados não podem pertencer ao schema dbo – ou ainda melhor, que todas as tabelas precisem seguir um padrão de nomenclatura. O Declarative Management Framework ajuda os administradores a chegar a este nível de granularidade na administração de seus servidores. Vamos falar sobre alguns conceitos chave do Declarative Management Framework e em seguida para um exemplo rápido.

O SQL Server Management Studio é a ferramenta utilizada para trabalhar com o Declarative Management Framework. Pode-se criar políticas para prevenir mudanças que violem as suas normas, alertar e logar mas permitir a mudança, e pode-se agendar a verificação de aderência a políticas (neste caso, quaisquer exemplos não-aderentes são também apenas logados). Imagine se seu sistema pudesse enviar uma mensagem ao desenvolvedor ou administrador quando estes tentam criar objetos com nomes que não sigam a convenção imposta pela sua empresa, dizendo como deve ser o nome correto – as políticas do Declarative Management Framework também permitem isto. Vamos então aos principais conceitos do Declarative Management Framework:

· Facets – são objetos que contém propriedades que expõe uma área gerenciável. Por exemplo, a facet Surface Area inclui propriedades que são relacionadas aos recursos do SQL Server como Database Mail Enabled, e CLR Integration Enabled;

· Conditions – expressam o estado de uma facet. Por exemplo: pode-se criar uma condição chamada “Área de Ataque Reduzida” onde todas as propriedades da facet Surface Area são definidas como False;

· Policies – aplica uma condição em um ou mais Targets (definido mais adiante). Como um exemplo, pode-se criar uma policy chamada “Servidores Protegidos” que aplica a condição “Area de Ataque Reduzida” a um servidor;

· Categories – é um agrupamento de policies. Digamos que se criem diversas policies com exigências em bancos de dados novos, como padrões de nome de tabelas ou stored procedures, exigência sobre o Compatibility Level do banco de dados ou outros. Pode-se atribuir os bancos de dados a Categories para que eles sejam aderentes a um conjunto de policies. Por padrão, todos os bancos de dados pertencem a default category.

· Targets – são entidades como servidores, bancos de dados, logins, tabelas ou qualquer outro objeto sobre os quais se aplica uma policy. Pode também ser uma hierarquia, como “Todos os Objetos do Schema ‘Produtos’”.

Para definir uma política (policy), simplesmente especifique a condição (condition) que você quer aplicar e selecione uma facet.

É importante o entendimento destes conceitos para que se possa fazer o melhor uso do Declarative Management Framework. Este sistema viabiliza de uma forma muito fácil a re-utilização de qualquer regra, condição ou objeto definido em uma política. O SQL Server 2008 já vem com uma série de facets pré-definidas que você pode utilizar para configurar seus servidores. Aí vão alguns exemplos de utilização das facets que já vem com o produto e um cenário onde você pode utilizá-la:

· A Facet Server pode ser utilizada para forçar configurações específicas do nível do servidor, como o modo de autenticação;

· A Facet Surface Area pode ser utilizada para controlar quais recursos estão habilitados a fim de se reduzir a área de ataque;

· A Facet Database pode ser utilizada para restringir configurações específicas de um banco de dados, como o Compatibility Level;

· A Facet Multipart Name ajuda a garantir a aderência de nomenclatura dos objetos dos bancos de dados como tabelas, views e stored procedures.

Nunca é demais lembrar que uma category pode ser publicada para outros servidores em seu ambiente, o que reduz drasticamente o esforço de administração e a possibilidade de se ter servidores com políticas diferentes.

Exemplos de Utilização

Tendo falado sobre os conceitos do Declarative Management Framework, vamos um exemplo passo a passo de utilização das políticas. Este exemplo verifica se o servidor está configurado para permitir a utilização do CLR (Common Language Runtime) e de queries Ad Hoc. Para isto, siga os seguintes passos:

1) Abra o SQL Server Management Studio. No Object Explorer, clique em Management -> Policy Management -> Facets. Aqui você já pode visualizar todas as facets que foram criadas e as que o SQL Server 2008 traz por padrão. Para este exemplo, clique com o botão direito na facet Surface Area Configuration e clique em New Condition;

2) Na caixa Name, digite “Area de Ataque Reduzida” ou o nome que preferir. Perceba que a caixa Facet já mostra “Surface Area Configuration” ;

3) Em Expression, no campo Field, selecione ”@ClrIntegrationEnabled” . Em Operator, selecione “=” e em Value “False” ;

4) Na linha seguinte, em Field selecione ”@AdHocRemoteQueriesEnabled” . Em Operator, selecione “=” e em Value, “False” . A janela deve ficar como ilustrado na figura abaixo. Até aqui, criamos uma condição sobre uma facet;

080121-fig1

5) Para criar a política, clique com o botão direito novamente em Surface Area Configuration e clique em New Policy;

6) No campo Name, digite “Desativados por padrão” . Na caixa Check Condition, selecione “Area de Ataque Reduzida” (que está sob “Surface Area Configuration” ) ;

7) Clique na tab Description. Em Category, clique em New. Digite “Servidores com configuração restrita” e clique em Ok. Digite uma descrição para esta categoria, como preferir – estas informações estarão disponíveis aos administradores quando a política for violada. Clique em OK.

NOTA: Perceba que esta política será utilizada sob demanda. Você poderia também habilitar a caixa Enabled e em Execution Mode selecionar “On Schedule” para que ela fosse executada automaticamente.

Agora que criamos a política, vamos executar e ver o resultado.

1) No Object Explorer, clique com o botão direito sobre um servidor e selecione Policy -> Run Now;

080121-fig2

2) Na caixa Run Now, selecione a política que foi criada (neste caso, “Desativados por padrão” ) na caixa From Server e clique em Check.

Perceba que a política avalia a configuração dos servidores e indica se estão sendo violadas ou não. Neste exemplo, como você pode ver na figura abaixo, apenas uma das políticas foi violada. 

080121-fig3

Vamos utilizar a mesma interface para FORÇAR a aderência a esta política. Para isto, simplesmente clique no botão Configure, na caixa Run Now. Verifique que agora os servidores passam no teste das políticas.

080121-fig4

A figura abaixo  mostra um exemplo do resultado de uma violação de política de nomenclatura de objetos. Se você gostaria de saber como criei este exemplo, deixe um comentário aqui e eu envio diretamente.

080121-fig5

Este tipo de política pode ser aplicada ao servidor inteiro ou a bancos de dados em particular, de forma restritiva (impedindo a continuação da mudança) ou de forma informativa.

Resumo

O Declarative Management Framework é um dos recursos mais aguardados do SQL Server 2008. Ele dá ao administrador de banco de dados recursos que ajudam na segurança dos servidores e na aderência de padrões estabelecidos pelo negócio de uma forma simples e centralizada.