Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Istanza gestita di SQL di Azure
Crea un oggetto controllo server usando SQL Server Audit. Per altre informazioni, vedere SQL Server Audit (Motore di database).
Convenzioni relative alla sintassi 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
Nome del controllo. SQL Server 2019 (15.x) e versioni precedenti non possono contenere spazi nel nome del controllo.
A { FILE | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }
Determina la posizione della destinazione del controllo. Le opzioni sono un file binario, il registro applicazioni di Windows o il log di sicurezza di Windows. SQL Server non può scrivere nel log di sicurezza di Windows senza configurare impostazioni aggiuntive in Windows. Per altre informazioni, vedere Scrivere eventi di CONTROLLO di SQL Server nel log di sicurezza.
La URL destinazione non è supportata per SQL Server.
Important
In Istanza gestita di SQL di Azure il controllo SQL opera a livello di server. Le uniche posizioni possibili sono URL o EXTERNAL_MONITOR.
FILEPATH = 'os_file_path'
Percorso del log di controllo. Il nome del file viene generato in base al nome e al GUID del controllo. Se questo percorso non è valido, il controllo non viene creato.
FILEPATHtarget non è supportato per Istanza gestita di SQL di Azure. È invece necessario usare PATH .
MAXSIZE = max_size
Specifica le dimensioni massime consentite per il file di controllo. Il valore max_size deve essere un numero intero seguito da MB, GB, TB o UNLIMITED. Il valore minimo che è possibile specificare per max_size è 2 MB, mentre il valore massimo è 2.147.483.647 TB. Quando si specifica UNLIMITED, il file aumenta fino a quando il disco non è pieno. (0 indica UNLIMITEDanche .) Se si specifica un valore inferiore a 2 MB, viene generato l'errore MSG_MAXSIZE_TOO_SMALL. Il valore predefinito è UNLIMITED.
MAXSIZEtarget non è supportato per Istanza gestita di SQL di Azure.
MAX_ROLLOVER_FILES = { numero intero | ILLIMITATI }
Indica il numero massimo di file da mantenere nel file system oltre al file corrente. Il MAX_ROLLOVER_FILES valore deve essere un numero intero o UNLIMITED. Il valore predefinito è UNLIMITED. Questo parametro viene valutato ogni volta che il controllo viene riavviato (che può verificarsi quando l'istanza del motore di database viene riavviata o quando il controllo viene disattivato e quindi riattivato) o quando è necessario un nuovo file perché MAXSIZE viene raggiunto . Quando MAX_ROLLOVER_FILES viene valutato, se il numero di file supera l'impostazione MAX_ROLLOVER_FILES , il file meno recente viene eliminato. Di conseguenza, quando l'impostazione di MAX_ROLLOVER_FILES è 0 viene creato un nuovo file ogni volta che viene valutata l'impostazione MAX_ROLLOVER_FILES . Quando viene valutata l'impostazione viene eliminato MAX_ROLLOVER_FILES automaticamente un solo file, quindi quando il valore di MAX_ROLLOVER_FILES viene ridotto, il numero di file non viene compattato a meno che i file precedenti non vengano eliminati manualmente. Il numero massimo di file che è possibile specificare è 2.147.483.647.
MAX_ROLLOVER_FILESnon è supportato per Istanza gestita di SQL di Azure.
MAX_FILES = numero intero
Viene specificato il numero massimo di file di controllo che possono essere creati. Il controllo non viene eseguito il rollover del primo file quando viene raggiunto il limite. Quando viene raggiunto il MAX_FILES limite, qualsiasi azione che causa la generazione di più eventi di controllo ha esito negativo e viene generato un errore.
RESERVE_DISK_SPACE = { ACCESO | SPENTO }
Questa opzione prealloca il file sul disco al MAXSIZE valore . Si applica solo se MAXSIZE non è uguale a UNLIMITED. Il valore predefinito è OFF.
RESERVE_DISK_SPACEtarget non è supportato per Istanza gestita di SQL di Azure.
QUEUE_DELAY = numero intero
Specifica la quantità di tempo in millisecondi che può trascorrere prima che venga forzata l'esecuzione delle azioni di controllo. Il valore 0 indica un recapito sincrono. Il valore minimo di ritardo della query impostabile è 1000 (1 secondo), ovvero l'impostazione predefinita. Il valore massimo è 2147483647 (2.147.483.647 secondi o 24 giorni, 20 ore, 31 minuti, 23,647 secondi). Se si specifica un numero non valido, viene generato l'errore MSG_INVALID_QUEUE_DELAY .
ON_FAILURE = { CONTINUA | ARRESTO | FAIL_OPERATION }
Indica se l'istanza di scrittura nella destinazione deve avere esito negativo, continuare o arrestare SQL Server se la destinazione non può scrivere nel log di controllo. Il valore predefinito è CONTINUE.
CONTINUE
Le operazioni di SQL Server continuano. I record di controllo non vengono conservati. Il controllo continua nel tentativo di registrare gli eventi e riprende se la condizione di errore viene risolta. Scegliendo di continuare, è possibile consentire un'attività che non è controllata e che quindi potrebbe violare i criteri di sicurezza. Usare questa opzione quando il funzionamento del motore di database è più importante della gestione di un controllo completo.
SHUTDOWN
Forza l'arresto dell'istanza di SQL Server se, per qualsiasi motivo, SQL Server non è in grado di scrivere dati nella destinazione di controllo. L'account di accesso che esegue l'istruzione CREATE SERVER AUDIT deve avere l'autorizzazione SHUTDOWN in SQL Server. Il comportamento di arresto persiste anche se l'autorizzazione SHUTDOWN viene revocata in un secondo momento dall'account di accesso che esegue l'istruzione. Se l'utente non dispone di questa autorizzazione, l'istruzione non riesce e il controllo non viene creato. Utilizzare l'opzione quando un errore a livello di controllo potrebbe compromettere la sicurezza o l'integrità del sistema. Per altre informazioni, vedere SHUTDOWN.
FAIL_OPERATION
Le azioni del database non vengono completate se provocano eventi controllati. Le azioni che non causano eventi controllati possono continuare, ma non possono verificarsi eventi controllati. Il controllo continua nel tentativo di registrare gli eventi e riprende se la condizione di errore viene risolta. Usare questa opzione quando la gestione di un controllo completo è più importante dell'accesso completo al motore di database.
AUDIT_GUID = identificatore univoco
Per supportare scenari come il mirroring del database o i database che fanno parte di un gruppo di disponibilità AlwaysOn, un controllo richiede un GUID specifico che corrisponda al GUID trovato nel database con mirroring. Non è possibile modificare il GUID dopo la creazione del controllo.
OPERATOR_AUDIT
Si applica solo a: Istanza gestita di SQL di Azure.
Indica se il controllo acquisisce le operazioni del tecnico del supporto Tecnico Microsoft quando devono accedere al server durante una richiesta di supporto.
RETENTION_DAYS = integer
Si applica a: solo Istanza gestita di SQL di Azure e database SQL di Azure.
Indica il numero di giorni in cui archiviare il file di log di controllo.
predicate_expression
Viene specificata l'espressione del predicato utilizzata per determinare se un evento deve essere o meno elaborato. Le espressioni di predicato sono limitate a una lunghezza di 3.000 caratteri, che limita gli argomenti stringa.
event_field_name
Nome del campo dell'evento che identifica l'origine del predicato. I campi di controllo sono descritti in sys.fn_get_audit_file. È possibile filtrare tutti i campi ad eccezione file_namedi , audit_file_offsete event_time.
Mentre i action_id campi e class_type sono di tipo varchar in sys.fn_get_audit_file, è possibile usarli solo con i numeri quando sono un'origine predicato per il filtro. Per ottenere l'elenco dei valori da usare con class_type, eseguire la query seguente:
SELECT spt.[name], spt.[number]
FROM [master].[dbo].[spt_values] spt
WHERE spt.[type] = N'EOD'
ORDER BY spt.[name];
numero
Qualsiasi tipo numerico, incluso decimale. Le limitazioni sono la mancanza di memoria fisica disponibile o un numero troppo grande per essere rappresentato come un numero intero a 64 bit.
'string'
Stringa ANSI o Unicode come richiesto dal paragone del predicato. Le funzioni di confronto del predicato non eseguono alcuna conversione implicita del tipo stringa. Il passaggio del tipo non corretto comporta un errore.
Remarks
Viene creato un controllo del server in uno stato disabilitato.
L'istruzione CREATE SERVER AUDIT fa parte di una transazione. Se si esegue il rollback della transazione, viene eseguito anche il rollback dell'istruzione .
Permissions
Per creare, modificare o eliminare un controllo del server, le entità devono disporre dell'autorizzazione ALTER ANY SERVER AUDITCONTROL SERVER o .
Quando si salvano le informazioni di controllo in un file, limitare l'accesso al percorso del file per evitare manomissioni.
Examples
A. Creare un controllo del server con una destinazione file
Nell'esempio seguente viene creato un controllo server denominato HIPAA_Audit con un file binario come destinazione e nessuna opzione.
CREATE SERVER AUDIT HIPAA_Audit
TO FILE (FILEPATH = '\\SQLPROD_1\Audit\');
B. Creare un controllo del server con una destinazione del log applicazioni di Windows con opzioni
Nell'esempio seguente viene creato un controllo del server denominato HIPAA_Audit con il set di destinazione per il registro applicazioni di Windows. Nella coda viene eseguita un'operazione di scrittura al secondo e il motore di SQL Server viene arrestato in caso di errore.
CREATE SERVER AUDIT HIPAA_Audit
TO APPLICATION_LOG
WITH (
QUEUE_DELAY = 1000,
ON_FAILURE = SHUTDOWN
);
C. Creare un controllo server contenente una clausola WHERE
Nell'esempio seguente vengono creati un database, uno schema e due tabelle per l'esempio. Nella tabella denominata DataSchema.SensitiveData sono contenuti i dati riservati mentre l'accesso alla tabella deve essere registrato nel controllo.
La tabella denominata DataSchema.GeneralData non contiene dati riservati. La specifica del controllo del database consente di controllare l'accesso a tutti gli oggetti nello schema DataSchema.
Il controllo del server viene creato con una WHERE clausola che limita il controllo del server solo alla SensitiveData tabella. Per il controllo del server si presuppone l'esistenza di una cartella del controllo in 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
Creare il controllo del server nel 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
Creare la specifica di controllo del TestDB database nel database:
USE TestDB;
GO
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
FOR SERVER AUDIT [AuditDataAccess]
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
WITH(STATE = ON);
GO
Attivare l'evento di controllo selezionando da tabelle:
SELECT ID,
DataField
FROM DataSchema.GeneralData;
SELECT ID,
DataField
FROM DataSchema.SensitiveData;
GO
Controllare il controllo per il contenuto filtrato:
SELECT *
FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit', DEFAULT, DEFAULT);
GO
Transact-SQL riferimento
- ALTER SERVER AUDIT
- DROP SERVER AUDIT
- CREATE SERVER AUDIT SPECIFICATION
- MODIFICARE LA SPECIFICA DI AUDIT DEL SERVER
- DROP SERVER AUDIT SPECIFICATION
- CREARE UNA SPECIFICA DI AUDIT DEL DATABASE
- ALTER DATABASE AUDIT SPECIFICATION
- DROP DATABASE AUDIT SPECIFICATION (Rimuovere la specifica di audit del database)
- ALTER AUTHORIZATION
Contenuti correlati
- sys.fn_get_audit_file (Transact-SQL)
- sys.server_audits (Transact-SQL)
- sys.server_file_audits (Transact-SQL)
- sys.specifiche_di_audit_del_server (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)
- Creazione di un controllo del server e di una specifica del controllo del server