Partilhar via


Auditoria do SQL Server (Mecanismo de Banco de Dados)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Auditar uma instância do Mecanismo de Banco de Dados do SQL Server ou de um banco de dados individual envolve o controlo e o registo de 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 de nível de servidor e especificações de auditoria de banco de dados para eventos de nível de banco de dados. Os eventos auditados podem ser gravados nos logs de eventos ou nos arquivos de auditoria.

Importante

No de Instância Gerenciada SQL doAzure, esse recurso T-SQL tem determinadas alterações de comportamento. Consulte as diferenças de T-SQL na Instância Gerenciada SQL do Azure em comparação com o SQL Server para obter mais detalhes sobre todas as alterações de comportamento do T-SQL.

Há vários níveis de auditoria para o SQL Server, dependendo dos requisitos governamentais ou de padrões para 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 banco de dados.

Você pode registrar grupos de ações de auditoria do servidor por instância e grupos de ações de auditoria de banco de dados ou ações de auditoria de banco de dados por banco de dados. O evento de auditoria ocorre sempre que a ação auditável é encontrada.

Todas as edições do SQL Server oferecem suporte a auditorias no nível do servidor. No SQL Server 2016 (13.x) com Service Pack 1 e versões posteriores, todas as edições oferecem suporte a auditorias no nível de banco de dados. Antes disso, a auditoria no nível do banco de dados era 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 aplica-se ao SQL Server. Para o Banco de Dados SQL, consulte Auditoria do Banco de Dados SQL do Azure e Azure Synapse Analytics.

Componentes de auditoria do SQL Server

Um auditoria é a combinação de vários elementos num único pacote para um grupo específico de ações do servidor ou do banco de dados. Os componentes da auditoria do SQL Server se combinam para produzir uma saída que é chamada de auditoria, assim 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 de Eventos Estendidos para ajudar a criar uma auditoria. Para obter mais informações sobre eventos estendidos, consulte Visão geral de eventos estendidos.

Auditoria do SQL Server

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

Ao definir uma auditoria, você especifica o local para a saída dos resultados. Este é o destino da auditoria. A auditoria é criada num estado desativado e não audita automaticamente nenhuma ação. Depois que a auditoria é habilitada, o destino da auditoria recebe dados da auditoria.

Especificação de auditoria do servidor

O objeto Server Audit Specification pertence a uma auditoria. Você pode criar uma especificação de auditoria de servidor por auditoria, porque ambas são criadas no escopo da instância do SQL Server.

A especificação de auditoria do servidor recolhe muitos grupos de ações ao nível do servidor ativados pela funcionalidade Eventos Estendidos. Pode incluir grupos de ações de auditoria numa especificação de 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 para a auditoria, que as regista no sistema de 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 temporárias. Embora o grupo de ações em lote concluído 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 de auditoria de banco de dados

O objeto Especificação de Auditoria de Banco de Dados também pertence a uma auditoria do SQL Server. Você pode criar uma especificação de auditoria de banco de dados por banco de dados do SQL Server por auditoria.

A especificação de auditoria de banco de dados coleta ações de auditoria no nível de banco de dados geradas pelo recurso Eventos Estendidos. Você pode adicionar grupos de ações de auditoria ou eventos de auditoria a uma especificação de auditoria de banco de dados. Eventos de auditoria são as ações atômicas que podem ser auditadas pelo mecanismo do SQL Server. Grupos de ações de auditoria são grupos predefinidos de ações. Ambos estão no escopo do banco de dados do SQL Server. Essas ações são enviadas para a auditoria, que as regista no sistema de destino. Não inclua objetos com escopo de servidor, como as vistas do sistema, numa especificação de auditoria para a base de dados de um utilizador.

Os grupos de ações de auditoria no nível de banco de dados e as ações de auditoria são descritos no artigo Grupos de ações e ações de auditoria do SQL Server.

Público-alvo

Os resultados de uma auditoria são enviados para um destino, que pode ser um arquivo, o log de eventos de Segurança do Windows ou o log de eventos do Aplicativo do Windows. Os logs devem ser revisados e arquivados periodicamente para garantir 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 do Windows. O log de eventos do Aplicativo requer permissões mais baixas do que o log de eventos de Segurança do Windows e é menos seguro do que o log de eventos de Segurança do Windows.

