Partilhar via


CRIAR AUDITORIA DE SERVIDOR (Transact-SQL)

Aplica-se a:Servidor SQLInstância Gerenciada SQL do Azure

Cria um objeto de auditoria de servidor usando a Auditoria do SQL Server. Para obter mais informações, consulte Auditoria do SQL Server (Mecanismo de Banco de Dados).

Transact-SQL convenções de sintaxe

Syntax

CREATE SERVER AUDIT audit_name
{
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }
    [ WITH ( <audit_options> [ , ...n ] ) ]
    [ WHERE <predicate_expression> ]
}
[ ; ]

<file_options>::=
{
    FILEPATH = 'os_file_path'
    [ , MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } ]
    [ , { MAX_ROLLOVER_FILES = { integer | UNLIMITED } } | { MAX_FILES = integer } ]
    [ , RESERVE_DISK_SPACE = { ON | OFF } ]
}

<audit_options> ::=
{
    [ QUEUE_DELAY = integer ]
    [ , ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } ]
    [ , AUDIT_GUID = uniqueidentifier ]
    [ , OPERATOR_AUDIT = { ON | OFF } ]
}

<predicate_expression> ::=
{
    [ NOT ] <predicate_factor>
    [ { AND | OR } [ NOT ] { <predicate_factor> } ]
    [ , ...n ]
}

<predicate_factor>::=
    event_field_name { = | < > | != | > | >= | < | <= | LIKE } { number | 'string' }

Arguments

audit_name

O nome da auditoria. Não é possível conter espaços no SQL Server 2019 (15.x) e versões anteriores.

PARA { ARQUIVO | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }

Determina o local do destino da auditoria. As opções são um arquivo binário, o log de aplicativos do Windows ou o log de segurança do Windows. O SQL Server não pode gravar no log de Segurança do Windows sem definir configurações extras no Windows. Para obter mais informações, consulte Gravar eventos de auditoria do SQL Server no log de segurança.

O destino não tem suporte para o URL SQL Server.

Important

Na Instância Gerenciada SQL do Azure, a Auditoria SQL funciona no nível do servidor. Os locais só podem ser URL ou EXTERNAL_MONITOR.

FILEPATH = 'os_file_path'

O caminho do log de auditoria. O nome do arquivo é gerado com base no nome da auditoria e no GUID da auditoria. Se esse caminho for inválido, a auditoria não será criada.

FILEPATH target não tem suporte para a Instância Gerenciada SQL do Azure. Você precisa usar PATH em vez disso.

MAXSIZE = max_size

Especifica o tamanho máximo para o qual o arquivo de auditoria pode crescer. O valor max_size deve ser um inteiro seguido por MB, GB, TB ou UNLIMITED. O tamanho mínimo que você pode especificar para max_size é de 2 MB e o máximo é de 2.147.483.647 TB. Quando UNLIMITED é especificado, o arquivo cresce até que o disco esteja cheio. 0( também indica UNLIMITED.) Especificar um valor inferior a 2 MB gera o erroMSG_MAXSIZE_TOO_SMALL. O valor predefinido é UNLIMITED.

MAXSIZE target não tem suporte para a Instância Gerenciada SQL do Azure.

MAX_ROLLOVER_FILES = { inteiro | ILIMITADO }

Especifica o número máximo de arquivos a serem mantidos no sistema de arquivos, além do arquivo atual. O MAX_ROLLOVER_FILES valor deve ser um inteiro ou UNLIMITED. O valor predefinido é UNLIMITED. Esse parâmetro é avaliado sempre que a auditoria é reiniciada (o que pode acontecer quando a instância do Mecanismo de Banco de Dados é reiniciada ou quando a auditoria é desativada e ativada novamente) ou quando um novo arquivo é necessário porque o MAXSIZE é atingido. Quando MAX_ROLLOVER_FILES é avaliado, se o número de arquivos exceder a MAX_ROLLOVER_FILES configuração, o arquivo mais antigo é excluído. Como resultado, quando a configuração de MAX_ROLLOVER_FILES é 0, um novo arquivo é criado cada vez que a MAX_ROLLOVER_FILES configuração é avaliada. Apenas um arquivo é excluído automaticamente quando MAX_ROLLOVER_FILES a configuração é avaliada, portanto, quando o valor de MAX_ROLLOVER_FILES é reduzido, o número de arquivos não diminui, a menos que os arquivos antigos sejam excluídos manualmente. O número máximo de arquivos que podem ser especificados é 2.147.483.647.

