Auditoria do SQL Server (Mecanismo de Banco de Dados)

A auditoria de uma instância do Mecanismo de Banco de Dados do SQL Server ou de um banco de dados individual envolve o controle e o registro em log dos eventos que ocorrem no Mecanismo de Banco de Dados. A auditoria do SQL Server permite criar auditorias de servidor, que podem conter especificações de auditoria de servidor para eventos no nível de servidor, além de especificações de auditoria de banco de dados para eventos no nível de banco de dados. Os eventos auditados podem ser gravados nos logs de eventos ou nos arquivos de auditoria.

Dependendo dos requisitos ou padrões governamentais de sua instalação, ha vários níveis de auditoria no SQL Server. A auditoria do SQL Server fornece as ferramentas e os processos necessários para habilitar, armazenar e exibir auditorias em vários objetos de servidor e de banco de dados.

É possível gravar grupos de ação de auditoria de servidor por instância, e grupos de ação de auditoria de banco de dados ou ações de auditoria de banco de dados por banco de dados. O evento de auditoria ocorrerá sempre que a ação auditável for encontrada.

Todas as edições do SQL Server oferecem suporte a auditorias no nível do servidor. As auditorias no nível de banco de dados são limitadas às edições Enterprise, Developer e Evaluation. Para obter mais informações, consulte Recursos compatíveis com as edições do SQL Server 2012.

Componentes de auditoria do SQL Server

Auditoria é a combinação de vários elementos em um único pacote de um grupo específico de ações de servidor ou de banco de dados. Os componentes de auditoria do SQL Server são combinados para produzir uma saída conhecida como auditoria, da mesma forma como uma definição de relatório combinada com elementos gráficos e de dados produz um relatório.

A auditoria do SQL Server usa Eventos Estendidos para ajudar a criar uma auditoria. Para obter mais informações sobre Eventos Estendidos, consulte Eventos estendidos.

Auditoria do SQL Server

O objeto Auditoria do SQL Server coleta uma instância única de ações no nível do servidor e/ou do banco de dados e grupos de ações a serem monitoradas. A auditoria do está no nível de instância do SQL Server. Você pode ter várias auditorias por instância do SQL Server.

Ao definir uma auditoria, especifique o local de saída dos resultados. Esse é o destino da auditoria. A auditoria é criada em um estado desabilitado e não audita automaticamente nenhuma ação. Após a habilitação da auditoria, o destino da auditoria recebe dados da auditoria.

Especificação da Auditoria do Servidor

O objeto Especificação da Auditoria do Servidor pertence a uma auditoria. É possível criar uma especificação de auditoria de servidor por auditoria, já que ambos são criados no escopo da instância do SQL Server.

A especificação da auditoria do servidor coleta muitos grupos de ação no nível do servidor gerados pelo recurso Eventos Estendidos. É possível incluir grupos de ação de auditoria em uma especificação da auditoria do servidor. Os grupos de ação de auditoria são grupos de ações predefinidos, que são eventos atômicos que ocorrem no Mecanismo de Banco de Dados. Essas ações são enviadas à auditoria, que por sua vez os registra no destino.

Os grupos de ação de auditoria no nível do servidor são descritos no tópico Ações e grupos de ações de auditoria do SQL Server.

Especificação da Auditoria do Banco de Dados

O objeto Especificação da Auditoria do Banco de Dados também pertence à auditoria do SQL Server. É possível criar uma especificação da auditoria do banco de Dados por banco de dados do SQL Server por auditoria.

Uma especificação da auditoria do banco de dados coleciona ações de auditoria no nível do banco de dados geradas pelo recurso Eventos Estendidos. É possível adicionar grupos de ações de auditoria ou de eventos de auditoria a uma especificação da auditoria do banco de dados. Eventos de auditoria são ações atômicas que podem ser examinadas pelo mecanismo do SQL Server. Grupos de ação de auditoria são grupos de ações predefinidos. Ambos estão no escopo do banco de dados do SQL Server. Essas ações são enviadas à auditoria, que as registra no destino. Não inclua objetos com escopo de servidor, como as exibições do sistema, em uma especificação de auditoria de banco de dados do usuário.

Grupos de ação de auditoria no nível do banco de dados e ações de auditoria são descritos no tópico Ações e grupos de ações de auditoria do SQL Server.

Destino

Os resultados de uma auditoria são enviados a um destino que pode ser um arquivo, o log de eventos de Segurança do Windows ou o log de eventos de Aplicativo do Windows. É necessário verificar e arquivar os logs periodicamente para certificar-se de que o destino tenha espaço suficiente para gravar mais registros.

