Condividi tramite


Verifica SQL Server (Motore di database)

Il controllo di un'istanza del motore di database di SQL Server o di un singolo database comporta il rilevamento e la registrazione degli eventi che si verificano nel motore di database. SQL Server Audit consente di creare controlli del server che possono contenere specifiche di controllo del server per gli eventi a livello di server e specifiche di controllo del database per gli eventi a livello di database. Gli eventi controllati possono essere scritti nei log eventi o in file di controllo.

Esistono numerosi livelli di controllo per SQL Server, in base ai requisiti legislativi o standard per l'installazione. SQL Server Audit fornisce gli strumenti e i processi che sono necessari per abilitare, archiviare e visualizzare controlli in vari oggetti server e database.

È possibile registrare i gruppi di azioni di controllo del server per ogni istanza, e sia i gruppi di azioni di controllo del database che le singole azioni di controllo per ogni database. L'evento di controllo si verificherà ogni volta che viene rilevata l'azione controllabile.

Tutte le edizioni di SQL Server supportano audit a livello server. Il controllo a livello di database è limitato alle edizioni Enterprise, Developer e Evaluation. Per ulteriori informazioni, vedere Features Supported by the Editions of SQL Server 2014.

Componenti di SQL Server Audit

Per controllo si intende la combinazione di più elementi in un unico pacchetto per un gruppo specifico di azioni server o del database. Tramite la combinazione dei componenti di controllo di SQL Server, viene generato un output denominato controllo, così come tramite la combinazione della definizione del report con elementi grafici e dati viene generato un report.

Il controllo di SQL Server usa Eventi estesi per aiutare a creare un controllo. Per ulteriori informazioni sugli eventi estesi, vedere eventi estesi.

Controllo di SQL Server

L'oggetto SQL Server Audit raccoglie un'unica istanza di azioni a livello di server o di database e gruppi di azioni da monitorare. Il controllo si trova al livello dell'istanza di SQL Server. Per ogni istanza di SQL Server è possibile disporre di più controlli.

Quando si definisce un controllo, è necessario specificare il percorso per l'output dei risultati, Questa è la destinazione del controllo. Il controllo viene creato in uno stato disabilitato e non controlla automaticamente alcuna azione. In seguito all'abilitazione del controllo, la relativa destinazione riceve dati dal controllo stesso.

Specifica di controllo del server

L'oggetto specifica controllo server appartiene a un controllo. È possibile creare una specifica del controllo del server per ogni controllo, poiché entrambi vengono creati nell'ambito dell'istanza di SQL Server.

Nella specifica del controllo del server vengono raccolti molti gruppi di azioni a livello di server, generati dalla funzionalità degli eventi estesi. In una specifica del controllo del server è possibile includere gruppi di azioni di controllo , I gruppi di azioni di audit sono gruppi predefiniti di azioni, che rappresentano eventi atomici che si verificano nel motore di database. Queste azioni vengono inviate alla verifica, che le registra nella destinazione.

I gruppi di azioni di controllo a livello di server sono descritti nell'argomento Gruppi di azioni e azioni di controllo di SQL Server.

Specifica di controllo del database

Anche l'oggetto Specifica controllo database appartiene a un controllo di SQL Server. È possibile creare una specifica del controllo del database per ogni database di SQL Server per ogni controllo.

Nella specifica del controllo del database vengono raccolte azioni di controllo a livello di database generate dalla funzionalità degli eventi estesi. Alla specifica di controllo del database è possibile aggiungere gruppi di azioni di controllo o eventi di controllo. Gli eventi di controllo sono le azioni atomiche che possono essere controllate dal motore di SQL Server. mentre igruppi di azioni di controllo sono gruppi predefiniti di azioni. Entrambi sono nell'ambito del database di SQL Server. Queste azioni vengono inviate alla verifica, che le registra nella destinazione. Non includere oggetti con ambito a livello di server, ad esempio le viste di sistema, in una specifica di audit del database utente.

I gruppi di azioni di controllo a livello di database e le azioni di controllo sono descritti nell'argomento Gruppi di azioni e azioni di controllo di SQL Server.

Obiettivo

I risultati di un controllo vengono inviati a una destinazione, che può essere un file, il registro eventi di sicurezza o il registro eventi applicazioni di Windows. I log devono essere esaminati e archiviati periodicamente per assicurarsi che la destinazione disponga di spazio sufficiente per scrivere record aggiuntivi.

Importante

Qualsiasi utente autenticato può leggere e scrivere nel registro eventi applicazioni di Windows, Il registro eventi delle applicazioni richiede autorizzazioni inferiori rispetto al registro eventi di sicurezza di Windows ed è meno sicuro rispetto al registro eventi di sicurezza di Windows.

