SQL Server Audit (Database Engine)

  • 01/01/2020
  • 13 minutes to read
    • D
    • v
    • M
    • M
    • D
    • +8

Applies to: yesSQL Server (todas as versões suportadas) YesAzure SQL Managed Instance

Audit an instance of the SQL Server Database Engine or an individual database involves tracking and logging events that occur on the Database Engine. A auditoria do servidor SQL permite criar auditorias do servidor, que podem conter especificações de auditoria do servidor para eventos de nível do servidor, e especificações de auditoria de banco de dados para eventos de nível do banco de dados. Os eventos auditados podem ser escritos nos logs dos eventos ou nos arquivos de auditoria.

importante

em instância controlada Azure SQL, esta característica T-SQL tem certas alterações de comportamento. Veja a Instância Gerenciada Azure SQL diferenças T-SQL do servidor SQL para detalhes de todas as alterações de comportamento T-SQL.

existem vários níveis de auditoria para o servidor SQL, dependendo dos requisitos governamentais ou padrões para a sua instalação. A SQL Server Audit fornece as ferramentas e processos que você deve ter para ativar, armazenar e visualizar auditorias em vários objetos de servidor e banco de dados.

pode gravar grupos de acção de auditoria do servidor por instância e grupos de acção de auditoria de bases de dados ou acções de auditoria de bases de dados por base de dados. O evento de auditoria ocorrerá sempre que a ação auditável for encontrada.

todas as edições do SQL Server support server level audit. Todas as edições suportam auditorias de nível de banco de dados começando com o servidor SQL 2016 (13.x) SP1. Antes disso, a auditoria de nível de banco de dados foi limitada a empresas, desenvolvedores e edições de avaliação. Para mais informações, consulte os recursos suportados pelas edições do SQL Server 2016.

Nota

este tópico aplica-se ao servidor SQL. Para a base de dados SQL, veja Get started with SQL database auditing.Uma auditoria é a combinação de vários elementos em um único pacote para um grupo específico de ações de servidores ou ações de bases de dados. Os Componentes da auditoria SQL Server combinam-se para produzir uma saída que é chamada de auditoria, assim como uma definição de relatório combinada com gráficos e elementos de dados produz um relatório.

SQL Server audit usa Eventos Estendidos para ajudar a criar uma auditoria. Para mais informações sobre Eventos Estendidos, consulte Eventos Estendidos.

SQL Server Audit

the SQL Server Audit object collectes a single instance of server or database-level actions and groups of actions to monitor. A auditoria está ao nível da instância do servidor SQL. Você pode ter várias auditorias por instância de servidor SQL.

quando você define uma auditoria, você especifica a localização para o resultado dos resultados. Este é o destino da auditoria. A auditoria é criada em um estado com deficiência, e não audita automaticamente quaisquer ações. Após a auditoria ser ativada, o destino da auditoria recebe dados da auditoria.

Especificação de auditoria do servidor

o objecto da especificação de auditoria do servidor pertence a uma auditoria. Você pode criar uma especificação de auditoria de servidor por auditoria, porque ambos são criados no âmbito de instância de servidor SQL.

a especificação de auditoria do servidor recolhe muitos grupos de acção ao nível do servidor criados pela funcionalidade de eventos alargados. Você pode incluir grupos de ação de auditoria em uma especificação de auditoria do servidor. Grupos de ação de auditoria são grupos predefinidos de ações, que são eventos atômicos que ocorrem no motor de banco de dados. Estas acções são enviadas à auditoria, que as regista no alvo.

os grupos de acção de auditoria ao nível dos servidores são descritos no tópico grupos de Acção e acções de auditoria ao servidor SQL.

Database Audit Specification

the Database Audit Specification object also belongs to a SQL Server audit. Você pode criar uma especificação de auditoria de banco de dados por base de dados do servidor SQL por auditoria.

a especificação de auditoria da base de dados recolhe acções de auditoria ao nível da base de dados criadas pela funcionalidade de eventos alargados. Você pode adicionar grupos de ação 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 do servidor SQL. Os grupos de acção de auditoria são grupos de acções predefinidos. Ambos estão no âmbito da base de dados SQL Server. Estas acções são enviadas à auditoria, que as regista no alvo. Não incluir objetos escopados pelo servidor, como as vistas do sistema, em uma especificação de auditoria de banco de dados do Usuário.

grupos de acção de auditoria ao nível de bases de dados e acções de auditoria são descritos no tópico grupos de Acção e acções de auditoria ao servidor SQL.