Observação importanteImportante

Qualquer usuário autenticado pode fazer a leitura ou gravação no log de eventos de Aplicativo do Windows. O log de eventos de Aplicativo requer menos permissões que o log de eventos de Segurança do Windows e é menos seguro.

Gravar no log de Segurança do Windows exige que a conta de serviço do SQL Server seja adicionada à política Gerar auditorias de segurança. Por padrão, o Sistema Local, o Serviço Local e o Serviço de Rede fazem parte desta política. Essa configuração pode ser definida através do snap-in de política de segurança (secpol.msc). Além disso, é necessário habilitar a política de segurança Auditar acesso ao objeto para Êxito e Falha. Esta configuração pode ser definida com o uso do snap-in de política de segurança (secpol.msc). No Windows Vista ou no Windows Server 2008, é possível definir a política mais detalhada de aplicativo gerado na linha de comando usando o programa de política de auditoria (AuditPol.exe). Para obter mais informações sobre as etapas para habilitar a gravação no log de Segurança do Windows, consulte Gravar eventos de auditoria do SQL Server no log de segurança. Para obter mais informações sobre o programa Auditpol.exe, consulte o artigo 921469, Como usar a Diretiva de Grupo para definir configurações da auditoria de segurança, da Base de Dados de Conhecimento. Os logs de eventos do Windows são globais no sistema operacional Windows. Para obter mais informações sobre os logs de eventos do Windows, consulte Visão geral sobre Visualizar eventos. Se você precisar de permissões mais precisas na auditoria, use o destino do arquivo binário.

Quando você está salvando informações de auditoria em um arquivo, para ajudar a impedir falsificação, você pode restringir o acesso ao local do arquivo das seguintes maneiras:

  • A Conta de Serviço SQL Server deve ter permissão de Leitura e Gravação.

  • Os Administradores de Auditoria geralmente requerem permissão de Leitura e Gravação. Isso pressupõe que os Administradores de Auditoria sejam contas do Windows para a administração de arquivos de auditoria, por exemplo, copiando-os em compartilhamentos diferentes, armazenando-os em backup e assim por diante.

  • Os Leitores de Auditoria que são autorizados a ler os arquivos de auditoria precisam ter permissão de Leitura.

Mesmo quando o Mecanismo de Banco de Dados estiver gravando em um arquivo, outros usuários do Windows poderão ler o arquivo de auditoria se tiverem permissão. O Mecanismo de Banco de Dados não possui um bloqueio exclusivo que impeça operações de leitura.

Como o Mecanismo de Banco de Dados pode acessar o arquivo, os logons do SQL Server que tiverem a permissão do CONTROL SERVER poderão usar o Mecanismo de Banco de Dados para acessar os arquivos de auditoria. Para registrar qualquer usuário que esteja lendo o arquivo de auditoria, defina uma auditoria em master.sys.fn_get_audit_file. Isso registra os logons com permissão CONTROL SERVER que acessaram o arquivo de auditoria por meio do SQL Server.

Se um Administrador de Auditoria copiar o arquivo em um local diferente (para fins de arquivamento, entre outros), as ACLs no novo local deverão ter apenas as seguintes permissões:

  • Administrador de Auditoria – Leitura/Gravação

  • Leitor de Auditoria - Leitura

É recomendável gerar relatórios de auditoria de uma instância separada do SQL Server, como uma instância do SQL Server Express, a qual apenas Administradores de Auditoria ou Leitores de Auditoria tenham acesso. Ao usar uma instância separada do Mecanismo de Banco de Dados para relatório, você pode ajudar a impedir que usuários não autorizados obtenham acesso ao registro de auditoria.

Você pode oferecer proteção adicional contra acesso não autorizado criptografando a pasta na qual o arquivo de auditoria é armazenado usando Criptografia de Unidade de Windows BitLocker ou Sistema de Arquivo do Windows Encrypting.

Para obter mais informações sobre os registros de auditoria gravados no destino, consulte Registros de auditoria do SQL Server.

Visão geral do uso de auditoria do SQL Server

É possível usar o SQL Server Management Studio ou o Transact-SQL para definir uma auditoria. Após a criação e habilitação da auditoria, o destino receberá entradas.

É possível ler os logs de eventos do Windows usando o utilitário Visualizador de Eventos do Windows. Para destinos de arquivo, é possível usar o Visualizador do Arquivo de Log no SQL Server Management Studio ou a função fn_get_audit_file para ler o arquivo de destino.