Escrever no registo de Segurança do Windows exige que se adicione a conta de serviço do SQL Server à política de Gerar auditorias de segurança. Por padrão, o Sistema Local, o Serviço Local e o Serviço de Rede fazem parte dessa política. Essa configuração pode ser definida usando o snap-in de diretiva de segurança (secpol.msc). Além disso, a diretiva de segurança de acesso a objetos Audit deve ser habilitada tanto para Sucesso como para Falha. Essa configuração pode ser definida usando o snap-in de diretiva de segurança (secpol.msc). No Windows Vista ou Windows Server 2008 (e superior), você pode definir a diretiva gerada pelo aplicativo mais granular a partir da linha de comando usando o programa de diretiva 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 mais informações sobre o programa Auditpol.exe, consulte o artigo da Base de Dados de Conhecimento 921469, Como usar a Diretiva de Grupo para configurar a auditoria detalhada de segurança. Os logs de eventos do Windows são globais para o sistema operacional Windows. Para obter mais informações sobre os logs de eventos do Windows, consulte Visão geral do Visualizador de Eventos . Se você precisar de permissões mais precisas na auditoria, use o destino do arquivo binário.

Ao salvar informações de auditoria em um arquivo, para ajudar a evitar adulterações, você pode restringir o acesso ao local do arquivo das seguintes maneiras:

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

  • Os administradores de auditoria normalmente exigem permissão de leitura e gravação. Isso pressupõe que os Administradores de Auditoria sejam contas do Windows para administração de arquivos de auditoria, como: copiá-los para compartilhamentos diferentes, fazer backup deles e assim por diante.

  • Os leitores de auditoria autorizados a ler arquivos de auditoria devem ter permissão de Ler.

Mesmo quando o Mecanismo de Banco de Dados está gravando em um arquivo, outros usuários do 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 aceder ao ficheiro, os logons do SQL Server que têm CONTROL SERVER permissão podem utilizar o Mecanismo de Banco de Dados para aceder aos ficheiros 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 CONTROL SERVER permissão que acessaram o arquivo de auditoria por meio do SQL Server.

Se um administrador de auditoria copiar o arquivo para um local diferente (para fins de arquivamento, etc.), as listas de controle de acesso (ACLs) no novo local deverão ser reduzidas para as seguintes permissões:

  • Administrador de Auditoria - Leitura/Escrita
  • Leitor de Auditoria - Ler

Recomendamos que você gere relatórios de auditoria de uma instância separada do SQL Server, como uma instância do SQL Server Express, à qual apenas 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 está armazenado usando a Criptografia de Unidade de Disco BitLocker do Windows ou o Sistema de Arquivos com Criptografia do Windows.

Para obter mais informações sobre os registos de auditoria gravados no destino, consulte SQL Server Audit Records.

Visão geral do uso da auditoria do SQL Server

Você pode usar o SQL Server Management Studio ou o Transact-SQL para definir uma auditoria. Depois que a auditoria é criada e ativada, o destino recebe entradas.

Você pode ler os logs de eventos do Windows usando o utilitário Event Viewer no Windows. Para destinos de arquivo, pode-se usar no SQL Server Management Studio o Visualizador de Arquivo de Log ou a 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 objetivo.
  2. Crie uma especificação de auditoria de servidor ou uma especificação de auditoria de banco de dados que mapeie para a auditoria. Ative 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 especificação de auditoria de servidor e auditoria de banco de dados.

Considerações

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

Quando uma falha de auditoria faz com que o servidor desligue 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 no primeiro encontro dessa configuração, o evento é registado apenas uma vez. Este evento é registado após a mensagem de falha para a auditoria que causou o encerramento. Um administrador pode ignorar desligamentos induzidos por auditoria iniciando o SQL Server no modo de Usuário Único usando o -m sinalizador. Se iniciar no modo de Utilizador Único, irá rebaixar qualquer auditoria em que ON_FAILURE = SHUTDOWN esteja especificado para ser executada 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 opções de inicialização do serviço, consulte Opções de inicialização do Serviço Mecanismo de Banco de Dados.

Anexar um banco de dados com uma auditoria definida

Anexar um banco de dados que tem uma especificação de auditoria e especifica um GUID que não existe no servidor, origina 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 é registrado. Para corrigir esta 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 a outra edição do SQL Server que não ofereça suporte à auditoria do SQL Server, como o SQL Server Express, mas não registre 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 espelhada do SQL, os seguintes itens devem ser configurados:

  • O servidor espelho deve ter uma auditoria com o mesmo GUID para que a especificação de auditoria da base de dados possa gravar registos de auditoria. Isso pode ser configurado usando o comando CREATE AUDIT WITH GUID = <guid-from-source-server-audit>.

  • Para destinos de arquivo binário, a conta de serviço do servidor espelho deve ter permissões apropriadas para o local onde a trilha de auditoria está a ser escrita.

  • Para destinos de registo de eventos do Windows, a política de segurança do computador onde está o servidor espelho deve permitir que a conta de serviço aceda ao registo de eventos de segurança ou de aplicação.

