Compartilhar via


Auditoria do SQL Server (Mecanismo de Banco de Dados)

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.

Há vários níveis de auditoria para o SQL Server, dependendo dos requisitos governamentais ou 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 de 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 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. A auditoria no nível do banco de dados é limitada às edições Enterprise, Developer e Evaluation. Para obter mais informações, consulte Features Supported by the Editions of SQL Server 2014.

Componentes de auditoria do SQL Server

Uma auditoria é o agrupamento de vários elementos em um único pacote para um grupo específico de ações de servidor ou ações de banco de dados. Os componentes da auditoria do SQL Server são combinados 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.

A auditoria do 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 ú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 do SQL Server. Você pode ter várias auditorias por instância do SQL Server.

Ao definir uma auditoria, especifique o local para a saída dos resultados. Este é o destino da auditoria. A auditoria é criada em um estado desabilitado 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 Especificação de 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 do SQL Server.

A especificação de auditoria do servidor coleta muitos grupos de ações em nível de servidor gerados pela funcionalidade de Eventos Estendidos. Você pode incluir grupos de ações de auditoria em uma especificação de auditoria de 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 registra no destino.

Os grupos de ações de auditoria do nível do servidor são descritos no tópico Grupos de Ações de Auditoria e Ações do SQL Server.

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 do banco de dados coleta ações de auditoria no nível do 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 registra no alvo. Não inclua objetos com escopo de servidor, como as visões do sistema, em uma especificação de auditoria de banco de dados de usuário.

Grupos de ações de auditoria no nível do banco de dados e ações de auditoria são descritos no tópico Grupos de Ações e Ações de Auditoria do SQL Server.

Meta

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 windows. Os logs devem ser revisados e arquivados periodicamente para garantir que o destino tenha espaço suficiente para gravar registros adicionais.

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 de Segurança do Windows e é menos seguro do que o log de eventos de Segurança do Windows.

Escrever no log de Segurança do Windows requer que a conta de serviço da SQL Server seja adicionada à política 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 configurada usando o snap-in de política de segurança (secpol.msc). Além disso, a política de segurança de Acesso a objetos de auditoria deve ser habilitada para êxito e falha. Essa configuração pode ser configurada usando o snap-in de política de segurança (secpol.msc). No Windows Vista ou no Windows Server 2008, 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 da Base de Dados de Conhecimento 921469, Como usar a Política de Grupo para configurar a auditoria de segurança detalhada. 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 que estão autorizados a ler arquivos de auditoria devem ter permissão de leitura.

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 acessar o arquivo, logons do SQL Server com permissão CONTROL SERVER podem utilizar 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 no master.sys.fn_get_audit_file. Isso registra os logins que possuem a permissão CONTROL SERVER e 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 arquivo morto e assim por diante), as ACLs no novo local deverão ser reduzidas às seguintes permissões:

  • Administrador de Auditoria – Leitura/Gravação

  • Leitor de Auditoria – Leitura

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 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 adicional contra acesso não autorizado criptografando a pasta na qual o arquivo de auditoria é armazenado usando o Windows BitLocker Drive Encryption ou o Windows Encrypting File System.

Para obter mais informações sobre os registros de auditoria gravados no destino, consulte Registros de Auditoria do SQL Server.

Visão geral do uso da auditoria do SQL Server

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

Você pode ler os logs de eventos do Windows usando o utilitário Visualizador de Eventos no Windows. Para destinos de arquivo, você pode usar o Visualizador de Arquivos 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 é o seguinte.

  1. Crie uma auditoria e defina o objetivo.

  2. Crie uma especificação de auditoria do servidor ou de banco de dados que se associe à 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 Log File Viewer ou 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 auditoria de servidor e uma especificação de auditoria de banco de dados.

Considerações

No caso de uma falha durante o início da auditoria, o servidor não será 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 evento MSG_AUDIT_FORCED_SHUTDOWN será gravado no log. Como o desligamento ocorrerá no primeiro encontro dessa configuração, o evento será gravado uma vez. Este evento é registrado após a mensagem de falha da auditoria que levou ao desligamento. Um administrador pode ignorar desligamentos induzidos por auditoria iniciando o SQL Server no modo usuário único usando o sinalizador -m . Se você iniciar no modo de usuário único, irá reduzir qualquer auditoria em que ON_FAILURE=SHUTDOWN seja especificado para executar nessa sessão como ON_FAILURE=CONTINUE. Quando o SQL Server é iniciado usando o sinalizador -m, a mensagem MSG_AUDIT_SHUTDOWN_BYPASSED será registrada 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.