Per scrivere nel registro eventi di sicurezza di Windows, è necessario che l'account di servizio di SQL Server venga aggiunto alla politica Generazione controlli di sicurezza. Per impostazione predefinita, i sistemi Local System, Local Service e Network Service fanno parte di questa politica. Questa impostazione può essere configurata tramite lo snap-in dei criteri di sicurezza (secpol.msc) È inoltre necessario che i criteri di sicurezza Controllo dell'accesso agli oggetti siano abilitati sia per Esito positivo che per Esito negativo. Questa impostazione può essere configurata tramite lo snap-in dei criteri di sicurezza (secpol.msc) In Windows Vista o Windows Server 2008 è possibile impostare i criteri più granulari generati dall'applicazione dalla riga di comando usando il programma dei criteri di controllo (AuditPol.exe). Per altre informazioni sulla procedura per abilitare la scrittura nel registro di protezione di Windows, vedere Scrittura di eventi di controllo di SQL Server nel registro di sicurezza. Per ulteriori informazioni sul programma Auditpol.exe, vedere l'articolo 921469 della Microsoft Knowledge Base, Utilizzo dei Criteri di gruppo per configurare impostazioni di controllo della sicurezza dettagliate. I registri eventi di Windows sono globali nel sistema operativo Windows. Per ulteriori informazioni sui registri eventi di Windows, vedere la Panoramica del Visualizzatore eventi. Se sono necessarie autorizzazioni più specifiche sulla verifica, utilizzare la destinazione del file binario.

Quando si salvano le informazioni di controllo in un file, per evitare manomissioni, è possibile limitare l'accesso al percorso del file nei modi seguenti:

  • L'account del servizio SQL Server deve disporre dell'autorizzazione in lettura e in scrittura.

  • Gli amministratori di controllo richiedono in genere le autorizzazioni di lettura e scrittura. Ciò presuppone che gli amministratori di controllo siano account di Windows per quanto riguarda l'amministrazione dei file di controllo, ad esempio per la copia in diverse condivisioni, per il backup e così via.

  • I lettori di controllo autorizzati a leggere i file di controllo devono disporre dell'autorizzazione in lettura.

Se dispongono dell'autorizzazione, gli altri utenti di Windows possono leggere il file di controllo anche quando si verifica un'operazione di scrittura in un file da parte del motore di database. Il motore di database non accetta un blocco esclusivo che impedisce le operazioni di lettura.

Poiché il motore di database può accedere al file, i login di SQL Server che dispongono dell'autorizzazione CONTROL SERVER possono utilizzare il motore per accedere ai file di audit. Per registrare qualsiasi utente che legge il file di controllo, definire un controllo in master.sys.fn_get_audit_file. In tal modo viene registrato l'accesso al file di controllo tramite SQL Server effettuato dagli account di accesso dotati dell'autorizzazione CONTROL SERVER.

Se un amministratore di controllo copia il file in un percorso diverso (a scopo di archivio e così via), gli elenchi di controllo di accesso nel nuovo percorso devono essere ridotti alle autorizzazioni seguenti:

  • Amministratore di controllo: lettura/scrittura

  • Lettore di controllo: lettura

Si consiglia di generare i report di controllo da un'istanza separata di SQL Server, ad esempio un'istanza di SQL Server Express a cui hanno accesso solo gli amministratori di controllo o i lettori di controllo. Utilizzando un'istanza separata del motore di database per la segnalazione, è possibile evitare che utenti non autorizzati abbiano accesso al record di controllo.

È possibile offrire una protezione aggiuntiva contro l'accesso non autorizzato crittografando la cartella in cui è archiviato il file di controllo usando Crittografia unità BitLocker di Windows o Windows Encrypting File System.

Per ulteriori informazioni sui record di controllo scritti nella destinazione, vedere SQL Server Audit Records.

Panoramica sull'utilizzo di SQL Server Audit

Per definire un controllo puoi usare SQL Server Management Studio o Transact-SQL. Dopo che l'audit è stato creato e abilitato, l'obiettivo riceverà i registri.

L'utilità Visualizzatore eventi disponibile in Windows consente di leggere i registri eventi di Windows. Per le destinazioni file, puoi usare il Visualizzatore file di log in SQL Server Management Studio o la funzione fn_get_audit_file per leggere il file di audit di destinazione.

Di seguito viene descritto il processo generale di creazione e utilizzo di un controllo.

  1. Creare una verifica e definire l'obiettivo.

  2. Creare una specificazione di audit del server o una specificazione di audit del database che si mappa al controllo. Abilitare la specifica di audit.

  3. Abilitare il controllo.

  4. Leggere gli eventi di controllo usando il Visualizzatore eventi di Windows, il Visualizzatore file di log o la funzione fn_get_audit_file.

