Auditoria em um servidor de banco de dados SQL Server
- CloudDB
- 1 de jul. de 2023
- 3 min de leitura
USE MASTER
-- Criar uma auditoria
CREATE SERVER AUDIT AuditDML
TO FILE (FILEPATH = 'C:\SQL_AUDIT\')
WHERE ([server_principal_name] <> 'teste')
AND ([server_principal_name] <> 'DOMINIO\LOGIN');
-- Iniciar a auditoria
ALTER SERVER AUDIT AuditDML WITH (STATE = ON);
-- Criar uma especificação de auditoria
USE BANCO_AUDITADO --INFORMAR O BANCO A SER AUDITADO
CREATE DATABASE AUDIT SPECIFICATION AuditDML
FOR SERVER AUDIT AuditDML
ADD (DELETE ON DATABASE::BANCO_AUDITADO BY PUBLIC), --INFORMAR O BANCO A SER AUDITADO
ADD (INSERT ON DATABASE::BANCO_AUDITADO BY PUBLIC), --INFORMAR O BANCO A SER AUDITADO
ADD (UPDATE ON DATABASE::BANCO_AUDITADO BY PUBLIC); --INFORMAR O BANCO A SER AUDITADO
-- Ativar a especificação de auditoria
ALTER DATABASE AUDIT SPECIFICATION AuditDML WITH (STATE = ON);
---------------------------------------------------------------------------------
--Após a auditoria criada, consultar ela com os scripts abaixo
--Listar as auditorias existentes
SELECT * FROM sys.server_file_audits
GO
-- Listar os arquivos criados pela auditoria
SELECT * FROM sys.fn_get_audit_file('C:\SQL_AUDIT\*', NULL, NULL)
--WHERE session_server_principal_name = 'LOGIN_ESPECIFICO';
GO
--Listar as auditorias, informar o status e tamanho dos arquivos em bytes
SELECT * FROM sys.dm_server_audit_status
---------------------------------------------------------------------------------
O script fornecido realiza uma auditoria em um servidor de banco de dados SQL Server. Vamos analisar o script passo a passo:
USE MASTER: Esta declaração define o contexto do banco de dados como "master". O banco de dados "master" é um banco de sistema que contém informações sobre todos os outros bancos de dados no servidor.
CREATE SERVER AUDIT AuditDML TO FILE (FILEPATH = 'C:\SQL_AUDIT\') WHERE ([server_principal_name] <> 'teste') AND ([server_principal_name] <> 'DOMINIO\LOGIN');: Esta instrução cria uma auditoria de servidor chamada "AuditDML" e especifica que os logs de auditoria devem ser armazenados em arquivos em um diretório específico ('C:\SQL_AUDIT'). A cláusula "WHERE" filtra os eventos de auditoria com base no nome do principal do servidor. Neste caso, os eventos não serão registrados se o nome do principal do servidor for "teste" ou "DOMINIO\LOGIN".
ALTER SERVER AUDIT AuditDML WITH (STATE = ON);: Esta instrução inicia a auditoria do servidor chamada "AuditDML". Define o estado da auditoria como "ON", o que significa que a auditoria está ativada e começará a registrar os eventos especificados.
USE BANCO_AUDITADO --INFORMAR O BANCO A SER AUDITADO: Esta declaração define o contexto do banco de dados como "BANCO_AUDITADO". Substitua "BANCO_AUDITADO" pelo nome real do banco de dados que você deseja auditar.
CREATE DATABASE AUDIT SPECIFICATION AuditDML FOR SERVER AUDIT AuditDML ADD (DELETE ON DATABASE::BANCO_AUDITADO BY PUBLIC), ADD (INSERT ON DATABASE::BANCO_AUDITADO BY PUBLIC), ADD (UPDATE ON DATABASE::BANCO_AUDITADO BY PUBLIC);: Esta instrução cria uma especificação de auditoria de banco de dados chamada "AuditDML" para a auditoria do servidor "AuditDML". Ela especifica que os eventos de exclusão, inserção e atualização no banco de dados especificado ("BANCO_AUDITADO") devem ser registrados pela auditoria.
ALTER DATABASE AUDIT SPECIFICATION AuditDML WITH (STATE = ON);: Esta instrução ativa a especificação de auditoria do banco de dados "AuditDML". Define o estado da especificação de auditoria como "ON", permitindo que ela registre os eventos especificados.
Após a criação da auditoria, o script fornece algumas consultas para interagir com ela:
SELECT * FROM sys.server_file_audits: Esta consulta retorna informações sobre todas as auditorias de arquivo de servidor existentes.
SELECT * FROM sys.fn_get_audit_file('C:\SQL_AUDIT\*', NULL, NULL): Esta consulta lista todos os arquivos de log de auditoria gerados pela auditoria. Ele especifica o caminho do diretório onde os arquivos de log são armazenados ('C:\SQL_AUDIT'). Você pode opcionalmente filtrar os resultados fornecendo um nome de login específico na cláusula WHERE.
SELECT * FROM sys.dm_server_audit_status: Esta consulta retorna informações sobre as auditorias de servidor, incluindo o status delas (ativada/desativada) e o tamanho dos arquivos de auditoria em bytes.
Essas consultas podem ser executadas para verificar o status da auditoria e revisar os arquivos de log gerados por ela.
Comments