Compartilhar via


CREATE SERVER AUDIT (Transact-SQL)

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

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

CREATE SERVER AUDIT audit_name
{
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG }
    [ 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 ]
}

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

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

Argumentos

  • TO { FILE | APPLICATION_LOG | SECURITY_LOG }
    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 poderá gravar no log de segurança do Windows se não forem configurados parâmetros adicionais no Windows. Para obter mais informações, consulte Gravar eventos de auditoria do SQL Server no log de segurança.

  • 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.

  • MAXSIZE = { max_size }
    Especifica o tamanho máximo até o qual o arquivo de auditoria pode aumentar. 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 é 2 MB e o máximo é 2.147.483.647 TB. Quando UNLIMITED é especificado, o arquivo aumenta até que o disco esteja completo. (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.

  • MAX_ROLLOVER_FILES ={ integer | UNLIMITED }
    Especifica o número máximo de arquivos a serem retidos no sistema de arquivos além do arquivo atual. O valor MAX_ROLLOVER_FILES deve ser um inteiro ou UNLIMITED. O valor padrão é UNLIMITED. Este parâmetro é avaliado sempre que a auditoria reinicia (o que pode ocorrer quando a instância do Mecanismo de Banco de Dados reinicia ou quando a auditoria é desativada e, depois, reativada) ou quando um novo arquivo é necessário porque o valor máximo de MAXSIZE foi alcançado. Quando MAX_ROLLOVER_FILES é avaliado, se o número de arquivos exceder a configuração de MAX_ROLLOVER_FILES, o arquivo mais antigo será excluído. Como resultado, quando a configuração de MAX_ROLLOVER_FILES for 0, um novo arquivo será criado toda vez que a configuração de MAX_ROLLOVER_FILES for avaliada. Somente um arquivo é excluído automaticamente quando a configuração de MAX_ROLLOVER_FILES é avaliada. Portanto, quando o valor de MAX_ROLLOVER_FILES for reduzido, o número de arquivos não diminuirá, a menos que os arquivos antigos tenham sido excluídos manualmente. O número máximo de arquivos que pode ser especificado é 2.147.483.647.

  • MAX_FILES =integer
    Especifica o número máximo de arquivos de auditoria que pode ser criado. Não substitui o primeiro arquivo quando o limite é atingido. Quando o limite de MAX_FILES é atingido, haverá falha com um erro em qualquer ação que provoque a geração de eventos.

  • RESERVE_DISK_SPACE = { ON | OFF }
    Essa opção pré-aloca o arquivo no disco para o valor MAXSIZE. Isso só valerá se MAXSIZE não for igual a UNLIMITED. O valor padrão é OFF.

  • QUEUE_DELAY =integer
    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 é 2.147.483.647 (2.147.483.647 segundos ou 24 dias, 20 horas, 31 minutos, 23.647 segundos). A especificação de um número inválido gera o erro MSG_INVALID_QUEUE_DELAY.

  • ON_FAILURE = { CONTINUE | SHUTDOWN | 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
      As operações do SQL Server continuam. Os registros de auditoria não são retidos. A auditoria retomará tentando registrar eventos em log e será retomada se a condição de falha for resolvida. A seleção da opção para continuar pode permitir atividade não auditada, o que pode violar suas 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 o desligamento de um servidor quando a instância do servidor que grava no destino não puder gravar dados no destino de auditoria. O logon que emite isso deve ter a permissão SHUTDOWN. Se o logon não tiver essa permissão, essa função apresentará falha e será exibida uma mensagem de erro. Não ocorre nenhum evento auditado. Use a opção quando uma falha de auditoria puder comprometer a segurança ou a integridade do sistema.

    • FAIL_OPERATION
      Haverá falha nas ações do banco de dados se elas provocarem eventos auditados. As ações que não provocam eventos auditados podem continuar, mas não pode ocorrer nenhum evento auditado. A auditoria retomará tentando registrar eventos em log e será retomada se a condição de falha for 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 =uniqueidentifier
    Para dar suporte a cenários, como espelhamento de banco de dados, 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 depois que a auditoria foi criada.

  • 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 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 (Transact-SQL). Todos os campos podem ser auditados menos file_name e audit_file_offset.

  • number
    É qualquer tipo numérico, inclusive 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. Nenhuma conversão de tipo de cadeia de caracteres implícita é executada para as funções de comparação de predicado. A transferência do tipo incorreto resulta em um erro.

Comentários

Quando uma auditoria de servidor é criada, ela permanece em um estado desabilitado.

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

Permissões

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

Quando você está salvando informações de auditoria em um arquivo, para ajudar a impedir falsificação, você pode restringir o acesso ao local do arquivo.

Exemplos

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

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

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

B.Criando 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 denominada HIPPA_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.Criando 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 denominada DataSchema.SensitiveData conterá 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 de servidor é criada com uma cláusula WHERE que limita a auditoria de servidor apenas à tabela SensitiveData. A auditoria de 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

Consulte também

Referência

ALTER SERVER AUDIT (Transact-SQL)

DROP SERVER AUDIT (Transact-SQL)

CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)

ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)

DROP SERVER AUDIT SPECIFICATION (Transact-SQL)

CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)

DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)

ALTER AUTHORIZATION (Transact-SQL)

sys.fn_get_audit_file (Transact-SQL)

sys.server_audits (Transact-SQL)

sys.server_file_audits (Transact-SQL)

sys.server_audit_specifications (Transact-SQL)

sys.server_audit_specification_details (Transact-SQL)

sys.database_ audit_specifications (Transact-SQL)

sys.database_audit_specification_details (Transact-SQL)

sys.dm_server_audit_status (Transact-SQL)

sys.dm_audit_actions (Transact-SQL)

sys.dm_audit_class_type_map (Transact-SQL)

Conceitos

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