MAX_ROLLOVER_FILES não tem suporte para a Instância Gerenciada SQL do Azure.

MAX_FILES = inteiro

Especifica o número máximo de arquivos de auditoria que podem ser criados. Não rola para o primeiro arquivo quando o limite é atingido. Quando o MAX_FILES limite é atingido, qualquer ação que faça com que mais eventos de auditoria sejam gerados, falha com um erro.

RESERVE_DISK_SPACE = { LIGADO | DESLIGADO }

Esta opção pré-aloca o arquivo no disco para o MAXSIZE valor. Aplica-se apenas se MAXSIZE não for igual a UNLIMITED. O valor predefinido é OFF.

RESERVE_DISK_SPACE target não tem suporte para a Instância Gerenciada SQL do Azure.

QUEUE_DELAY = inteiro

Determina o tempo, em milissegundos, que pode decorrer antes que as ações de auditoria sejam forçadas a ser processadas. Um valor 0 indica entrega síncrona. O valor mínimo de atraso de consulta configurável é 1000 (1 segundo), que é o padrão. O máximo é 2147483647 (2.147.483,647 segundos ou 24 dias, 20 horas, 31 minutos, 23,647 segundos). Especificar um número inválido gera o MSG_INVALID_QUEUE_DELAY erro.

ON_FAILURE = { CONTINUAR | SHUTDOWN - BRASIL | FAIL_OPERATION }

Indica se a instância que grava no destino deve falhar, continuar ou parar o SQL Server se o destino não puder gravar no log de auditoria. O valor predefinido é CONTINUE.

CONTINUE

As operações do SQL Server continuam. Os registros de auditoria não são mantidos. A auditoria continua a tentar registrar eventos e é retomada se a condição de falha for resolvida. Selecionar a opção continuar pode permitir atividades não auditadas, o que pode violar suas políticas de segurança. Use essa opção quando a operação contínua do Mecanismo de Banco de Dados for mais importante do que manter uma auditoria completa.

SHUTDOWN

Força o encerramento da instância do SQL Server se o SQL Server não conseguir gravar dados no destino de auditoria por qualquer motivo. O logon que executa a instrução deve ter a permissão dentro do CREATE SERVER AUDITSHUTDOWN SQL Server. O comportamento de desligamento persiste mesmo se a SHUTDOWN permissão for posteriormente revogada do login em execução. Se o usuário não tiver essa permissão, a instrução falhará e a auditoria não será criada. Use a opção quando uma falha de auditoria puder comprometer a segurança ou a integridade do sistema. Para obter mais informações, consulte SHUTDOWN.

FAIL_OPERATION

As ações do banco de dados falham se causarem eventos auditados. As ações que não causam eventos auditados podem continuar, mas nenhum evento auditado pode ocorrer. A auditoria continua a tentar registrar eventos e é retomada se a condição de falha for resolvida. Use essa opção quando a manutenção de uma auditoria completa for mais importante do que o acesso total ao Mecanismo de Banco de Dados.

AUDIT_GUID = uniqueidentifier

Para oferecer suporte a cenários como espelhamento de banco de dados ou bancos de dados que participam de um grupo de disponibilidade Always On, uma auditoria precisa de um GUID específico que corresponda ao GUID encontrado no banco de dados espelhado. O GUID não pode ser modificado após a criação da auditoria.

OPERATOR_AUDIT

Aplica-se a: Somente Instância Gerenciada SQL do Azure.

Indica se a auditoria captura as operações do engenheiro de suporte da Microsoft quando eles precisam acessar seu servidor durante uma solicitação de suporte.

predicate_expression

Especifica a expressão de predicado usada para determinar se um evento deve ser processado ou não. As expressões de predicados são limitadas a um comprimento de 3.000 caracteres, o que limita os argumentos de cadeia de caracteres.

event_field_name

O nome do campo de evento que identifica a origem do predicado. Os campos de auditoria são descritos em sys.fn_get_audit_file. Todos os campos podem ser filtrados, exceto file_name, audit_file_offsete event_time.

