Compartilhar via


Auditoria do SQL Server (Mecanismo de Banco de Dados)

Aplica-se a:SQL ServerInstâ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. No SQL Server 2016 (13.x) com o Service Pack 1 e versões posteriores, todas as edições dão suporte a auditorias no nível do banco de dados. Antes disso, a auditoria no nível do banco de dados estava limitada às edições Enterprise, Developer e Evaluation. Para obter mais informações, consulte Edições e recursos com suporte do SQL Server 2016.

Observação

Este artigo se aplica ao SQL Server. Para o Banco de Dados SQL, consulte Auditoria do Banco de Dados SQL do Azure e do Azure Synapse Analytics.

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 a visão geral de 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ções de auditoria no nível do servidor são descritos no artigo Grupos de ações e ações de Auditoria do SQL Server.

Observação

Devido a restrições de desempenho, não auditamos as tabelas tempdb e as tabelas temporárias. Embora o grupo de ações concluído em lote capture instruções em tabelas temporárias, ele pode não preencher corretamente os nomes dos objetos. No entanto, a tabela de origem é sempre auditada, garantindo que todas as inserções da tabela de origem para tabelas temporárias sejam registradas.

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ções de auditoria no nível do banco de dados e as ações de auditoria são descritos no artigo grupos e 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 superior), você pode definir a política gerada pelo aplicativo mais granular da 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 têm a permissão CONTROL SERVER podem 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 através 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 da Auditoria do SQL Server

É possível usar o SQL Server Management Studio ou Transact-SQL para definir uma auditoria. Depois de criada e habilitada, a auditoria faz com que o alvo receba registros.

É 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 de Arquivos de Log ou a fn_get_audit_file função.

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

Considerações

No caso de uma falha durante a inicialização da auditoria, o servidor não é iniciado. Nesse caso, o servidor pode ser iniciado usando a opção -f na linha de comando.

Quando uma falha de auditoria faz com que o servidor seja desligado ou não inicie porque ON_FAILURE = SHUTDOWN é especificado para a auditoria, o MSG_AUDIT_FORCED_SHUTDOWN evento é 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 desligamentos induzidos por auditoria iniciando o SQL Server no modo de Usuário Único usando o -m sinalizador. Se você iniciar no modo de usuário único, será feito downgrade de qualquer auditoria onde ON_FAILURE = SHUTDOWN estiver especificado para ser executado nessa sessão como ON_FAILURE = CONTINUE. Quando o SQL Server é iniciado com o -m sinalizador, a MSG_AUDIT_SHUTDOWN_BYPASSED mensagem é gravada no log de erros.

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

Anexar um banco de dados com uma auditoria definida

Anexar um banco de dados com uma especificação de auditoria que indica um GUID inexistente no servidor resulta em 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 essa situação, use o comando ALTER DATABASE AUDIT SPECIFICATION para conectar a especificação de auditoria órfã a uma auditoria de servidor existente. Ou use o CREATE SERVER AUDIT comando para criar uma nova auditoria de servidor com o GUID especificado.

Você pode anexar um banco de dados que tem uma especificação de auditoria definida nele a outra edição do SQL Server que não dá suporte à auditoria do SQL Server, como o SQL Server Express, mas não registra eventos de auditoria.

Espelhamento de banco de dados e auditoria do SQL Server

Um banco de dados que tem uma especificação de auditoria de banco de dados definida e que usa espelhamento de banco de dados inclui 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.

Auditando administradores

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 .

Criar e gerenciar auditorias com 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
ALTERAR AUTORIZAÇÃO Altera a propriedade de um protegível.
ALTERAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS 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.
ALTERAR ESPECIFICAÇÃO DE AUDITORIA DO SERVIDOR Altera o objeto de especificação de auditoria do servidor usando o recurso Auditoria do SQL Server.
CRIAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS 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.
CRIAR ESPECIFICAÇÃO DE AUDITORIA DO SERVIDOR Cria um objeto de especificação de auditoria do servidor usando o recurso Auditoria do SQL Server.
REMOVER ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS 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 remover uma Auditoria de Servidor ou Especificação de Auditoria de Servidor, as entidades de segurança do servidor exigem as permissões ALTER ANY SERVER AUDIT ou CONTROL SERVER. Para criar, alterar ou remover uma Especificação de Auditoria de Banco de Dados, os principais do banco de dados exigem a permissão ALTER ANY DATABASE AUDIT ou a permissão ALTER ou CONTROL no banco de dados. Além disso, os principais devem ter permissão para se conectar ao banco de dados ou ALTER ANY SERVER AUDITCONTROL SERVER permissões.

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

Para obter mais informações sobre como conceder direitos e permissões, consulte GRANT.

Cuidado

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

Artigo Descrição
Propriedades do servidor – Página de 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.
Configuração do servidor: modo de auditoria 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.