alvo

os resultados de uma auditoria são enviados para um alvo, que pode ser um ficheiro, o registo de eventos de segurança do Windows, ou o registo de eventos da aplicação do Windows. Os Logs devem ser revisados e arquivados periodicamente para garantir que o alvo tenha espaço suficiente para escrever registros adicionais.

importante

qualquer utilizador autenticado pode ler e escrever no Registo de eventos da aplicação do Windows. O registo de eventos da aplicação requer permissões mais baixas do que o registo de eventos de segurança do Windows e é menos seguro do que o registo de eventos de segurança do Windows.

escrever no Diário de segurança do Windows requer que a conta de serviço do servidor SQL seja adicionada à Política de gerar auditorias de segurança. Por padrão, o sistema Local, Serviço Local e serviço de rede são parte desta Política. Esta configuração pode ser configurada usando a Política de segurança snap-in (secpol.mestrado). Além disso, a Política de segurança de acesso a objetos de auditoria deve ser capacitada tanto para o sucesso quanto para o fracasso. Esta configuração pode ser configurada usando a Política de segurança snap-in (secpol.mestrado). No Windows Vista ou Windows Server 2008, você pode definir a Política de aplicação mais granular gerada a partir da linha de comandos usando o programa de política de auditoria (AuditPol.exe). Para mais informações sobre os passos para permitir a escrita no diário de segurança do Windows, veja Write SQL Server Audit Events no Diário de segurança. Para mais informações sobre a Auditpol.programa exe, ver base de conhecimentos artigo 921469, como usar a Política de grupo para configurar a auditoria de segurança detalhada. Os registros de eventos do Windows são globais para o Sistema Operacional Windows. Para mais informações sobre os registros de eventos do Windows, veja a visão geral do Visualizador de eventos. Se precisar de permissões mais precisas na auditoria, use o alvo do ficheiro binário.

quando você está guardando informações de auditoria para um arquivo, para ajudar a evitar adulterações, você pode restringir o acesso à localização do arquivo das seguintes formas:

  • a conta SQL Server Service deve ter tanto a permissão de leitura como de Escrita.

  • os administradores de auditoria normalmente requerem permissão de leitura e escrita. Isto assume que os administradores de auditoria são Contas Windows para a administração de arquivos de auditoria, tais como: copiá-los para diferentes ações, backup-los, 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 motor de banco de dados está escrevendo para um arquivo, outros usuários do Windows podem ler o arquivo de auditoria, se tiverem permissão. O motor de banco de dados não tem um bloqueio exclusivo que impede as operações de leitura.

porque o motor de banco de dados pode acessar o arquivo, logins do servidor SQL que têm permissão do servidor de controle pode usar o motor 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.sistema.fn_get_audit_file. Isto registra os logins com permissão do servidor de controle que acessaram o arquivo de auditoria através do servidor SQL.

se um administrador de auditoria copiar o ficheiro para um local diferente (para fins de arquivo, e assim por diante), as SCA na nova localização devem ser reduzidas para as seguintes permissões:

  • Administrador de Auditoria – Ler / Escrever

  • Auditoria Leitor – 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, a qual somente os Administradores de Auditoria ou Auditoria, os Leitores têm acesso. Usando uma instância separada do motor de banco de dados para relatar, você pode ajudar a impedir que usuários não autorizados obtenham acesso ao registro de auditoria.

pode oferecer protecção adicional contra o acesso não autorizado cifrando a pasta na qual o ficheiro de auditoria é armazenado usando a encriptação da unidade de BitLocker do Windows ou o sistema de Ficheiros de encriptação do Windows.

para mais informações sobre os registos de auditoria que são escritos ao alvo, consulte os registos de auditoria do servidor SQL.

Visão Geral da utilização da auditoria do servidor SQL

pode utilizar o Estúdio de gestão do servidor SQL ou o Transact-SQL para definir uma auditoria. Após a auditoria ser criada e ativada, o alvo receberá entradas.

pode ler os registos de eventos do Windows usando o utilitário de visualização de Eventos no Windows. Para os alvos de Ficheiros, pode usar o Visualizador de Ficheiros de registo no SQL Server Management Studio ou a função fn_get_audit_ file para ler o ficheiro de destino.

o processo geral de criação e utilização de uma auditoria é o seguinte.

  1. crie uma auditoria e defina o alvo.

  2. crie uma especificação de auditoria do servidor ou uma especificação de auditoria de banco de dados que mapeie a auditoria. Activar a especificação de auditoria.

  3. activar a auditoria.

  4. leia os eventos de auditoria usando o Visualizador de Eventos do Windows, O Visualizador de Ficheiros de registo ou a função fn_get_audit_ file.