Note

Embora os action_id campos e class_type sejam do tipo varchar in sys.fn_get_audit_file, eles só podem ser usados com números quando são uma fonte de predicados para filtragem. Para obter a lista de valores a serem usados com class_typeo , execute a seguinte consulta:

SELECT spt.[name], spt.[number]
FROM   [master].[dbo].[spt_values] spt
WHERE spt.[type] = N'EOD'
ORDER BY spt.[name];

number

Qualquer tipo numérico, incluindo decimal. As limitações são a falta de memória física disponível ou um número muito grande para ser representado como um inteiro de 64 bits.

'string'

Uma cadeia de caracteres ANSI ou Unicode, conforme exigido pelo predicado, compare. Nenhuma conversão implícita de tipo de cadeia de caracteres é executada para as funções de comparação de predicados. Passar o tipo errado resulta em um erro.

Remarks

Quando uma auditoria de servidor é criada, ela está em um estado desativado.

A CREATE SERVER AUDIT declaração está no escopo de uma transação. Se a transação for revertida, a instrução também será revertida.

Permissions

Para criar, alterar ou descartar uma auditoria de servidor, as entidades de segurança exigem a ALTER ANY SERVER AUDIT ou a CONTROL SERVER permissão.

Ao salvar informações de auditoria em um arquivo, para ajudar a evitar adulterações, restrinja o acesso ao local do arquivo.

Examples

A. Criar uma auditoria de servidor com um destino de arquivo

O exemplo a seguir cria uma auditoria de servidor chamada HIPAA_Audit com um arquivo binário como destino e sem opções.

CREATE SERVER AUDIT HIPAA_Audit TO FILE (
    FILEPATH = '\\SQLPROD_1\Audit\'
);

B. Criar uma auditoria de servidor com um destino de log de aplicativos do Windows com opções

O exemplo a seguir cria uma auditoria de servidor chamada HIPAA_Audit com o destino definido para o log de aplicativos do Windows. A fila é gravada a cada segundo e desliga o mecanismo do SQL Server em caso de falha.

CREATE SERVER AUDIT HIPAA_Audit TO APPLICATION_LOG
WITH (QUEUE_DELAY = 1000, ON_FAILURE = SHUTDOWN);

C. Criar uma auditoria de servidor contendo uma cláusula WHERE

O exemplo a seguir cria um banco de dados, esquema e duas tabelas para o exemplo. A tabela nomeada DataSchema.SensitiveData contém dados confidenciais e o acesso à tabela deve ser registrado na auditoria. A tabela nomeada DataSchema.GeneralData não contém dados confidenciais. A especificação de auditoria de banco de dados audita o DataSchema acesso a todos os objetos no esquema. A auditoria do servidor é criada com uma cláusula WHERE que limita a auditoria do servidor apenas à SensitiveData tabela. A auditoria do servidor presume que existe uma pasta de auditoria em C:\SQLAudit.

CREATE DATABASE TestDB;
GO

USE TestDB;
GO

CREATE SCHEMA DataSchema;
GO

CREATE TABLE DataSchema.GeneralData
(
    ID INT PRIMARY KEY,
    DataField VARCHAR (50) NOT NULL
);
GO

CREATE TABLE DataSchema.SensitiveData
(
    ID INT PRIMARY KEY,
    DataField VARCHAR (50) NOT NULL
);
GO

-- Create the server audit in the master database
USE master;
GO

CREATE SERVER AUDIT AuditDataAccess TO FILE (FILEPATH = 'C:\SQLAudit\')
    WHERE object_name = 'SensitiveData';
GO

ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);
GO

-- Create the database audit specification in the TestDB database
USE TestDB;
GO

CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
    FOR SERVER AUDIT [AuditDataAccess]
    ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
    WITH(STATE = ON);
GO

-- Trigger the audit event by selecting from tables
SELECT ID,
       DataField
FROM DataSchema.GeneralData;

SELECT ID,
       DataField
FROM DataSchema.SensitiveData;
GO

-- Check the audit for the filtered content
SELECT *
FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit', DEFAULT, DEFAULT);
GO

Transact-SQL reference