Compartilhar via


Auditoria SQL Server (Mecanismo de Banco de Dados)

Applies to:SQL ServerInstância Gerenciada de SQL do Azure

Auditar uma instância do Mecanismo de Banco de Dados do SQL Server ou um banco de dados individual envolve rastrear e registrar eventos que ocorrem no Mecanismo de Banco de Dados. A auditoria do SQL Server permite criar auditorias de servidor que podem conter definições de auditoria do servidor para eventos de nível de servidor e definições de auditoria do banco de dados para eventos no nível do banco de dados. Os eventos auditados podem ser gravados nos logs de eventos ou nos arquivos de auditoria.

Há vários níveis de auditoria para SQL Server, dependendo dos requisitos governamentais ou padrões para sua instalação. SQL Server Auditoria fornece as ferramentas e os processos necessários para habilitar, armazenar e exibir auditorias em vários objetos de servidor e 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.

Este artigo se aplica a SQL Server e Instância Gerenciada de SQL do Azure.

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

SQL Server auditoria usa Extended Events para ajudar a criar uma auditoria. Para obter mais informações sobre eventos estendidos, consulte a visão geral de Eventos Estendidos.

Auditoria de SQL Server

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

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. Você pode criar uma especificação de auditoria de servidor por auditoria, pois ambas são criadas no escopo da instância SQL Server.

A especificação de auditoria do servidor coleta diversos grupos de ações em nível de servidor gerados pelo recurso de Eventos Estendidos. É possível incluir grupos de ação de auditoria em uma especificação da auditoria do servidor. Os grupos de ações de auditoria são grupos predefinidos de ações, que são eventos atômicos que ocorrem no Mecanismo de Banco de Dados. Essas ações são enviadas à auditoria, que as 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 do SQL Server Audit.

Observação

Devido a restrições de desempenho, tempdb e tabelas temporárias não são auditadas. 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 Database Audit Specification também pertence a uma auditoria SQL Server. Você pode criar uma especificação de auditoria de banco de dados por banco de dados 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. Os eventos de Auditoria são as ações atômicas que podem ser auditadas pelo motor 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 SQL Server. Essas ações são enviadas à auditoria, que as registra no destino. Não inclua objetos do escopo do servidor, como as exibições do sistema, em uma especificação de auditoria de usuários do banco de dados.

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 SQL Server Audit action groups and actions.

Destino

Os resultados de uma auditoria são enviados para um destino, que pode ser um arquivo, o log de eventos do Segurança do Windows ou o log de eventos do Windows Application. É 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 ler e gravar no log de eventos do aplicativo Windows. O log de eventos do aplicativo requer permissões menores do que o log de eventos do Segurança do Windows e é menos seguro do que o log de eventos Segurança do Windows.

Escrever no log de segurança do Windows exige que a conta de serviço do SQL Server seja incluída na política Generate security audits. 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 Auditoria de acesso a objetos para êxito e falha. Esta configuração pode ser definida com o uso do snap-in de política de segurança (secpol.msc). Em Windows Vista ou Windows Server 2008 (e versões superiores), você pode definir a política mais granular gerada pela aplicação 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 Escrever 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 Política de Grupo para configurar auditoria de segurança detalhada da Base de Conhecimento. Os logs de eventos Windows são globais para o sistema operacional Windows. Para obter mais informações sobre os logs de eventos Windows, consulte Visualizador de Eventos Visão geral. 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 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 são contas do Windows destinadas à administração de arquivos de auditoria, como copiar para diferentes compartilhamentos, fazer 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 está gravando em um arquivo, outros usuários Windows podem ler o arquivo de auditoria se tiverem permissão. O Mecanismo de Banco de Dados não usa um bloqueio exclusivo que impede operações de leitura.

Como o Mecanismo de Banco de Dados pode acessar o arquivo, SQL Server logons que têm permissão CONTROL SERVER podem usar o Mecanismo de Banco de Dados para acessar os arquivos de auditoria. No SQL Server 2022 (16.x) e versões posteriores, a permissão VIEW SERVER SECURITY AUDIT é suficiente para ler arquivos de auditoria usando fn_get_audit_file. 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 de SQL Server. Para obter mais informações sobre fn_get_audit_file permissões, consulte sys.fn_get_audit_file.

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 – Permissão de leitura e gravação
  • Visualizador de Auditoria – Leitura

Recomendamos que você gere relatórios de auditoria de uma instância separada de SQL Server, como uma instância do SQL Server Express, à qual somente administradores de auditoria ou leitores de auditoria têm acesso. Usando uma instância separada do Mecanismo de Banco de Dados para relatórios, você pode ajudar a impedir que usuários não autorizados obtenham 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 Windows o BitLocker Drive Encryption ou Windows Encrypting File System.

Para mais informações sobre os registros de auditoria que são escritos no destino, consulte Registros de Auditoria do SQL Server.

Visão geral do uso da auditoria de SQL Server

Você pode usar 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.

