Auditoria do SQL Server (Mecanismo de Banco de Dados)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

A auditoria de uma instância do Mecanismo de Banco de Dados do SQL Server ou de um banco de dados individual envolve o acompanhamento e o registro em log de eventos que ocorrem no Mecanismo de Banco de Dados. A auditoria doSQL 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.

Importante

Na Instância Gerenciada de SQL do Azure, esse recurso de T-SQL tem algumas alterações de comportamento. Confira Diferenças do T-SQL da Instância Gerenciada de SQL do Azure em relação ao SQL Server para obter detalhes de todas as alterações de comportamento do T-SQL.

Há vários níveis de auditoria do SQL Server, dependendo dos requisitos padrão ou governamentais de sua instalação. 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 dão suporte a auditorias no nível do servidor. Todas as edições dão suporte a auditorias no nível do banco de dados a partir do SQL Server 2016 (13.x) SP1. Antes disso, a auditoria no nível de banco de dados se limitava às edições Enterprise, Developer e Evaluation. Para obter mais informações, consulte Recursos com suporte nas edições do SQL Server 2016.

Observação

Este tópico se aplica ao SQL Server. Para o banco de dados SQL, confira Introdução à auditoria de banco de dados SQL.

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 agrupados para produzir uma saída conhecida como auditoria, assim como uma definição de relatório combinada com elementos gráficos e de dados produz um relatório.

O 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 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 ambas são criadas 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 artigo 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 de 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 auditadas 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 por sua vez os registra no destino. Não inclua objetos do escopo de servidor, como as exibições do sistema, em uma especificação de auditoria de banco de dados do usuário.

Os grupos de ação de auditoria no nível do banco de dados e as ações de auditoria estão descritos no artigo 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.

Importante

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 SQL Server seja adicionada à política Gerar auditorias de segurança. Por padrão, Sistema Local, Serviço Local e Serviço de Rede fazem parte dessa política. Esta configuração pode ser definida com o uso 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 (e versões posteriores), é 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 How to use Group Policy to configure detailed security auditingda Base de Dados de Conhecimento. Os logs de eventos do Windows são globais ao sistema operacional Windows. Para obter mais informações sobre os logs de eventos do Windows, consulte Event Viewer Overview. Se você precisar de permissões mais exatas na auditoria, use o destino de arquivo binário.

Para ajudar a impedir a adulteração quando você estiver salvando informações de auditoria em um arquivo, você pode restringir o acesso ao local do arquivo das seguintes maneiras:

  • A conta do serviço SQL Server deve ter permissão de leitura e de 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 tem um bloqueio exclusivo que impede 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 listas de controle de acesso (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 impedir que usuários não autorizados tenham acesso ao registro de auditoria.

Você pode oferecer proteção extra 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 SQL Server Audit Records.

Visão geral do uso de auditoria do SQL Server

É possível usar o SQL Server Management Studio ou 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 recurso Visualizador de Eventosdo Windows, o Visualizador do Arquivo de Logou 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 iniciará. Nesse caso, é possível iniciar o servidor usando a opção -f na linha de comando.

Quando uma falha na auditoria causa o desligamento do servidor ou que ele não seja iniciado porque ON_FAILURE=SHUTDOWN está especificado para a auditoria, o evento MSG_AUDIT_FORCED_SHUTDOWN é gravado no log. Como o desligamento ocorre quando a 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 de Usuário Único, você desatualizará qualquer auditoria em que ON_FAILURE=SHUTDOWN estiver especificado para execução naquela sessão como ON_FAILURE=CONTINUE. Quando o SQL Server é iniciado pelo sinalizador -m, a mensagem MSG_AUDIT_SHUTDOWN_BYPASSED é gravada no log de erros.

Para obter mais informações sobre as opções de inicialização do 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 que especifica um GUID inexistente no 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 está 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 registrados.

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 usando o 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 da conta de serviço ao log de eventos do 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:

Instruções DDL Descrição
ALTER AUTHORIZATION Altera a propriedade de um protegível.
ALTER DATABASE AUDIT SPECIFICATION Altera o objeto de especificação de auditoria do banco de dados usando o recurso Auditoria do SQL Server.
ALTERAR AUDITORIA DE SERVIDOR Altera um objeto de auditoria do servidor usando o recurso Auditoria do SQL Server.
ALTER SERVER AUDIT SPECIFICATION Altera o objeto de especificação de auditoria do servidor usando o recurso Auditoria do SQL Server.
CREATE DATABASE AUDIT SPECIFICATION Cria um objeto de especificação de auditoria do banco de dados usando o recurso de auditoria do SQL Server.
CRIAR AUDITORIA DE SERVIDOR Cria um objeto de auditoria do servidor usando a Auditoria do SQL Server.
CREATE SERVER AUDIT SPECIFICATION Cria um objeto de especificação de auditoria do servidor usando o recurso Auditoria do SQL Server.
DROP DATABASE AUDIT SPECIFICATION Descarta o objeto de especificação de auditoria do banco de dados usando o recurso Auditoria do SQL Server.
DROP SERVER AUDIT Descarta um objeto de auditoria de servidor usando o recurso SQL Server Audit.
DROP SERVER AUDIT SPECIFICATION Descarta um objeto de especificação de auditoria do servidor usando o recurso Auditoria do SQL Server.

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 da auditoria do SQL Server.
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 do 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.

Exibições do catálogo

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 em uma auditoria do SQL Server de 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 de uma instância de 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 de 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.

A permissão VIEW ANY DEFINITION fornece acesso para exibir os modos de exibição de auditoria no nível de servidor e VIEW DEFINITION fornece acesso para exibir os modos de exibição de auditoria no nível de banco de dados. A negação dessas permissões substitui a capacidade de visualizar as exibições do catálogo, mesmo que a entidade de segurança tenha as permissões ALTER ANY SERVER AUDIT ou ALTER ANY DATABASE AUDIT.

Veja mais informações sobre como conceder direitos e permissões em GRANT (Transact-SQL).

Cuidado

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 seguras somente para as entidades nas funções sysadmin ou db_owner.

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

Propriedades do Servidor (página Segurança)
Explica como ativar a auditoria de logon para o SQL Server. Os registros de auditoria são armazenados no log do aplicativo do Windows.

Opção de configuração do servidor do modo de auditoria de c2
Explica o modo de auditoria de conformidade de segurança de C2 no SQL Server.

Categoria de evento Security Audit (SQL Server Profiler)
Explica os eventos de auditoria que podem ser usados no perfil SQL Server. Para saber mais, confira SQL Server Profiler.

Rastreamento do SQL
Explica como o Rastreamento do SQL pode ser usado em seus próprios aplicativos para criar rastreamentos manualmente em vez de usar o SQL Server Profiler.

Gatilhos DDL
Explica como os gatilhos DDL (linguagem de definição de dados) podem ser usados para controlar alterações nos bancos de dados.

Microsoft TechNet: TechCenter do SQL Server: Segurança e proteção do SQL Server 2005
Fornece informações atualizadas sobre a segurança do SQL Server.