AUDITORIA NO SGBD MICROSOFT SQL SERVER 2008 R2 WADSON DUARTE MONTEIRO 1 IREMAR NUNES DE LIMA 2 Resumo: Este artigo discute o processo de auditoria no Sistema Gerenciador de Banco de Dados SQL Server 2008 R2 e como iniciar uma auditoria em nível de Banco de Dados e Servidor numa instância SQL Server. Palavras-chave: Banco de Dados, Microsoft SQL Server 2008 R2, Auditoria. 1.0 INTRODUÇÃO Com o grande crescimento do volume de dados sigilosos e sensíveis dentro de uma empresa, torna-se imprescindível que haja um controle rigoroso sobre eles. Torna-se imprescindível que as instituições assegurem a integridade dos dados a fim de evitar transtornos através do uso do mecanismo de auditoria. Estas auditorias muitas vezes são previstas em lei ou fazem parte da política da empresa. De acordo com a MICROSOFT, auditoria é o conjunto de diversos elementos em um único pacote de um grupo específico de servidor ou ações de banco de dados, o qual quando combinadas produzem uma saída conhecida como auditoria. 1 Especialista em Banco de Dados e Business Intelligence ([email protected]). DBA, Mestre em Banco de Dados e Professor do Centro Universitário Newton Paiva ([email protected]). 2 2 Com o uso do recurso de auditoria do SQL Server 2008 os DBAs (Database Administrators) são capazes de monitorar o que se passa no banco de dados tornando possível identificar as ações que um determinado usuário fez num dado e como as informações foram acessadas. Em algumas instituições o uso da auditoria é obrigatório ou recomendado através de leis e/ou regulamentações como, por exemplo: 1. Lei Sarbanes-Oxley (SOXX): legislação americana que tem como principal objetivo recuperar a credibilidade de mercado de capitais. 2. Health Insurance Portability and Accountability Act (HIPAA): regulamentação americana que tem como principal objetivo assegurar a confidencialidade de dados na área de saúde, relativo aos pacientes. Na prática, tem sido muito difícil a utilização da auditoria, com necessidades de tempo maior e emprego de recursos, mas com o novo recurso de auditoria do Microsoft SQL Server 2008 é possível fazer uma auditoria mais integrada, padronizada e automatizada, assim aumentando a confiabilidade de auditoria com redução da sobrecarga do sistema global (LEITER, 2009). A versão do Microsoft SQL Server 2008 disponibiliza um novo recurso de auditoria que é exclusivo para esta necessidade e que faz um uso mais racional dos recursos. Nas versões anteriores eram utilizados os recursos de traces, triggers ou ferramenta de terceiros que poderiam ter um impacto negativo. Uma grande vantagem no uso do SQL Server audit é que ele permite fazer as configurações através do SQL Server Manager ou através de comandos Transact SQL (T-SQL). Existem diversas outras soluções que podem ser usados na auditoria do SQL Server 2008, possibilitando identificar pontos vulneráveis e de 3 alterações e monitoramento de acesso aos dados, como por exemplo: DDL trigger, profiler, trace, c2 audit mode. 2.0 COMPONENTES DE AUDITORIA NO SQL SERVER Com a ferramenta SQL Server Audit é possível criar especificações de auditoria granular, o qual é composto de 03 componentes (KLINE, 2010): 1. O objeto auditoria do SQL Server especifica o local de saída (aplicativo, arquivo ou log de eventos de segurança), com a opção para desligar o SQL Server se não puder ser escrita e um cenário que especifica a quantidade de milissegundos que pode passar antes das ações de auditoria serem processadas. Na tabela 1 estão descritos os grupos de ações de auditoria no nível da auditoria Tabela 01 - Grupos de Ações de Auditoria no Nível da Auditoria Nome do grupo de ação Descrição AUDIT_ CHANGE_GROUP Esse evento é gerado sempre que um dos comandos a seguir é emitido: 1. CREATE SERVER AUDIT 2. ALTER SERVER AUDIT 3. DROP SERVER AUDIT 4. CREATE SERVER AUDIT SPECIFICATION 5. ALTER SERVER AUDIT SPECIFICATION 6. DROP SERVER AUDIT SPECIFICATION 7. CREATE DATABASE AUDIT SPECIFICATION 8. ALTER DATABASE AUDIT SPECIFICATION 4 9. DROP DATABASE AUDIT SPECIFICATION Fonte: http://msdn.microsoft.com/pt-br/library/cc280663.aspx 2. O objeto especificação da auditoria do servidor contém as definições de eventos como logins do servidor. Na tabela 02 estão descritos os grupos de ação da auditoria do servidor. Tabela 02 – Grupos de Ação de Auditoria do Servidor Nome do grupo de ação SUCCESSFUL_LOGIN_GROUP LOGOUT_GROUP FAILED_LOGIN_GROUP LOGIN_CHANGE_PASSWORD_GROUP APPLICATION_ROLE_CHANGE_PASSWORD_GROUP SERVER_ROLE_MEMBER_CHANGE_GROUP DATABASE_ROLE_MEMBER_CHANGE_GROUP BACKUP_RESTORE_GROUP DBCC_GROUP SERVER_OPERATION_GROUP 5 DATABASE_OPERATION_GROUP AUDIT_ CHANGE_GROUP SERVER_STATE_CHANGE_GROUP SERVER_OBJECT_CHANGE_GROUP SERVER_PRINCIPAL_CHANGE_GROUP DATABASE_CHANGE_GROUP DATABASE_OBJECT_CHANGE_GROUP DATABASE_PRINCIPAL_CHANGE_GROUP SCHEMA_OBJECT_CHANGE_GROUP SERVER_PRINCIPAL_IMPERSONATION_GROUP DATABASE_PRINCIPAL_IMPERSONATION_GROUP SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP DATABASE_OWNERSHIP_CHANGE_GROUP DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP SERVER_PERMISSION_CHANGE_GROUP 6 SERVER_OBJECT_PERMISSION_CHANGE_GROUP DATABASE_PERMISSION_CHANGE_GROUP DATABASE_OBJECT_PERMISSION_CHANGE_GROUP SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP DATABASE_OBJECT_ACCESS_GROUP SCHEMA_OBJECT_ACCESS_GROUP BROKER_LOGIN_GROUP DATABASE_MIRRORING_LOGIN_GROUP TRACE_CHANGE_GROUP Fonte: http://msdn.microsoft.com/pt-br/library/cc280663.aspx 3. O objeto especificação de auditoria de banco de dados contém definições do evento em nível de banco de dados, tais como modificações de esquema, criação de objetos e outras ações. Na tabela 03 estão descritos os grupos de ação da Auditoria de Banco de Dados. Tabela 03 – Grupo de Auditoria de Banco de Dados Nome do grupo de ação DATABASE_ROLE_MEMBER_CHANGE_GROUP 7 DATABASE_OPERATION_GROUP DATABASE_CHANGE_GROUP DATABASE_OBJECT_CHANGE_GROUP DATABASE_PRINCIPAL_CHANGE_GROUP SCHEMA_OBJECT_CHANGE_GROUP DATABASE_PRINCIPAL_IMPERSONATION_GROUP DATABASE_OWNERSHIP_CHANGE_GROUP DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP DATABASE_PERMISSION_CHANGE_GROUP DATABASE_OBJECT_PERMISSION_CHANGE_GROUP SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP DATABASE_OBJECT_ACCESS_GROUP SCHEMA_OBJECT_ACCESS_GROUP Fonte: http://msdn.microsoft.com/pt-br/library/cc280663.aspx Ações no nível de banco de dados oferecem suporte à auditoria de ações específicas conforme citadas na tabela 04. 8 Tabela 04 – Ações de Auditoria no Banco de dados Ação Descrição SELECT Esse evento é gerado sempre que SELECT é emitido. UPDATE Esse evento é gerado sempre que UPDATE é emitido. INSERT Esse evento é gerado sempre que INSERT é emitido. DELETE Esse evento é gerado sempre que DELETE é emitido. EXECUTE Esse evento é gerado sempre que EXECUTE é emitido. RECEIVE Esse evento é gerado sempre que RECEIVE é emitido. REFERENCES Esse evento é gerado sempre que uma permissão REFERENCES é verificada. Fonte: http://msdn.microsoft.com/pt-br/library/cc280663.aspx Ao ser feita auditoria os resultados são gerados no destino que podem ser arquivo, log de eventos de segurança do Windows ou o log de eventos de aplicativo do Windows, sendo de extrema importância verificar constantemente se o disco tem espaço suficiente, pois o SQL Server Audit grava constantemente nas logs. Segundo a MICROSOFT (2011) ao gravar no log de segurança do Windows é necessário que a conta de serviço do SQL Server seja adicionada à política gerar auditorias de segurança, entre os quais Sistema Local, Serviço Local e Serviço de Rede. Para impedir que um arquivo com informações de auditoria seja 9 falsificado é recomendado que seja restringido o acesso ao local do arquivo das seguintes maneiras (MICRSOFT, 2011)3: 1. A conta de Serviço SQL Server deve ter permissão de leitura e gravação. 2. Os Administradores de Auditoria geralmente requerem permissão de leitura de gravação, então é presumido que os Administradores de Auditoria sejam contas do Windows para a administração de arquivos de auditoria. 3. Os leitores de Auditoria que são autorizados a ler os arquivos de auditoria precisam ter permissão de leitura. Importante destacar que as operações de leitura não são bloqueadas pelo mecanismo de Banco de Dados e a gravação no log de segurança não está disponível no Windows XP. 2. FAZENDO AUDITORIA PELO MANAGMENT STUDIO Para criação de um SQL Server Audit pode-se fazer pelo Managment Studio ou pelo Transact SQL. O primeiro passo é criar o objeto responsável em coletar os dados e ações do servidor ou banco de dados, no segundo passo é feita a associação de um Audit Specification determinando onde armazenar as informações podendo ser do tipo Server ou Database e o terceiro passo é definir o local onde os eventos serão escritos (Arquivo, Log de Segurança, Log de Aplicação). 3.1. Criação do Sql Server Audit Para criar o SQL Server Audit no SSMS (SQL Server Managment Studio), na janela Object Explorer deve-se clicar no item Security e em seguida no item Audit, então clica 3 http://msdn.microsoft.com/pt-br/library/cc280386.aspx 10 com o botão direito do mouse e seleciona a opção New Audit conforme mostrado na Figura 01. Figura 01: Criação da Server Audit Fonte: Próprio autor Conforme Figura 02, dentro da janela create Audit, no campo Audit Name deve ser preenchido o nome da Auditoria. No campo Queue Delay é informado o valor que indica de quanto em quanto tempo será descarregado antes das ações de auditoria serem processadas. No campo Maximum Rollover é informado o número de arquivos que vão ser gerados e em Maximum File Size é informado a quantidade de espaço em disco reservado para cada arquivo gerado para a auditoria. No campo File Path é informado o local onde os arquivos serão gerados. Se a opção Shut Down Server on Audit Log Failure for selecionada, caso haja tentativa de escrever no arquivo de auditoria e ocorrer uma falha ele vai parar o serviço, evitando assim falhas de auditoria. 11 Figura 02: Configuração da Server Audit Fonte: Próprio autor Por Default o Audit é criado desabilitado, tornando-se necessário habilitá-lo. Para isto deve-se clicar com o botão direito sobre a Audit criada e escolher a opção Enable Audit, conforme Figura 03. 12 Figura 03: Habilitando o Audit Fonte: Próprio autor 3.2. Criação da Audit Especification Para que saiba onde armazenar as informações é necessário que um Audit Especification seja associado a um objeto SQL Server Audit que pode ser do tipo Server ou Database. 3.2.1. Criando um SQL Server Audit do Tipo Database Para criar um SQL Server Audit do tipo Database deve-se selecionar o banco de dados que deseja auditar, expandir o nó Security e clicando com o botão direito do mouse sobre Database Audit Especification, e selecionando a opção New Database Audit Especification. Na janela Create Database Audit Especification deve ser informado o nome para o Database Especification e no campo Audit selecionar a auditoria (Figura 04). Figura 04: Especificando o nome e a auditoria para o Audit Especification Fonte: Próprio autor Na seção Actions no item Audit Action Type deve ser selecionado qual ação deve ser auditada. No item Object Class seleciona a classe do objeto. No item Object Name seleciona qual Database será editado. No item Principal Name seleciona quem será editado, tendo as opções de selecionar roles e usuários (Figura 05). 13 Figura 05: Editando os itens da Seção Actions Fonte: Próprio autor Após a criação de todos os filtros necessários para a auditoria do banco de dados é necessário habilitar o Database Specification, o qual deve ser habilitado através da janela Object Explorer clicando DatabaseAuditEspecification com e o botão selecionando direito a do opção mouse sobre a opção Enable Database Audit Especification. 3.2.2. Criando um SQL Server Audit do Tipo Database Para criar um SQL Server Audit do tipo Server deve-se clicar com o botão direito no item Server Audit Especification que está dentro do nó Security e escolher a opção New Server Audit Especification (Figura 06). Figura 06: Criando um Server Audit do tipo Server Fonte: Próprio autor 14 Na janela Create Server Audit Especification, no campo Name deve-se informar o nome do Server Audit Especification e no campo Audit escolher qual Server Audit ele deve-se associar. Na Seção Actions no item Audit Action Type deve-se selecionar qual ação deve ser auditada com ações a nível do Servidor. Os outros itens deve seguir o mesmo procedimento utilizado na criação do Server Audit tipo Database (Figura 07). Figura 07: Editando itens para o Server Audit Especification Fonte: Próprio autor Segundo Kline (KLINE, 2010) uma característica importante da auditoria no SQL Server 2008 é que a auditoria do nível de banco de especificações estão definidas no próprio banco de dados, pois se o banco de dados é movido a partir de um servidor para outro, a especificação de auditoria de nível de banco de dados será mover para o novo servidor. 4.0 CONCLUSÃO O uso de auditoria em banco de dados é de extrema importância, pois diversas regras e regulamentações são impostas tornando-se cada vez mais importante o uso desta técnica para assegurar como o banco de dados está sendo utilizado pelos seus usuários tornando transparentes as alterações e modificações feitas sobre ele. E para suprir a necessidade do 15 uso desta técnica, o novo recurso de Auditoria no SQL Server 2008 R2 permite que o banco de dados seja auditado de forma limpa, com bom desempenho, o que não ocorria nas anteriores que utilizavam recurso de triggers, traces ou ferramentas de terceiros. 16 REFERÊNCIAS KLINE, Kevin. SQL Server 2008 Administration in Action. Greenwick: Manning, 2010. 466 p. LEITER, Chris et al. Beginning Microsoft Sql Server 2008 Administration. Indianapolis: Wiley Publishing, 2009. 781 p. MAGALHÃES, Vladimir Michel Bacurau. Auditoria no Sql Server 2008. Disponível em: <http://www.devmedia.com.br/post-15220-Auditoria-no-SQLServer-2008.html> Acesso em: 11 fev. de 2011. SIMMONS, Ken; Carstarphen, Sylvester. Pro Sql Server 2008 Administration. New York: Jonathan Gennick, 2009. 593 p. SQL MAGAZINE. Devmedia. Disponível em: <http://www.devmedia.com.br> Acesso em: 11 nov. de 2010. BIBLIOTECA MSDN. Criptografia do SQL Server. Disponível em < http://msdn.microsoft.com/pt-br/library/bb510663.aspx> Acesso em: 11 nov. de 2010.