CRIAR AUDITORIA DE SERVIDOR (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

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

Convenções de sintaxe de Transact-SQL

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 } ]
    [ , RETENTION_DAYS = integer ]
}

<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. O SQL Server 2019 (15.x) e versões anteriores não podem conter espaços no nome da auditoria.

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 do Aplicativo 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, veja Gravar eventos de auditoria do SQL Server no log de segurança.

A URL de destino não tem suporte para SQL Server.

Important

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

CAMINHO DO ARQUIVO = '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.

A FILEPATH de destino não tem suporte para a Instância Gerenciada de SQL do Azure. Você precisará usar PATH em vez disso.

MAXSIZE = max_size

Especifica o tamanho máximo até o qual o arquivo de auditoria pode crescer. O valor de max_size deve ser um inteiro seguido de MB, GB, TB ou UNLIMITED. O tamanho mínimo que você pode especificar para max_size é 2 MB e o máximo é 2.147.483.647 TB. Quando você especifica UNLIMITED, o arquivo aumenta até que o disco esteja cheio. (0 também indica UNLIMITED.) A especificação de um valor inferior a 2 MB gera o erro MSG_MAXSIZE_TOO_SMALL. O valor padrão é UNLIMITED.

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

MAX_ROLLOVER_FILES = { inteiro | UNLIMITED }

Especifica o número máximo de arquivos a serem retidos no sistema de arquivos além do arquivo atual. O valor de MAX_ROLLOVER_FILES deve ser um inteiro ou UNLIMITED. O valor padrão é UNLIMITED. Este parâmetro é avaliado sempre que a auditoria é reiniciada (o que pode ocorrer quando a instância do Mecanismo de Banco de Dados é reiniciada ou quando a auditoria é desativada e, em seguida, reativada) ou quando um novo arquivo é necessário porque o MAXSIZE foi alcançado. Quando MAX_ROLLOVER_FILES é avaliado, se o número de arquivos excede a configuração de MAX_ROLLOVER_FILES, o arquivo mais antigo é excluído. Como resultado, quando a configuração de MAX_ROLLOVER_FILES é 0, um novo arquivo é criado sempre que a configuração de MAX_ROLLOVER_FILES é avaliada. Somente um arquivo é excluído automaticamente quando a configuração de MAX_ROLLOVER_FILES é 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 você pode especificar é 2.147.483.647.

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

MAX_FILES = inteiro

Especifica o número máximo de arquivos de auditoria que pode ser criado. A auditoria não é revertida 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 falhará com um erro.

RESERVE_DISK_SPACE = { ON | DESLIGADO }

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

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

QUEUE_DELAY = inteiro

Determina a hora, em milissegundos, que pode decorrer antes que o processamento das ações de auditoria seja forçado. 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 erro MSG_INVALID_QUEUE_DELAY.

ON_FAILURE = { CONTINUAR | DESLIGAMENTO | FAIL_OPERATION }

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

CONTINUE

SQL Server As operações continuam. Os registros de auditoria não são retidos. A auditoria continua tentando registrar eventos em log e retoma se a condição de falha é resolvida. A seleção da opção Continuar pode permitir atividades não auditadas, o que pode violar as políticas de segurança. Use essa opção, quando continuar a operação do Mecanismo de Banco de Dados é mais importante do que manter uma auditoria completa.

SHUTDOWN

Força a instância de SQL Server a ser desligada, caso o SQL Server não possa gravar dados no destino de auditoria por qualquer motivo. O logon que executa a instrução CREATE SERVER AUDIT deve ter a permissão SHUTDOWN no SQL Server. O comportamento de desligamento persiste mesmo se a permissão SHUTDOWN é revogada posteriormente do logon 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

Haverá falha nas ações do banco de dados se elas provocarem eventos auditados. Ações que não causam eventos auditados podem continuar, mas nenhum evento auditado pode ocorrer. A auditoria continua tentando registrar eventos em log e retoma se a condição de falha é resolvida. Use essa opção, quando manter uma auditoria completa for mais importante do que o acesso total ao Mecanismo de Banco de Dados.

AUDIT_GUID = identificador exclusivo

Para dar 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. Você não pode modificar o GUID depois de criar a auditoria.

OPERATOR_AUDIT

Aplica-se apenas à: Instância Gerenciada de SQL do Azure.

Indica se a auditoria capturará as operações dos engenheiros de suporte da Microsoft quando eles precisarem acessar o servidor durante uma solicitação de suporte.

RETENTION_DAYS = inteiro

Aplica-se apenas a: Instância Gerenciada de SQL do Azure e Banco de Dados SQL do Azure.

Indica o número de dias para armazenar o arquivo de log de auditoria.

predicate_expression

Especifica a expressão de predicado usada para determinar se um evento deve ser processado ou não. As expressões de predicado 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. Você pode filtrar todos os campos, exceto file_name, audit_file_offsete event_time.

Embora os campos e class_type os action_id campos sejam do tipo varchar insys.fn_get_audit_file, você só pode usá-los com números quando eles são uma fonte de predicado para filtragem. Para obter a lista de valores a serem usados class_type, execute a seguinte consulta:

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

número

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

'string'

Uma cadeia de caracteres ANSI ou Unicode, conforme requerido pela comparação de predicado. As funções de comparação de predicado não executam nenhuma conversão de tipo de cadeia de caracteres implícita. A transferência do tipo incorreto resulta em um erro.

Remarks

Uma auditoria de servidor é criada em um estado desabilitado.

A instrução CREATE SERVER AUDIT faz parte de uma transação. Se você reverter a transação, a instrução também será revertida.

Permissions

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

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

Examples

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

O exemplo a seguir cria uma auditoria de servidor nomeada HIPAA_Audit com um arquivo binário como destino e nenhuma opção.

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 nomeada HIPAA_Audit com o conjunto de destino para o log de aplicativos do Windows. A fila é gravada a cada segundo e o mecanismo do SQL Server é desligado 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 que contém uma cláusula WHERE

O exemplo a seguir cria um banco de dados, um esquema e duas tabelas para o exemplo. A tabela chamada DataSchema.SensitiveData contém dados confidenciais e o acesso à tabela deve ser registrado na auditoria.

A tabela denominada DataSchema.GeneralData não contém dados confidenciais. A especificação de auditoria de banco de dados audita acesso a todos os objetos no esquema DataSchema.

A auditoria do servidor é criada com uma WHERE cláusula que limita a auditoria do servidor apenas SensitiveData à tabela. A auditoria de servidor supõe que exista 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

Crie a auditoria de servidor no master banco de dados:

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

Crie a especificação de auditoria de banco de dados no TestDB banco de dados:

USE TestDB;
GO

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

Dispare o evento de auditoria selecionando entre tabelas:

SELECT ID,
       DataField
FROM DataSchema.GeneralData;

SELECT ID,
       DataField
FROM DataSchema.SensitiveData;
GO

Verifique a auditoria do conteúdo filtrado:

SELECT *
FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit', DEFAULT, DEFAULT);
GO

Transact-SQL referência