O processo geral para criar e usar uma auditoria do é o seguinte.

  1. Crie uma auditoria e defina o destino.

  2. Crie uma especificação da auditoria do servidor ou especificação da auditoria do banco de dados que mapeie para a auditoria. Habilite a especificação de auditoria.

  3. Habilite a auditoria.

  4. Leia os eventos de auditoria usando o Visualizador de Eventos do Windows, o Visualizador do Arquivo de Log ou a função fn_get_audit_file.

Para obter mais informações, consulte Criar uma auditoria de servidor e uma especificação de auditoria de servidor e Criar uma especificação de auditoria de banco de dados e de servidor.

Considerações

No caso de falha durante o início da auditoria, o servidor não será iniciado. Nesse caso, é possível iniciar o servidor usando a opção –f na linha de comando.

Quando uma falha na auditoria faz com que o servidor seja desligado ou não seja iniciado devido à especificação de ON_FAILURE=SHUTDOWN para a auditoria, o evento MSG_AUDIT_FORCED_SHUTDOWN é gravado no log. Como o desligamento ocorrerá quando configuração for encontrada pela primeira vez, o evento será gravado uma vez. Esse evento será gravado após a mensagem de falha da auditoria provocar o desligamento. Um administrador pode ignorar os desligamentos induzidos por auditoria iniciando o SQL Server no modo de usuário único usando o sinalizador –m. Se você iniciar no modo Usuário Único, rebaixará qualquer auditoria em que ON_FAILURE=SHUTDOWN esteja especificado para execução nessa sessão como ON_FAILURE=CONTINUE. Quando o SQL Server for iniciado por meio do sinalizador –m, a mensagem MSG_AUDIT_SHUTDOWN_BYPASSED será gravada no log de erros.

Para obter mais informações sobre opções de inicialização de serviço, consulte Opções de inicialização do serviço Mecanismo de Banco de Dados.

Anexando um banco de dados a uma auditoria definida

Anexar um banco de dados que tenha uma especificação de auditoria e especifica um GUID inexistente ao servidor gerará uma especificação de auditoria órfã. Como não existe uma auditoria com um GUID correspondente na instância do servidor, nenhum evento de auditoria será gravado. Para corrigir isso, use o comando ALTER DATABASE AUDIT SPECIFICATION para conectar a especificação de auditoria órfã a uma auditoria de servidor existente. Ou use o comando CREATE SERVER AUDIT para criar uma nova auditoria de servidor com o GUID especificado.

É possível anexar um banco de dados que tenha uma especificação de auditoria definida a outra edição do SQL Server que não dê suporte à auditoria do SQL Server, como o SQL Server Express, mas os eventos de auditoria não serão gravados.

Espelhamento de Banco de Dados e o SQL Server Audit

Um banco de dados com uma especificação de auditoria de banco de dados definida e que usa espelhamento de banco de dados incluirá a especificação de auditoria de banco de dados. Para funcionar corretamente na instância de SQL espelhada, é necessário configurar os seguintes itens:

  • É necessário que o servidor espelho tenha uma auditoria com o mesmo GUID para habilitar a especificação de auditoria de banco de dados para gravar registros de auditoria. Isso pode ser configurado com o uso do comando CREATE AUDIT WITH GUID= <GUID from source Server Audit>.

  • Para destinos de arquivos binários, é necessário que a conta do serviço de servidor espelho tenha as permissões apropriadas onde a trilha de auditoria começou a ser gravada.

  • Para destinos de log de eventos do Windows, a política de segurança no computador em que se encontra o servidor espelho deve permitir o acesso de conta de serviço ao log de eventos de aplicativo ou de segurança.

Administradores de auditoria

Os membros da função de servidor fixa sysadmin são identificados como o usuário dbo em cada banco de dados. Para auditar as ações dos administradores, audite as ações do usuário dbo.

Criando e gerenciando auditorias com o Transact-SQL

É possível usar instruções DDL, funções e exibições de gerenciamento dinâmico e exibições do catálogo para implementar todos os aspectos da Auditoria do SQL Server.

Instruções de linguagem de definição de dados

É possível usar as seguintes instruções DDL para criar, alterar e remover especificações de auditoria:

ALTER AUTHORIZATION

CREATE SERVER AUDIT

ALTER DATABASE AUDIT SPECIFICATION

CREATE SERVER AUDIT SPECIFICATION

ALTER SERVER AUDIT