Anexando um banco de dados com uma auditoria definida

Anexar um banco de dados que tenha uma especificação de auditoria e especificar um GUID que não existe no servidor causará uma especificação de auditoria órfã . Como uma auditoria com um GUID correspondente não existe na instância do servidor, nenhum evento de auditoria será registrado. 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 comando CREATE SERVER AUDIT 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 registrará 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 incluirá a especificação de auditoria de banco de dados. Para funcionar corretamente na instância do SQL espelhada, os seguintes itens devem ser configurados:

  • O servidor espelho deve ter uma auditoria com o mesmo GUID para habilitar a especificação de auditoria do banco de dados a registrar registros de auditoria. Isso pode ser configurado usando o comando CREATE AUDIT WITH GUID=<GUID da Auditoria do Servidor de origem>.

  • Para arquivos binários de destino, a conta de serviço do servidor espelho deve ter as permissões adequadas para acessar o local onde a trilha de auditoria está sendo gravada.

  • Para os destinos do log de eventos do Windows, a política de segurança no computador onde o servidor de espelhamento está localizado deve permitir que a conta de serviço acesse o log de eventos de segurança ou de aplicativo.

Auditando administradores

Os membros da sysadmin função de servidor fixa 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 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

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

ALTER AUTHORIZATION CRIAR AUDITORIA DE SERVIDOR
ALTER DATABASE AUDIT SPECIFICATION CRIAR ESPECIFICAÇÃO DE AUDITORIA DO SERVIDOR
ALTERAR AUDITORIA DE SERVIDOR REMOVER ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS
ALTER SERVER AUDIT SPECIFICATION DROP SERVER AUDIT
CRIAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS DROP SERVER AUDIT SPECIFICATION

Exibiçõ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 a 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 relatada no log de auditoria e em todos os grupos de ações de auditoria que podem ser configurados 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 no 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 do SQL Server.

Exibiçõ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 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 de servidor.
sys.server_audit_specifications Contém informações sobre as especificações de auditoria do 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 da especificação de auditoria do servidor (ações) durante uma auditoria 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 do SQL Server em uma instância de servidor.

Permissões

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

Para criar, alterar ou remover uma Auditoria de Servidor ou Uma Especificação de Auditoria de Servidor, as entidades de segurança do servidor exigem a permissão ALTER ANY SERVER AUDIT ou CONTROL SERVER. Para criar, alterar ou remover uma Especificação de Auditoria de Banco de Dados, as entidades de 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 permissões ALTER ANY SERVER AUDIT ou CONTROL SERVER.

A menos que especificado de outra forma, exibir exibições de catálogo requer que uma entidade de segurança tenha uma das seguintes opções:

  • Associação à função de sysadmin de servidor fixo.

  • A permissão CONTROL SERVER.

  • A permissão VIEW SERVER STATE.

  • A permissão ALTER ANY AUDIT.

  • A permissão VIEW AUDIT STATE (fornece apenas o acesso principal à exibição de catálogo sys.server_audits).

Um principal deve ter a permissão VIEW SERVER STATE ou ALTER ANY AUDIT para usar as Views Dinâmicas de Gerenciamento.

Para obter mais informações sobre como conceder direitos e permissões, consulte GRANT (Transact-SQL).

Cuidado

As entidades de segurança na função sysadmin podem adulterar qualquer componente de auditoria e as que estão na função db_owner podem adulterar as especificações de auditoria em um banco de dados. A Auditoria do SQL Server validará que 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. Você deve assumir que todas as Especificações de Auditoria de Banco de Dados são tão confiáveis quanto as entidades de segurança na função sysadmin ou db_owner.

Criar uma auditoria de servidor e uma especificação de auditoria de servidor

Criar uma auditoria de servidor e uma especificação de auditoria de banco de dados

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 do SQL Server. Os registros de auditoria são armazenados no log de aplicativos do Windows.

Opção de configuração do servidor do 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 saber mais, confira SQL Server Profiler.

Rastreamento do SQL
Explica como o Rastreamento de 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 você pode usar gatilhos DDL (Linguagem de Definição de Dados) para controlar as alterações em seus bancos de dados.

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

Consulte Também

Ações e grupos de ações de auditoria do SQL Server
Registros de auditoria do SQL Server