Per ulteriori informazioni, vedere Creazione di un controllo del server e di una specifica del controllo del server e Creazione di un controllo del server e di una specifica del controllo del database.

Considerazioni

In caso di errore durante l'avvio del controllo, il server non verrà avviato. In questo caso, per avviare il server è possibile usare l'opzione -f della riga di comando.

Quando un errore di audit causa l'arresto o il mancato avvio del server perché è specificato ON_FAILURE=SHUTDOWN per l'audit, l'evento MSG_AUDIT_FORCED_SHUTDOWN verrà scritto nel registro. Poiché l'arresto si verifica alla prima attivazione di questa impostazione, l'evento verrà registrato una sola volta. Tale evento viene scritto dopo il messaggio di errore di audit che causa l'arresto. Per ignorare l'arresto provocato dal controllo, un amministratore può avviare SQL Server in modalità utente singolo usando il flag -m. Se si avvia in modalità utente singolo, si eseguirà il downgrade di qualsiasi controllo in cui ON_FAILURE=SHUTDOWN venga specificato per l'esecuzione in tale sessione come ON_FAILURE=CONTINUE. Quando SQL Server viene avviato usando il flag -m , il messaggio di MSG_AUDIT_SHUTDOWN_BYPASSED verrà scritto nel log degli errori.

Per altre informazioni sulle opzioni di avvio del servizio, vedere Opzioni di avvio del servizio del motore di database.

Collegamento di un database con un controllo definito

Il collegamento di un database che ha una specifica di controllo e specifica un GUID che non esiste sul server causerà una specifica di controllo orfana. Poiché un controllo con un GUID corrispondente non esiste nell'istanza del server, non verranno registrati eventi di controllo. Per risolvere questo problema, utilizzare il comando ALTER DATABASE AUDIT SPECIFICATION per connettere la specifica di audit orfana a un audit del server esistente. oppure utilizzare il comando CREATE SERVER AUDIT per creare un nuovo controllo del server con il GUID specificato.

È possibile collegare un database con una specifica di controllo definita a un'altra edizione di SQL Server che non supporta il controllo di SQL Server, ad esempio SQL Server Express, ma non registra gli eventi di controllo.

Mirroring del database e Verifica di SQL Server

Un database che dispone di una specifica del controllo del database definita e che utilizza il mirroring del database includerà la specifica del controllo del database. Per funzionare correttamente sull'istanza SQL Server con mirroring, è necessario che siano configurati gli elementi seguenti:

  • Il server mirror deve disporre di una verifica con lo stesso GUID affinché la specifica di verifica del database possa scrivere i record di verifica. Questa operazione può essere configurata usando il comando CREATE AUDIT CON GUID=<GUID dal controllo del server di origine>.

  • Per le destinazioni del file binario, l'account di servizio del server mirror deve disporre delle autorizzazioni appropriate per il percorso in cui viene scritta la traccia di verifica.

  • Per le destinazioni del registro eventi di Windows, la politica di sicurezza del computer in cui si trova il server mirror deve consentire l'accesso dell'account del servizio al registro eventi di sicurezza o di applicazione.

Controllo degli amministratori

I membri del ruolo predefinito del sysadmin server vengono identificati come utente dbo in ogni database. Per controllare le azioni degli amministratori, controllare le azioni dell'utente dbo .

Creazione e gestione di controlli con Transact-SQL

È possibile utilizzare istruzioni DDL, DMV e funzioni, nonché viste del catalogo per implementare tutti gli aspetti di SQL Server Audit.

Istruzioni del Linguaggio di Definizione Dati (DDL)

Per creare, modificare ed eliminare specifiche del controllo, è possibile utilizzare le istruzioni DDL seguenti:

ALTER AUTHORIZATION CREATE SERVER AUDIT
ALTER DATABASE AUDIT SPECIFICATION CREATE SERVER AUDIT SPECIFICATION
ALTER SERVER AUDIT DROP DATABASE AUDIT SPECIFICATION (Rimuovere la specifica di audit del database)
MODIFICARE LA SPECIFICA DI AUDIT DEL SERVER DROP SERVER AUDIT
CREARE UNA SPECIFICA DI AUDIT DEL DATABASE DROP SERVER AUDIT SPECIFICATION

Viste e funzioni dinamiche

Nella tabella seguente vengono elencate le viste e le funzioni dinamiche che è possibile utilizzare per il controllo di SQL Server.

