CREATE SERVER AUDIT (Transact-SQL)
Aplica-se a: SQL Server Instâ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
Sintaxe
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 ' }
Argumentos
TO { FILE | 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 poderá gravar no log de segurança do Windows se não forem definidas configurações adicionais 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.
Importante
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
.
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.
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 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
.
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 pode ser especificado é 2.147.483.647.
MAX_ROLLOVER_FILES
não tem suporte para Instância Gerenciada de SQL do Azure.
MAX_FILES = inteiro
Aplica-se a: SQL Server 2012 (11.x) e posterior.
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, qualquer ação que causa a geração de eventos adicionais falha com um erro.
RESERVE_DISK_SPACE = { ON | OFF }
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 = { 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
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
Aplica-se a: SQL Server 2012 (11.x) e posterior.
Haverá falha nas ações do banco de dados se elas provocarem eventos auditados. As ações que não causam eventos auditados podem continuar, mas não pode ocorrer nenhum evento auditado. 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 = 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.
OPERATOR_AUDIT
Aplica-se a: 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.
predicate_expression
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
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
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
É o nome do campo de evento que identifica a origem do predicado. Campos de auditoria são descritos em sys.fn_get_audit_file (Transact-SQL). Todos os campos podem ser filtrados, exceto file_name
, audit_file_offset
e event_time
.
Observação
Embora os campos action_id
e class_type
sejam do tipo varchar em sys.fn_get_audit_file
, eles podem ser usados somente com números quando são uma origem de predicado para a filtragem. Para obter a lista de valores a serem usados 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];
número
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
É 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'
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
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 de segurança 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
R. Criar uma auditoria de servidor com um arquivo de destino
O exemplo a seguir cria uma auditoria de servidor denominada HIPAA_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. 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 denominada 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 de servidor é criada com uma cláusula WHERE que limita a auditoria de servidor apenas à tabela SensitiveData
. 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
-- 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
Conteúdo relacionado
- 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)
- Criar uma auditoria de servidor e uma especificação de auditoria de servidor