Administradores de auditoria

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

Crie e gerencie 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 aspetos da Auditoria do SQL Server.

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

Você pode usar as seguintes instruções DDL para criar, alterar e descartar especificações de auditoria:

Declarações DDL Descrição
ALTERAR AUTORIZAÇÃO Altera a propriedade de um valor mobiliário.
ALTERAR ESPECIFICAÇÃO DE AUDITORIA DA BASE DE DADOS Altera um objeto de especificação de auditoria de banco de dados usando o recurso Auditoria do SQL Server.
ALTERAR AUDITORIA DO SERVIDOR Altera um objeto de auditoria do servidor usando o recurso Auditoria do SQL Server.
ESPECIFICAÇÃO DE AUDITORIA DO ALTER SERVER Altera um 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 de banco de dados usando o recurso de auditoria do SQL Server.
CRIAR AUDITORIA DE SERVIDOR Cria um objeto de auditoria de 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.
ELIMINAR A ESPECIFICAÇÃO DE AUDITORIA DA BASE DE DADOS Descarta um objeto de especificação de auditoria de banco de dados usando o recurso Auditoria do SQL Server.
AUDITORIA DO DROP SERVER Descarta um objeto de auditoria do servidor usando o recurso de auditoria do SQL Server.
ESPECIFICAÇÃO DE AUDITORIA DO DROP SERVER Descarta um objeto de especificação de auditoria do servidor usando o recurso Auditoria do SQL Server.

Vistas e funções dinâmicas

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

Vistas 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 cada grupo de ações 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 associa o campo class_type no registo de auditoria ao campo class_desc no sys.dm_audit_actions.
fn_get_audit_file Retorna informações de um arquivo de auditoria criado por uma auditoria de servidor.

Visualizações do catálogo

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

Visualizações do 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 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 do servidor.
sys.server_audit_specifications Contém informações sobre as especificações de auditoria do servidor numa auditoria do SQL Server na instância de servidor.
sys.server_audit_specifications_details Contém informações sobre detalhes da especificação de auditoria do servidor (ações) numa auditoria do SQL Server numa instância de servidor.
sys.server_file_audits Armazena informações estendidas sobre o tipo de auditoria de arquivo em uma auditoria do SQL Server numa instância de servidor.

Permissões

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

Para criar, alterar ou eliminar uma Auditoria de Servidor ou Especificação de Auditoria de Servidor, os principais de servidor exigem a permissão ALTER ANY SERVER AUDIT e/ou a permissão CONTROL SERVER. Para criar, alterar ou descartar uma Especificação de Auditoria de Banco de Dados, os principais de banco de dados exigem a permissão ALTER ANY DATABASE AUDIT ou a permissão ALTER no banco de dados CONTROL. Além disso, os principais devem ter permissão para se conectar ao banco de dados ou permissões ALTER ANY SERVER AUDIT ou CONTROL SERVER.

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 invalida a capacidade de exibir as vistas do 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.

Atenção

As entidades na função sysadmin podem adulterar qualquer componente de auditoria e as entidades na função db_owner podem adulterar as especificações de auditoria em um banco de dados. A auditoria do SQL Server valida se um logon que cria ou altera uma especificação de auditoria tem pelo menos a permissão ALTER ANY DATABASE AUDIT. No entanto, ele não faz nenhuma validação quando você anexa um banco de dados. Deve assumir que todas as Especificações de Auditoria de Banco de Dados são tão confiáveis quanto os principais na 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 de aplicativos do Windows.
Configuração do servidor: modo de auditoria c2 Explica o modo de auditoria de conformidade de segurança C2 no SQL Server.
Categoria de evento de auditoria de segurança (SQL Server Profiler) Explica os eventos de auditoria que você pode usar no SQL Server Profiler. Para obter mais informações, consulte SQL Server Profiler.
Rastreamento SQL Explica como o Rastreamento SQL pode ser usado de dentro de seus próprios aplicativos para criar rastreamentos manualmente, em vez de usar o SQL Server Profiler.
Gatilhos DDL Explica como você pode usar gatilhos DDL (Data Definition Language) para controlar alterações em seus bancos de dados.
Microsoft TechNet: SQL Server TechCenter: Segurança e Proteção do SQL Server 2005 Fornece informações atualizadas up-tosobre a segurança do SQL Server.