para 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

Em caso de falha durante o início da auditoria, o servidor não iniciará. Neste caso, o servidor pode ser iniciado usando a opção-f na linha de comandos.

quando uma falha de auditoria faz com que o servidor desligue ou não inicie porque ON_FAILURE=SHUTDOWN é especificado para a auditoria, o evento MSG_AUDIT_FORCED_SHUTDOWN será escrito no registo. Como o encerramento ocorrerá no primeiro encontro desta configuração, o evento será escrito uma vez. Este evento é escrito após a mensagem de falha para a auditoria que causou o encerramento. Um administrador pode contornar as paradas induzidas pela auditoria iniciando o servidor SQL em Modo de usuário único usando a bandeira-M. Se iniciar no modo de utilizador único, irá reduzir qualquer auditoria onde o ON_ FALLURE=desligamento é indicado para correr nessa sessão como ON_ FALLURE=continuar. Quando o servidor SQL é iniciado usando a bandeira-m, a mensagem MSG_AUDIT_SHUTDOWN_ bypassed será escrita no registo de erros.

para mais informações sobre as opções de arranque do serviço, consulte as opções de arranque do serviço do motor da Base de dados.

anexar uma base de dados com uma auditoria definida

anexar uma base de dados que tem uma especificação de auditoria e especifica um GUID que não existe no servidor irá causar uma especificação de auditoria órfã. Uma vez que uma auditoria com um GUID correspondente não existe na instância do servidor, nenhum evento de auditoria será gravado. 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 comando CREATE SERVER AUDIT para criar uma nova auditoria do servidor com o GUID indicado.

pode anexar uma base de dados que tenha uma especificação de auditoria definida nela a outra edição do servidor SQL que não suporte a auditoria do servidor SQL, como o SQL Server Express, mas que não irá registar eventos de auditoria.

Database Mirroring and SQL Server Audit

a database that has a database audit specification defined and that uses database mirroring will include the database audit specification. Para funcionar corretamente na instância de SQL espelhada, os seguintes itens devem ser configurados:

  • O servidor espelho deve ter uma auditoria com a mesma GUID para permitir a especificação de auditoria de banco para gravar registros de auditoria. Isto pode ser configurado usando o comando Criar auditoria com GUID = <GUID a partir da auditoria do servidor de código>.

  • para os alvos de ficheiros binários, a conta de serviço do servidor espelho deve ter permissões adequadas para o local onde a pista de auditoria está a ser escrita.

  • para os alvos do Diário de eventos do Windows, a Política de segurança no computador onde o servidor espelho está localizado deve permitir o acesso da conta de serviço ao registro de eventos de segurança ou aplicação.

administradores de auditoria

membros da função Servidor fixo do 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 do dbo.

criação e gestão de auditorias com Transact-SQL

pode utilizar declarações DDL, visões e funções de gestão dinâmica, e visualizações de catálogos para implementar todos os aspectos da auditoria do servidor SQL.

Declaração da linguagem de definição de dados

pode utilizar as seguintes declarações DDL para criar, alterar e largar especificações de auditoria:

instruções de DDL Descrição
ALTER AUTHORIZATION Altera a propriedade de um item.
alterar a especificação de auditoria da base de dados altera um objecto de especificação de auditoria da base de dados usando a funcionalidade de auditoria do servidor SQL.
alterar a auditoria do servidor altera um objecto de auditoria do servidor usando a funcionalidade de auditoria do servidor SQL.
alterar a especificação de auditoria do servidor altera um objecto de especificação de auditoria do servidor usando a funcionalidade de auditoria do servidor SQL.
criar a especificação de auditoria da base de dados cria um objecto de especificação de auditoria da base de dados usando a funcionalidade de auditoria do servidor SQL.
criar a auditoria do servidor cria um objecto de auditoria do servidor usando a auditoria do servidor SQL.
criar a especificação de auditoria do servidor cria um objecto de especificação de auditoria do servidor usando a funcionalidade de auditoria do servidor SQL.
DROP DATABASE AUDIT SPECIFICATION Drops a database audit specification object using the SQL Server Audit feature.
DROP SERVER AUDIT Drops a Server Audit Object using the SQL Server Audit feature.
DROP SERVER AUDIT SPECIFICATION Drops a server audit specification object using the SQL Server Audit feature.

vistas e funções dinâmicas