DROP DATABASE AUDIT SPECIFICATION

ALTER SERVER AUDIT SPECIFICATION

DROP SERVER AUDIT

CREATE DATABASE AUDIT SPECIFICATION

DROP SERVER AUDIT SPECIFICATION

Exibições e funções dinâmicas

A tabela a seguir lista as exibições e funções dinâmicas que podem ser usadas na auditoria do SQL Server.

Exibições e funções dinâmicas

Descrição

sys.dm_audit_actions

Retorna uma linha para cada ação de auditoria que pode ser reportada no log de auditoria e para cada grupo de ação de auditoria que pode ser configurado como parte do SQL Server Audit.

sys.dm_server_audit_status

Fornece informações sobre o estado atual da auditoria.

sys.dm_audit_class_type_map

Retorna uma tabela que mapeia o campo class_type no log de auditoria para o campo class_desc em sys.dm_audit_actions.

fn_get_audit_file

Retorna informações de um arquivo de auditoria criado por uma auditoria de servidor.

A tabela a seguir lista as exibições do catálogo que podem ser usadas para auditoria do SQL Server.

Exibições do catálogo

Descrição

sys.database_ audit_specifications

Contém informações sobre as especificações de auditoria do banco de dados de uma auditoria do SQL Server em uma instância de servidor.

sys.database_audit_specification_details

Contém informações sobre as especificações de auditoria de banco de dados em uma auditoria do SQL Server em uma instância de servidor para todos os bancos de dados.

sys.server_audits

Contém uma linha para cada auditoria do SQL Server em uma instância de servidor.

sys.server_audit_specifications

Contém informações sobre as especificações de auditoria do servidor em uma auditoria do SQL Server em uma instância do servidor.

sys.server_audit_specifications_details

Contém informações sobre os detalhes (ações) de especificação de auditoria de servidor em uma auditoria do SQL Server, em uma instância de servidor.

sys.server_file_audits

Contém informações estendidas de repositórios sobre o tipo de auditoria de arquivo em uma auditoria do SQL Server, em uma instância do servidor.

Permissões

Cada recurso e comando de Auditoria do SQL Server tem requisitos de permissão individuais.

Para criar, alterar ou descartar uma Auditoria de Servidor ou uma Especificação de Auditoria de Servidor, as entidades de segurança exigem a permissão ALTER ANY SERVER AUDIT ou a permissão CONTROL SERVER. Para criar, alterar ou descartar uma Especificação de Auditoria de Banco de Dados, as entidades de segurança de banco de dados exigem a permissão DATABASE AUDIT ou ALTER ou CONTROL no banco de dados. Além disso, as entidades de segurança devem ter permissão para se conectar ao banco de dados ou à permissão ALTER ANY SERVER AUDIT ou CONTROL SERVER.

Salvo quando especificado de outro modo, a visualização de exibições do catálogo exige que uma entidade de segurança tenha um dos seguintes itens:

  • Associação na função de servidor fixa sysadmin.

  • A permissão CONTROL SERVER.

  • A permissão VIEW SERVER STATE.

  • A permissão ALTER ANY AUDIT.

  • A permissão VIEW AUDIT STATE (fornece apenas o acesso principal à exibição do catálogo sys.server_audits).

Uma entidade de segurança deve ter a permissão VIEW SERVER STATE ou ALTER ANY AUDIT para usar as Exibições de Gerenciamento Dinâmico.

Para obter mais informações sobre como conceder direitos e permissões, consulte GRANT (Transact-SQL).

Observação sobre cuidadosCuidado

Entidades na função sysadmin podem violar qualquer componente de auditoria e aqueles na função db_owner podem violar quaisquer especificações em um banco de dados. A auditoria do SQL Server valida esse logon que cria ou altera uma especificação de auditoria que tenha pelo menos a permissão ALTER ANY DATABASE AUDIT. No entanto, ela não faz nenhuma validação quando você anexa um banco de dados. Você deve considerar que todas as Especificações de Auditoria de Banco de Dados são tão seguras quanto as entidades na função sysadmin ou db_owner .

Tarefas relacionadas

Criar uma auditoria de servidor e uma especificação de auditoria de servidor

Criar uma especificação de auditoria de banco de dados e de servidor

Exibir um log auditoria do SQL Server

Gravar eventos de auditoria do SQL Server no log de segurança

Tópicos estreitamente relacionados à auditoria

Consulte também

Conceitos

Ações e grupos de ações de auditoria do SQL Server

Registros de auditoria do SQL Server