Você pode ler os logs de eventos Windows usando o utilitário Visualizador de Eventos no Windows. Para destinos de arquivo, você pode usar a função Log File Viewer no SQL Server Management Studio ou na função fn_get_audit_file para ler o arquivo de destino.

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

  1. Crie uma auditoria e defina o alvo.
  2. Crie uma especificação de auditoria do servidor ou de 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 Windows Visualizador de Eventos, Log File Viewer ou a função fn_get_audit_file.

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. Porque o desligamento ocorre na primeira vez que essa configuração é encontrada, o evento é gravado uma vez. Esse evento será registrado após a mensagem de falha da auditoria causar o desligamento. Um administrador pode ignorar desligamentos induzidos por auditoria iniciando SQL Server no modo usuário único usando o sinalizador -m. 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 SQL Server é iniciado com o 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 de serviço, consulte Opções de inicialização do serviço do Mecanismo de Banco de Dados.

Operações internas no Instância Gerenciada de SQL do Azure

  • Em Banco de Dados SQL do Azure e Instância Gerenciada de SQL do Azure, os eventos iniciados pelo SQLDBControlPlaneFirstPartyApp são uma função de Azure interna do Banco de Dados SQL do Azure plano de controle. Os eventos iniciados por SQLDBControlPlaneFirstPartyApp fazem parte de uma operação de sincronização interna entre o mecanismo SQL e o Azure Resource Manager. Esses eventos são uma parte normal do gerenciamento de recursos e são necessários para a representação e a operação corretas de recursos em Azure.

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 tenha uma especificação de auditoria definida nele a outra edição do SQL Server que não oferece suporte à auditoria do SQL Server, como o SQL Server Express, mas ela não registra eventos de auditoria.

Espelhamento de banco de dados e auditoria de 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:

  • O servidor espelho deve ter uma auditoria com o mesmo GUID para habilitar a especificação de auditoria de banco de dados a 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, a conta do serviço do servidor espelho deve ter permissões apropriadas para a localização onde a trilha de auditoria está sendo escrita.

  • Para destinos de log de eventos do Windows, a política de segurança no computador em que o servidor espelho está localizado deve permitir o acesso da conta de serviço aos logs de eventos de segurança ou de aplicativo.

Atividade de administrador 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 .

Permissões

Cada recurso e comando para auditoria de 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 ler dados de auditoria usando fn_get_audit_file, SQL Server 2019 (15.x) e versões anteriores exigem permissão CONTROL SERVER no servidor, enquanto SQL Server 2022 (16.x) e versões posteriores exigem permissão VIEW SERVER SECURITY AUDIT. Para obter mais informações, consulte sys.fn_get_audit_file.

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. Auditoria do SQL Server valida que um logon que cria ou altera uma especificação de auditoria possui 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 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.

Criar e gerenciar auditorias com Transact-SQL

Você pode usar instruções DDL, exibições e funções de gerenciamento dinâmico e exibições de 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 posse de um item securável.
ALTERAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS Altera um objeto de especificação de auditoria de banco de dados usando o recurso de auditoria do SQL Server.
ALTERAÇÃO DE AUDITORIA DO SERVIDOR Altera um objeto de auditoria do servidor usando o recurso Auditoria do SQL Server.
ALTERAR ESPECIFICAÇÃO DE AUDITORIA DO SERVIDOR Altera um objeto de especificação de auditoria de servidor usando o recurso de auditoria SQL Server.
CRIAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS Cria um objeto de especificação de auditoria de banco de dados usando o recurso de auditoria SQL Server.
CRIAR AUDITORIA DO SERVIDOR Cria um objeto de auditoria de servidor usando SQL Server Audit.
CRIAR ESPECIFICAÇÃO DE AUDITORIA DO SERVIDOR Cria um objeto de especificação de auditoria de servidor usando o recurso auditoria de SQL Server.
REMOVER ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS Descarta um objeto de especificação de auditoria de banco de dados usando o recurso de Auditoria do SQL Server.
DROP SERVER AUDIT Remove um objeto de auditoria de servidor usando o recurso de auditoria do SQL Server.
DROP SERVER AUDIT SPECIFICATION Remove um objeto de especificação de auditoria de servidor usando o recurso de auditoria do SQL Server.

Visões e funções dinâmicas

A tabela a seguir lista as exibições dinâmicas e a função que você pode usar para auditoria SQL Server.

Visões e funções dinâmicas Descrição
sys.dm_audit_actions Retorna uma linha para cada ação de auditoria que pode ser relatada no log de auditoria e todos os grupos de ações de auditoria que podem ser configurados 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 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.

Visualizações de catálogo

A tabela a seguir lista as exibições de catálogo que você pode usar para auditoria SQL Server.

Visualizações de catálogo Descrição
sys.database_audit_specifications Contém informações sobre as especificações de auditoria de banco de dados em uma auditoria 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 SQL Server em uma instância de servidor para todos os bancos de dados.
sys.server_audits Contém uma linha para cada auditoria SQL Server em uma instância de servidor.
sys.server_audit_specifications Contém informações sobre as especificações de auditoria de servidor em uma auditoria do SQL Server em uma instância de servidor.
sys.server_audit_specifications_details Contém informações sobre os detalhes das ações especificadas na auditoria de servidor do SQL Server em uma instância de servidor.
sys.server_file_audits Contém informações estendidas sobre o tipo de auditoria de arquivo em uma auditoria SQL Server em uma instância de servidor.

Próxima etapa