Partilhar via


SQL Server Auditoria (Mecanismo de Base de Dados)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Auditing de uma instância do Mecanismo de Banco de Dados do SQL Server ou de uma base de dados individual envolve o rastreamento e registo de eventos que ocorrem no Database Engine. A auditoria do SQL Server permite-lhe criar auditorias de servidor, que podem conter especificações de auditoria para eventos ao nível do servidor e especificações de auditoria de base de dados para eventos ao nível da base de dados. Os eventos auditados podem ser gravados nos logs de eventos ou nos arquivos de auditoria.

Existem vários níveis de auditoria para o SQL Server, dependendo dos requisitos governamentais ou de normas para a sua instalação. O SQL Server Audit fornece as ferramentas e processos necessários para ativar, armazenar e visualizar auditorias em vários servidores e objetos de base 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.

Este artigo aplica-se ao SQL Server e ao Azure SQL Managed Instance.

Componentes do SQL Server Audit

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 combinam-se para produzir um resultado chamado auditoria, tal como uma definição de relatório combinada com gráficos e elementos de dados produz um relatório.

Auditorias do SQL Server utilizam Extended Events para ajudar a criar auditorias. Para obter mais informações sobre eventos estendidos, consulte Visão geral de eventos estendidos.

SQL Server Audit

O objeto SQL Server Audit recolhe uma única instância de ações ao nível do servidor ou base de dados e grupos de ações para monitorizar. A auditoria é ao nível da instância do SQL Server. Podes 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. Pode criar uma especificação de auditoria de servidor por auditoria, porque ambas são criadas no âmbito 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 pré-definidos de ações, que são eventos atómicos que ocorrem no Database Engine. Essas ações são enviadas para a auditoria, que as regista no sistema de destino.

Os grupos de ações de auditoria ao nível do servidor são descritos no artigo Grupos de ações de auditoria do SQL Server.

Observação

Devido a restrições de desempenho, tempdb as tabelas temporárias não são auditadas. 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 Database Audit Specification também pertence a uma auditoria SQL Server. Pode criar uma especificação de auditoria para cada base 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 motor de SQL Server. Grupos de ações de auditoria são grupos predefinidos de ações. Ambos estão no âmbito da base 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 ao nível da base de dados e as ações de auditoria são descritos no artigo SQL Server Audit: grupos de ações e ações.

Público-alvo

Os resultados de uma auditoria são enviados para um alvo, que pode ser um ficheiro, o registo de eventos do Segurança do Windows ou o registo de eventos de aplicações 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 utilizador autenticado pode ler e escrever no registo de eventos de aplicações do Windows. O registo de eventos da aplicação requer permissões inferiores ao do registo de eventos do Segurança do Windows e é menos seguro do que o registo de eventos do Segurança do Windows.

Escrever no registo de segurança do Windows requer que a conta de serviço SQL Server seja adicionada à política Generate security audits. 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). Em Windows Vista ou Windows Server de 2008 (e superiores), pode definir a política mais detalhada gerada por aplicação a partir da linha de comandos, usando o programa de políticas de auditoria (AuditPol.exe). Para mais informações sobre como permitir a escrita no registo de Segurança do Windows, consulte escrever eventos de auditoria do SQL Server no registo 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 registos de eventos do Windows são globais para o sistema operativo Windows. Para mais informações sobre os registos de eventos Windows, consulte Visualizador de Eventos Visão Geral. 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 SQL Server deve ter permissão de Leitura e Escrita.

  • Os administradores de auditoria normalmente exigem permissão de leitura e gravação. Isto pressupõe que os Administradores de Auditoria são contas Windows para a administração de ficheiros de auditoria, tais como: copiá-los para diferentes partilhas, fazer backups, e assim sucessivamente.

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

Mesmo quando o Database Engine está a escrever num ficheiro, outros utilizadores do Windows podem ler o ficheiro de auditoria se tiverem permissão. O Database Engine não aceita um bloqueio exclusivo que impeça operações de leitura.

Como o Database Engine pode aceder ao ficheiro, SQL Server logins que tenham permissão CONTROL SERVER podem usar o Database Engine para aceder aos ficheiros de auditoria. Em versões SQL Server 2022 (16.x) e posteriores, a permissão VIEW SERVER SECURITY AUDIT é suficiente para ler ficheiros 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. Isto regista os logins com permissão CONTROL SERVER que acederam ao ficheiro de auditoria através de SQL Server. Para mais informações sobre fn_get_audit_file permissões, consulte sys.fn_get_audit_file.

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 gere relatórios de auditoria a partir 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. Ao utilizar uma instância separada do Database Engine para relatórios, pode ajudar a impedir que utilizadores não autorizados tenham acesso ao registo de auditoria.

Pode oferecer proteção adicional contra acessos não autorizados encriptando a pasta onde o ficheiro de auditoria está armazenado, utilizando o Windows BitLocker Drive Encryption ou o Windows Encrypting File System.