a tabela seguinte lista as vistas dinâmicas e a função que pode usar para a auditoria do servidor SQL.

visualizações Dinâmicas e funções Descrição
sys.dm_audit_actions devolve uma linha para cada acção de auditoria que possa ser reportada no registo de auditoria e em cada grupo de acção de auditoria que possa ser configurado como parte da auditoria do servidor SQL.
sys. dm_server_audit_status fornece informações sobre o estado actual da auditoria.
sys.dm_audit_class_type_map Retorna uma tabela que mapeia o class_type campo no log de auditoria para o class_desc campo em sys.dm_audit_actions.
função fn_get_audit_file Retorna informações de uma auditoria de arquivo criado por um servidor de auditoria.

vistas de catálogo

a tabela seguinte lista as vistas de catálogo que você pode usar para a auditoria do servidor SQL.

exibições do Catálogo Descrição
sys.database_audit_specifications Contains information about the database audit specifications in a SQL Server audit on a server instance.
sys.database_audit_ specification_details contém informações sobre as especificações de auditoria da base de dados numa auditoria do servidor SQL numa instância de servidor para todas as bases de dados.
sys.server_audits Contains one row for each SQL Server audit in a server instance.
sys.server_audit_specifications Contains information about the server audit specifications in a SQL Server audit on a server instance.
sys.server_audit_ specifications_details contém informação sobre os detalhes da especificação de auditoria do servidor (acções) numa auditoria do servidor SQL numa instância do servidor.
sys.server_file_audits Contains stores extended information about the file audit type in a SQL Server audit on a server instance.

permissões

cada funcionalidade e comando para a auditoria do servidor SQL tem requisitos de permissão individuais.

para criar, alterar ou largar uma auditoria do servidor ou especificação de auditoria do servidor, os princípios do servidor requerem a alteração de qualquer auditoria do servidor ou a permissão do servidor de controle. Para criar, alterar ou largar uma especificação de auditoria de banco de dados, os principais de banco de dados requerem a alteração de qualquer permissão de auditoria de banco de dados ou a alteração ou permissão de controle na base de dados. Além disso, os diretores devem ter permissão para se conectar à base de dados, ou alterar qualquer auditoria do servidor ou permissões de controle do servidor.

a janela qualquer permissão de definição oferece acesso para ver as vistas de auditoria ao nível do servidor e a definição de visualização oferece acesso para ver as vistas de auditoria ao nível da base de dados. A negação dessas permissões, sobrepõe-se à capacidade de ver as vistas do catálogo, mesmo que o principal tenha a alterar qualquer auditoria do servidor ou alterar quaisquer permissões de auditoria de banco de dados.

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

Caution

Principals in the sysadmin role can tamper with any audit component and those in the DB_ Owner role can tamper with audit specifications in a database. SQL Server Audit validará que um logon que cria ou altera uma especificação de auditoria tem pelo menos a alterar qualquer permissão de auditoria de banco de dados. No entanto, ele não faz nenhuma validação quando você anexar uma base de dados. Você deve assumir que todas as especificações de auditoria de banco de dados são apenas tão confiáveis quanto aqueles principais na função sysadmin ou DB_ proprietário.

Criar um Servidor de Auditoria e Especificação de Auditoria de Servidor

Criar um Servidor de Auditoria e Especificação de Auditoria de Banco

modo de Exibição SQL Server Log de Auditoria

Escrever SQL Server Eventos de Auditoria no Log de Segurança

Propriedades do Servidor (Segurança Página)
Explica como activar a auditoria de logon para o SQL Server. Os registos de auditoria são armazenados no registo de aplicações do Windows.

c2 opção de configuração do servidor de modo de auditoria
explica o modo de auditoria de Conformidade de segurança C2 no servidor SQL.

categoria de Eventos de auditoria de segurança (SQL Server Profiler)
explica os eventos de auditoria que pode utilizar no SQL Server Profiler. Para mais informações, consulte o perfil do servidor SQL.

SQL Trace
explica como o SQL Trace pode ser usado dentro de suas próprias aplicações para criar traces manualmente, em vez de usar o SQL Server Profiler.

gatilhos DDL
explica como pode usar os gatilhos da linguagem de definição de dados (DDL) para acompanhar as alterações nas suas bases de dados.

Microsoft TechNet: SQL Server TechCenter: SQL Server 2005 Security and Protection
fornece informações atualizadas sobre a segurança do servidor SQL.

Ver também

SQL Server Audit Action Groups and Actions
SQL Server Audit Records