Viste e funzioni dinamiche Descrizione
sys.dm_audit_actions Restituisce una riga per ogni azione di controllo che può essere segnalata nel log di controllo e per ogni gruppo di azioni di controllo che possono essere configurate come parte di SQL Server Audit.
sys.dm_server_audit_status Fornisce informazioni sullo stato corrente del controllo.
sys.dm_audit_class_type_map Restituisce una tabella che mappa il campo class_type nel registro di controllo al campo class_desc nel sys.dm_audit_actions.
fn_get_audit_file Restituisce informazioni da un file di controllo creato da un controllo del server.

Visualizzazioni del Catalogo

Nella tabella seguente vengono elencate le viste del catalogo che è possibile utilizzare per il controllo di SQL Server.

Visualizzazioni del catalogo Descrizione
sys.database_ audit_specifications Contiene informazioni sulle specifiche del controllo del database in un controllo di SQL Server in un'istanza del server.
sys.database_audit_specification_details Contiene informazioni sulle specifiche di controllo del database in un controllo di SQL Server su un'istanza del server per tutti i database.
sys.server_audits Contiene una riga per ogni controllo di SQL Server in un'istanza del server.
sys.server_audit_specifications Contiene informazioni sulle specifiche del controllo del server in un controllo di SQL Server in un'istanza del server.
sys.server_audit_specifications_dettagli Contiene informazioni sui dettagli delle specifiche di controllo del server (azioni) in un controllo di SQL Server nell'istanza del server.
sys.server_file_audits Contiene informazioni estese sul tipo di controllo dei file in un controllo di SQL Server in un'istanza del server.

Autorizzazioni

A ogni funzionalità e comando per SQL Server Audit sono associati requisiti di autorizzazione singoli.

Per creare, modificare o eliminare un controllo del server o una specifica del controllo del server, le entità server devono disporre dell'autorizzazione ALTER ANY SERVER AUDIT o CONTROL SERVER. Per creare, modificare o eliminare una specifica del controllo del database, le entità di database devono disporre dell'autorizzazione ALTER ANY DATABASE AUDIT o dell'autorizzazione ALTER o CONTROL per il database. Inoltre, i titolari devono avere l'autorizzazione per connettersi al database o le autorizzazioni ALTER ANY SERVER AUDIT o CONTROL SERVER.

Se non diversamente specificato, la visualizzazione delle viste del catalogo richiede che un'entità disponga di una delle opzioni seguenti:

  • Appartenenza al ruolo predefinito del server sysadmin.

  • Autorizzazione del server di controllo.

  • Autorizzazione VIEW SERVER STATE.

  • Autorizzazione per ALTER ANY AUDIT.

  • L'autorizzazione VIEW AUDIT STATE (concede solo al principale l'accesso alla vista del catalogo sys.server_audits).

Un'entità deve disporre dell'autorizzazione VIEW SERVER STATE o ALTER ANY AUDIT per utilizzare le viste di gestione dinamica.

Per altre informazioni su come concedere diritti e autorizzazioni, vedi GRANT (Transact-SQL).

Attenzione

Le entità nel ruolo sysadmin possono alterare qualsiasi componente dell'audit, mentre quelle nel ruolo db_owner possono modificare le specifiche dell'audit in un database. SQL Server Audit verificherà che un accesso che crea o modifica una specifica di audit disponga almeno dell'autorizzazione ALTER ANY DATABASE AUDIT. ma non esegue alcuna convalida quando si collega un database. È necessario presupporre che tutte le specifiche di controllo del database siano attendibili quanto i principali nei ruoli sysadmin o db_owner.

Creazione di un controllo del server e di una specifica del controllo del server

Creazione di un controllo del server e di una specifica del controllo del database

Visualizzazione di un log di controllo di SQL Server

Scrittura di eventi di controllo di SQL Server nel registro di sicurezza

Proprietà server (pagina Sicurezza)
Viene illustrato come attivare il controllo degli account di accesso per SQL Server. I record di controllo vengono archiviati nel registro applicazioni di Windows.

Opzione di configurazione del server c2 audit mode
Viene illustrata la modalità di controllo conforme alla sicurezza C2 in SQL Server.

Categoria di eventi Controllo di sicurezza (SQL Server Profiler)
Vengono illustrati gli eventi di controllo che è possibile utilizzare in SQL Server Profiler. Per altre informazioni, vedere SQL Server Profiler.

Traccia SQL
Illustrate le modalità di uso di Traccia SQL all'interno di applicazioni personalizzate per creare tracce manualmente anziché tramite SQL Server Profiler.

Trigger DDL
Vengono illustrate le modalità di utilizzo di trigger DDL (Data Definition Language) per tenere traccia delle modifiche apportate ai database.

Microsoft TechNet: SQL Server TechCenter: Sicurezza e protezione di SQL Server 2005
Fornisce informazioni aggiornate sulla sicurezza di SQL Server.

Vedere anche

Azioni e gruppi di azioni di SQL Server Audit
Record di Audit di SQL Server