CÓDIGO DA SESSÃO: DBP302 Auditoria de um ambiente SQL Server 2008 R2 Nilton Pinheiro Microsoft MVP | MCITP | MCSE | MCDBA | MCTS http://www.mcdbabrasil.com.br/ http://www.twitter/nilton_pinheiro (niltonpinheiro é pirata :) ) Herleson Pontes MCT | MCITP | MCSA | MCTS http://www.herlesonpontes.com.br/ http://www.twitter.com/herlesonpontes Agenda Visão Geral Auditoria nas versões anteriores Auditando Dados com Tabela Espelho Cláusula OUTPUT Default Trace (Profiler) DDL Triggers Event Notification Auditoria no SQL Server 2008 R2 Change Tracking Change Data Capture SQL Audit 2 Visão Geral Porque auditar uma solução de dados? Auditar modificações de schema Auditar modificações de dados Analisar as atividades realizadas no seu banco e detectar possíveis falhas na segurança (Quem acessou seu dados e quando?) Diagnosticar falhas ocasionadas por alterações na configuração do servidor (Quando a configuração mudou?) Entender a utilização dos dados da sua base por parte dos usuários do sistema Atender a requisitos de auditoria SOX 3 Auditoria nas versões anteriores Auditando Dados com Tabela Espelho Técnica bastante utilizada nas auditorias de dados SQL Server 2000 ou anteriores Auditoria de Operações DML Consiste em ter tabelas idênticas com triggers monitorando as operações A tabela espelho armazena os dados afetados pelas operações Fácil introdução de erros no processo Requer alteração no modelo lógico Impacto na performance (cuidado com as triggers!!) 4 Exemplo 5 Auditoria nas versões anteriores Auditando dados com a cláusula OUTPUT Auditoria de Dados no SQL Server 2005 SQL Server 2005 e superiores Auditoria de Operações DML Ainda requer a utilização de tabela espelho A tabela espelho armazena os dados afetados pelas operações Requer alteração de código das operações Impacto em performance é praticamente zero Não requer uso de triggers !! 6 Exemplo OUTPUT 7 Exemplo INSERT 8 Exemplo UPDATE 9 Exemplo DELETE 10 Auditoria nas versões anteriores Default Trace Auditoria de operações DDL e eventos de trace Disponível a partir do SQL Server 2005 ON por default e controlado pela sp_configure ‘default trace enable’ Armazenado no mesmo caminho que o Error Log Caminho pode ser alterado pelo parâmetro de inicialização -e utilizando o SSCM Captura principalmente eventos relacionados a auditoria A função fn_trace_gettable foi melhorada para permitir ler o arquivo ainda em execução 11 Exemplo Default Trace 12 Auditoria nas versões anteriores DDL Triggers Utilizada para auditar operações DDL Disponível no SQL Server 2005 e superiores São disparadas em resposta aos eventos DDL Atua no nível servidor ou banco de dados (Ex. ALTER TABLE, DROP TABLE, ALTER LOGIN, DROP LOGIN) Ao invés da tabelas Inserted e Deleted, utiliza-se a funcão EVENTDATA() para capturar informações sobre os eventos (em formato XML) Possibilita impedir a execução de operações DDL Permite monitorar as alterações de schemas É síncrono !!! 13 Exemplo DDL Triggers 14 Auditoria nas versões anteriores Event Notification Auditoria de operações DDL e eventos Disponível no SQL Server 2005 e superiores Sistema de envio de mensagens utilizando a infraestrutura do Service Broker Atua capturando eventos que ocorrem no nível servidor ou banco de dados Além dos eventos DDL disponíveis nas DDL Triggers, o Event Notification também permite a captura de eventos de trace como: Audit_Login, Audit_Login_Failed, Lock_Deadlock, Data_File_Auto_Grow, Blocked_Process_Report É assíncrono !!! 17 Auditoria nas versões anteriores Event Notification Criação de um Event Notification Criar uma FILA (QUEUE) Criar um SERVIÇO (SERVICE) em uma FILA Criar uma ROTA (ROUTE) para o SERVIÇO Criar um EVENT NOTIFICATION para um SERVIÇO Criar um SERVICE PROGRAM para processar as notificações existentes na FILA Para a auditoria de eventos de nível servidor, usuário guest deve ter acesso ao msdb EXEC('use msdb CREATE USER guest') DENY EXECUTE,SELECT,INSERT,UPDATE,DELETE ON DATABASE::msdb to guest 18 Event Notification 19 Agenda Visão Geral Auditoria nas versões anteriores Auditando Dados com Tabela Espelho Cláusula OUTPUT Default Trace (Profiler) DDL Triggers Event Notification Auditoria no SQL Server 2008 R2 Change Tracking Change Data Capture SQL Audit 20 Auditoria no SQL Server 2008 R2 Novos recursos para auditoria O SQL Server 2008 R2 trás três tecnologias distintas de auditoria Cada uma responde a diferentes questões sobre as modificações realizadas Estas tecnologias permitem o desenvolvimento de uma solução robusta de dados Integração com o Windows Server 2008 R2 21 Change Tracking Visão geral do recurso Recurso que armazena informações sobre as modificações feitas nos registros de uma tabela O rastreamento das alterações se dá através do número da versão de um registro Disponível em todas as edições (inclusive Express) Exibe as mudanças feitas nos registros da tabela Os dados sobre as modificações são armazenados em tabelas do sistema do próprio banco O administrador define quais tabelas terão suas alterações gerenciadas por este recurso 22 Change Tracking Principais características Permite visualizar quais registros foram afetados, as colunas envolvidas neste processo e as operações que modificaram esses registros Dados sobre as modificações são vinculadas aos registros da tabela através da chave primária Entretanto, este recurso não exibe como os dados foram alterados e nem o usuário que os alterou As alterações são gravadas de acordo com a execução das transações A tabela é populada de forma síncrona 23 Change Tracking Arquitetura interna Database Commit Table • xact_id: Identificador da transação • commit_ts: Horário da gravação Tabela Base • xact_id: Identificador da última transação que modificou o registro (campo oculto) 24 Change Table • • • • xact_id xact_sequence xact_operation PK do registro modificado Change Tracking Etapas durante a execução de transações 25 Quando uma transação é iniciada, o atributo xact_id é gerado Em seguida, quando os registros da tabela base são modificados, o xact_id da transação é utilizado pelas tabela base e modificação Por fim, quando a transação faz o commit, o atributo commit_ts é então gerado Change Tracking Configuração Nível Banco de Dados ALTER DATABASE AdventureWorks SET CHANGE_TRACKING = ON; Ativa o banco de dados para registrar as alterações Recomendado ativar o SNAPSHOT ISOLATION Nível de tabela ALTER TABLE HumanResources.Employee ENABLE CHANGE_TRACKING; Diz ao QE para monitorar as mudanças na tabela Permite identificar quais colunas foram referenciadas em um UPDATE 26 Change Tracking 27 Change Data Capture Visão geral do recurso Recurso que armazena informações sobre as modificações nos registros de uma tabela e mostra como os dados foram alterados O rastreamento das alterações se dá através do acesso ao log de transações do banco de dados Os dados sobre as modificações são copiados para tabelas pertencentes a um esquema chamado cdc, localizado no banco de dados auditado Disponível apenas nas edições Enterprise, Developer e Datacenter 28 Change Data Capture Principais características Permite visualizar o histórico das alterações efetuadas nos registros de uma tabela Exibe como os valores de um registro foram alterados dentro de um intervalo de LSN Este recurso não exibe o usuário que realizou as modificações O SQL Server fornece funções que permitem ao administrador resgatar o intervalo LSN desejado a partir do arquivo de log de transações 29 Change Data Capture Processo de gerenciamento das modificações As alterações são gravadas em intervalos de tempo após a execução das transações Utiliza o agente log reader (Replicação) Cria duas tarefas no SQL Server Agent Uma para iniciar o agente de leitura do log Outro para remover alterações expiradas 30 Change Data Capture Configuração Nível Banco de Dados EXEC sys.sp_cdc_enable_db Ativa o CDC no metadado Cria um database schema chamado “cdc” Cria tabelas no schema Cria dois jobs: Um para disparar o log reader Um para expurgar dados históricoss Nível de tabela EXEC sys.sp_cdc_enable_table Ativa o CDC para uma dada tabela Cria uma tabela e duas funções no schema “cdc” 31 Change Data Capture 32 SQL Audit Visão geral do recurso Recurso que armazena informações sobre eventos realizados no servidor e os seus respectivos usuários Realiza auditoria granular de eventos executados nos níveis de servidor e banco de dados Permite salvar as informações do rastreamento em arquivo, no log de segurança e no log de aplicações Disponível somente nas edições Enterprise, Developer e Datacenter 33 SQL Audit Principais características Armazena informações detalhadas sobre a execução de diversos eventos, com seus respectivos usuários Cada evento é chamado de action, e pode ser classificado em três categorias: Servidor, Banco de Dados e Auditoria Este recurso não exibe o estado dos objetos e dados antes das modificações 34 Eventos envolvendo vários registros possuem uma coluna que mostra a sequência da execução dos eventos SQL Audit Arquitetura Alvo (Destino) Auditoria no Servidor 35 Auditoria no Banco de Dados SQL Audit 36 37 Conteúdo relacionado DBP308 Sincronizando dados com a nuvem através do SQL Azure Data Sync e Sync Framework 2.0 DBP304 Distribuição e gerenciamento de aplicações data-tier dentro do SQL Server 2008 R2 Daniel Camilo DBP303 Boas práticas para upgrade do Microsoft SQL Server 2000 - 2005 - 2008 2008 R2 DBP305 Estratégias para otimizar a concorrência dentro do Microsoft SQL Server 2008 R2 http://www.herlesonpontes.com.br - @herlesonpontes http://www.mcdbabrasil.com.br - @nilton_pinheiro 38 © 2008 Microsoft Corporation. Todos os direitos reservados. Microsoft, Windows, Windows Vista e outros nomes de produtos são ou podem ser marcas registradas e/ou marcas comerciais nos EUA e/ou outros países. Este documento é meramente informativo e representa a visão atual da Microsoft Corporation a partir da data desta apresentação. Como a Microsoft deve atender a condições de mercado em constante alteração, este documento não deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão de qualquer informação fornecida após a data desta apresentação. A MICROSOFT NÃO DÁ QUALQUER GARANTIA, SEJA ELA EXPRESSA, IMPLÍCITA OU ESTATUTÁRIA, REFERENTE ÀS INFORMAÇÕES DESTA APRESENTAÇÃO. Por favor preencha a avaliação