Artigo SQL Magazine 71 - Auditoria no SQL Server 2008
Este recurso tem como principal objetivo garantir que toda ação que precise ser auditada seja registrada pelo SGBD.
Em toda situação que é necessário garantir a integridade de uma determinada informação de um banco de dados, deixando aberta a possibilidade de demonstrar quem e quando, inseriu ou alterou uma determinada informação. Ambientes que passem por auditoria, principalmente aqueles que precisam se adequar a regulamentações. [/lead]
Imagine que você trabalha em uma escola onde os softwares são desenvolvidos internamente. Uma das principais preocupações da instituição é com as notas dos alunos, que não podem, de forma alguma, serem alteradas indevidamente.
Considerando a estrutura da empresa, é possível que professores e funcionários administrativos, através do sistema, e até mesmo alguns desenvolvedores, que possuem acesso a base de produção, possam alterar as notas dos alunos.
Se algum dia uma nota for alterada indevidamente, e for requisitado informar quem fez a alteração, o que podemos fazer? Normalmente, para conseguirmos tal informação implementávamos uma estrutura de auditoria através do próprio sistema, o que aumenta o acoplamento com o mesmo, ou então através de triggers, que causavam um certo impacto na performance e nos força a alterar a estrutura a cada nova tabela que precisa ser auditada, ou até mesmo com o SQL Trace, que é um recurso de coleta e monitoramento de eventos em uma instância do SQL Server.
Vale lembrar que uma série de leis e/ou regulamentações de proteção de dados hoje exigem ou recomendam algum tipo de auditoria, entre elas:
• Sarbanes-Oxley: lei americana que visa aumentar a transparência e responsabilização por atos de companhias;
• HIPAA, que pretende assegurar a confidencialidade e integridade de dados de informações na área da saúde;
• European Union Data Protection Directive, que visa garantir a privacidade de informações dos cidadãos, em países membros da União Européia, dentre outras.
Apesar de serem normas estrangeiras, muitas destas atingem empresas situadas em nosso país, principalmente as que desejam abrir seu capital em bolsa de valores.
A partir da versão 2008, o SQL Server traz uma ferramenta de auditoria nativa, o SQL Server Audit, que permite auditar as informações de uma forma fácil, granular e com menor impacto na performance do banco de dados.
Ao longo deste artigo, iremos abordar formas de implementar uma auditoria de banco de dados e como esta se comporta em determinadas situações.
[subtitulo]SQL Server Audit[/subtitulo]
Auditar um banco de dados significa examinar informações registradas sobre ações ou eventos que ocorreram no mesmo.
O SQL Server Audit é um novo recurso, introduzido na versão 2008 e presente apenas na edição Enterprise, com o propósito de permitir que os Administradores de Bancos de Dados (DBAs) possam acompanhar e registrar informações sobre aquilo que se passa em seus bancos de dados. Com ele, os DBAs podem descrever quem e quando efetuou uma determinada ação ou alterou um determinado dado presente no banco de dados, garantindo assim que as informações ali representadas são íntegras, ou até mesmo responsabilizar os responsáveis por alterações indevidas e/ou incorretas. Trabalhar com o recurso de auditoria do SQL Server é muito fácil, além de que este recurso nos fornece uma série de opções, como permitir definir o local armazenamento e acesso as informações auditadas.
Comparado com a auditoria através de Traces, estudos mostram uma melhoria entre 11% e 45%. Outra vantagem do SQL Server Audit é que ele pode ser configurado tanto através de comandos T-SQL como também através do SQL Server Management Studio.
Para configurar a auditoria, temos que passar por duas fases: (1) criar um SQL Server Audit e (2) criar um Audit Specification, que pode ser de Server ou Database e cuja diferença explicaremos mais adiante neste artigo.
[subtitulo]Estudo de Caso – Auditoria de Alterações nas Notas de Alunos[/subtitulo]
Voltando para o exemplo do início do artigo, queremos então auditar as alterações nas notas dos alunos da escola. Para isso, seguiremos as fases requeridas pela ferramenta SQL Server Audit.
Devemos então começar criando um objeto SQL Server Audit, que é responsável por coletar as ações e grupos de ações do servidor ou banco de dados que serão coletados. Vale lembrar que é possível ter vários Audits por instância, mas para o nosso caso não será necessário.