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 } ]
    [ , 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 conseguem 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 ficheiro binário, o registo de aplicações do Windows ou o registo 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 especificas UNLIMITED, o ficheiro cresce até o disco ficar 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 ficheiros que pode especificar é 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. A auditoria não transfere para o primeiro ficheiro quando o limite é atingido. Quando o MAX_FILES limite é atingido, qualquer ação que provoque a geração de mais eventos de auditoria 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. 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 = identificador único

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. Não podes modificar o GUID depois de criares a auditoria.

OPERATOR_AUDIT

Aplica-se apenas a: Azure SQL Managed Instance.

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.

RETENTION_DAYS = inteiro

Aplica-se apenas a: Azure SQL Managed Instance e Azure SQL Database.

Indica o número de dias para armazenar o ficheiro do registo 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 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. Pode filtrar todos os campos exceto file_name, audit_file_offset, e event_time.

Embora os action_id campos e class_type sejam do tipo varchar em sys.fn_get_audit_file, só podes usá-los com números quando forem uma fonte de referência para filtragem. Para obter a lista de valores a usar com 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];

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. As funções de comparação de predicados não realizam qualquer conversão implícita de tipos de cadeia. Passar o tipo errado resulta em um erro.

Remarks

Uma auditoria de servidor é criada num estado desativado.

A instrução CREATE SERVER AUDIT faz parte de uma transação. Se reverter a transação, o extrato também é revertido.

Permissions

Para criar, alterar ou eliminar uma auditoria de servidor, os principais precisam da ALTER ANY SERVER AUDIT ou da CONTROL SERVER permissão.

Quando guardar informações de auditoria num ficheiro, restrinja o acesso à localização do ficheiro para ajudar a evitar adulterações.

Examples

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

O exemplo seguinte cria uma auditoria de servidor nomeada HIPAA_Audit com um ficheiro 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 seguinte cria uma auditoria de servidor nomeada HIPAA_Audit com o conjunto de alvos para o registo de aplicações 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 WHERE cláusula que limita a auditoria 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

Crie a auditoria do servidor na master base 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 da base de dados na TestDB base 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

Desencadeie o evento de auditoria selecionando entre tabelas:

SELECT ID,
       DataField
FROM DataSchema.GeneralData;

SELECT ID,
       DataField
FROM DataSchema.SensitiveData;
GO

Verifique a auditoria para o conteúdo filtrado:

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

Transact-SQL referência