Esta contribuição tem o objetivo de apresentar como podemos a partir do Microsoft SQL Server 2008, implementar recursos de auditoria na camada de uma instância ou servidor Microsoft SQL Server, como também, na camada de banco de dados.

Através do uso do objeto Audit adicionado a partir da versão 2008, podemos aplicar em tempo real elementos de auditoria que nos permitem identificar cenários, comportamentos e situações que requerem atenção ou até mesmo mudanças de configuração em nosso ambiente.

O Bloco de Código 1 apresentado abaixo, ilustra como podemos fazer uso do objeto Audit, aplicando uma camada de auditoria e monitoramento em nosso instância Microsoft SQL Server em conjunto com uma auditoria específica no nível de banco de dados:

SQL
Edit|Remove
-- Criando o Banco de Dados -- 
Create Database Auditoria 
Go 
 
-- Acessando -- 
USE Auditoria 
Go 
 
-- Criando o Schema -- 
CREATE SCHEMA MeuSchema 
Go 
 
-- Criando a Tabela MeuSchema.Produtos -- 
Create Table MeuSchema.Produtos 
(Codigo Int Identity(1,1), 
  Descricao VarChar(20), 
  Saldo IntGo 
 
-- Criando a Tabela MeuSchema.Movimentacao -- 
Create Table MeuSchema.Movimentacao 
(Codigo Int Identity(1,1), 
 CodProduto Int, 
 TipoMovimentacao Char(1), 
 Valor IntGo 
 
-- Acessando o Banco de Dados Master -- 
USE Master 
Go 
 
-- Criando o Server Audit no Banco de Dados de Sistema - Master -- 
Create Server Audit MinhaAuditoriaDeServidor 
TO FILE (FILEPATH ='S:\MSSQL-2017\Auditoria'Go 
 
-- Ativando o Server Audit após a sua criação -- 
Alter Server Audit MinhaAuditoriaDeServidor 
WITH (STATE = ONGo 
 
-- Criando o Database Audit Specification no Banco de Dados Auditoria -- 
USE Auditoria 
Go 
 
-- MinhaAuditoriaDeBancoDeDados -- 
Create Database AUDIT SPECIFICATION MinhaAuditoriaDeBancoDeDados 
For Server AUDIT MinhaAuditoriaDeServidor 
Add (Select On Schema::MeuSchema BY public), 
Add (Insert On Schema::MeuSchema BY publicWith (State = OnGo 
 
-- Simular eventos de auditoria, através do comando Select e Insert -- 
Select * From MeuSchema.Produtos 
Go 
 
Select * From MeuSchema.Movimentacao 
Go 
 
Insert Into MeuSchema.Produtos (Descricao,SaldoValues ('Arroz',10Go 10 
 
-- Consultando os dados coletados e auditados pelo Server Audit -- 
Select * From fn_get_audit_file 
              ('S:\MSSQL-2017\Auditoria\MinhaAuditoriaDeServidor*.sqlaudit', 
              default,defaultGo 
 
-- Desativando a Server Audit -- 
Use Master 
Go 
 
Alter Server Audit MinhaAuditoriaDeServidor 
WITH (State = OffGo 
 
-- Desativando a Database Audit -- 
Use Auditoria 
Go 
 
Alter Database Audit SPECIFICATION MinhaAuditoriaDeBancoDeDados 
With (State = OffGo 
 
-- Removendo a Database Audit -- 
Drop Database Audit SPECIFICATION MinhaAuditoriaDeBancoDeDados 
Go 
 
-- Removendo a Server Audit -- 
Use Master 
Go 
 
Drop Server Audit MinhaAuditoriaDeServidor 
Go 
 
-- Tabelas e Visões de Sistemas -- 
-- Relação de Auditoria de Servidores -- 
Select * From sys.server_audits 
Go 
 
-- Relação de arquivos de auditoria -- 
Select * From sys.server_file_audits 
Go 
 
-- Especificações de auditoria -- 
Select * From sys.server_audit_specifications  
Go 
 
-- Detalhes sobre as especificações de auditoria -- 
Select * From sys.server_audit_specification_details  
Go 
 
-- Especificações sobre auditoria de banco de dados -- 
Select * From sys.database_audit_specifications  
Go 
 
-- Detalhes sobre as especificações de auditoria de bancos de dados -- 
Select * From sys.database_audit_specification_details  
Go 
 
-- Informações sobre os status de auditoria -- 
Select * From sys.dm_server_audit_status  
Go 
 
-- Informações sobre as ações de auditoria -- 
Select * From sys.dm_audit_actions  
Go 
 
-- Relação de objetos e tipos de objetos auditáveis -- 
Select * From sys.dm_audit_class_type_map  
Go
 Bloco de Código 1 - Apresentando os passos necessários para criar um Server Audit e Database Audit Specification.