Para mais informações sobre os registos de auditoria que são escritos para o alvo, consulte SQL Server Registos de Auditoria.

Visão geral sobre a utilização do SQL Server Audit

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.

Pode ler os registos de eventos Windows usando a utilidade Visualizador de Eventos no Windows. Para os destinos de ficheiros, pode usar o Visualizador de Ficheiros Log no SQL Server Management Studio ou a função fn_get_audit_file para ler o ficheiro 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 a função Windows Visualizador de Eventos, Visualizador de Ficheiros de Registo 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 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 contornar desligamentos induzidos por auditoria iniciando SQL Server em modo de Utilizador Único usando a flag -m. 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 SQL Server é iniciado com a flag -m, a mensagem MSG_AUDIT_SHUTDOWN_BYPASSED é escrita no registo de erros.

Para mais informações sobre opções de arranque do serviço, consulte Opções de arranque do serviço do Motor de Base de Dados.

Operações internas no Azure SQL Managed Instance

  • Em Base de Dados SQL do Azure e Azure SQL Managed Instance, eventos iniciados por SQLDBControlPlaneFirstPartyApp são uma função interna Azure do plano de controlo Base de Dados SQL do Azure. Eventos iniciados por SQLDBControlPlaneFirstPartyApp fazem parte de uma operação interna de sincronização entre o motor SQL e Azure Resource Manager. Estes eventos são uma parte normal da gestão de recursos e são necessários para a representação e operação corretas dos recursos no Azure.

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.

Pode anexar uma base de dados que tenha uma especificação de auditoria definida a outra edição do SQL Server que não suporta auditoria do SQL Server, como o SQL Server Express, mas que não regista eventos de auditoria.

Espelhamento de bases 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 os alvos do registo de eventos do Windows, a política de segurança do computador onde o servidor espelho está localizado deve permitir o acesso da conta de serviço ao registo de eventos de segurança ou da Aplicação.

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

Permissões

Cada funcionalidade e comando para o SQL Server Audit tem requisitos individuais de permissões.

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

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 verifica se uma sessão de 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.

Criar e gerir auditorias com Transact-SQL

Pode usar instruções DDL, vistas e funções de gestão dinâmica e vistas de catálogo para implementar todos os aspetos do SQL Server Audit.

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 base de dados usando a funcionalidade SQL Server Audit.
ALTERAR AUDITORIA DO SERVIDOR Altera um objeto de auditoria de servidor usando a funcionalidade SQL Server Audit.
ESPECIFICAÇÃO DE AUDITORIA DO ALTER SERVER Altera um objeto de especificação de auditoria de servidor usando a funcionalidade SQL Server Audit.
CRIAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS Cria um objeto de especificação de auditoria de base de dados usando a funcionalidade de auditoria do SQL Server.
CRIAR AUDITORIA DE SERVIDOR Cria um objeto de auditoria de servidor usando o SQL Server Audit.
CRIAR ESPECIFICAÇÃO DE AUDITORIA DO SERVIDOR Cria um objeto de especificação de auditoria de servidor usando a funcionalidade SQL Server Audit.
ELIMINAR A ESPECIFICAÇÃO DE AUDITORIA DA BASE DE DADOS Elimina um objeto de especificação de auditoria de base de dados usando a funcionalidade SQL Server Audit.
AUDITORIA DO DROP SERVER Elimina um objeto de auditoria de servidor utilizando o recurso SQL Server Audit.
ESPECIFICAÇÃO DE AUDITORIA DO DROP SERVER Elimina um objeto de especificação de auditoria de servidor usando a funcionalidade SQL Server Audit.

Vistas e funções dinâmicas

A tabela seguinte lista as vistas dinâmicas e funções que pode usar para a Auditoria do SQL Server.

Vistas e funções dinâmicas Descrição
sys.dm_audit_actions Devolve uma linha para cada ação de auditoria que possa ser reportada no registo de auditoria e para cada grupo de ações de auditoria que possa 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 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 seguinte lista as vistas de catálogo que 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 base de dados numa auditoria do SQL Server numa instância de servidor.
sys.database_audit_specification_details Contém informações sobre as especificações de auditoria de base de dados numa auditoria do SQL Server numa instância de servidor para todas as bases de dados.
sys.server_audits Contém uma linha para cada auditoria do SQL Server numa instância de servidor.
sys.server_audit_specifications Contém informações sobre as especificações de auditoria de servidor numa auditoria do SQL Server numa instância de servidor.
sys.server_audit_specifications_details Contém informações sobre os detalhes (ações) da especificação de auditoria do servidor numa auditoria do SQL Server numa instância de servidor.
sys.server_file_audits Contém informação alargada sobre o tipo de auditoria de ficheiros numa auditoria do SQL Server numa instância de servidor.

Próximo passo