SQL Server Audit (Database Engine)

  • 01/01/2020
  • 13 minutes to read
    • D
    • v
    • M
    • M
    • D
    • +8

Applies to: yesSQL Server (toate versiunile acceptate) Da Azure SQL Managed Instance

auditarea unei instanțe a motorului bazei de date SQL Server sau a unei baze de date individuale implică urmărirea și înregistrarea în jurnal a evenimentelor care apar pe motorul bazei de date. SQL Server audit vă permite să creați audituri server, care pot conține specificații de audit server pentru evenimente la nivel de server și specificații de audit bază de date pentru evenimente la nivel de bază de date. Evenimentele auditate pot fi scrise în jurnalele de evenimente sau în fișierele de audit.

Important

în instanța gestionată Azure SQL, această caracteristică T-SQL are anumite modificări de comportament. Vedea Azure SQL gestionat instanță T-SQL diferențe de la SQL Server pentru detalii pentru toate modificările de comportament T-SQL.

există mai multe niveluri de audit pentru SQL Server, în funcție de guvern sau standarde cerințele pentru instalarea. SQL Server Audit oferă instrumentele și procesele pe care trebuie să le activați, să stocați și să vizualizați audituri pe diverse obiecte server și bază de date.

puteți înregistra grupuri de acțiuni de audit pe server pe instanță și fie grupuri de acțiuni de audit al bazei de date, fie acțiuni de audit al bazei de date pe bază de date. Evenimentul de audit va avea loc de fiecare dată când se întâlnește acțiunea auditabilă.

toate edițiile de SQL Server suport audituri la nivel de server. Toate edițiile acceptă audituri la nivel de bază de date începând cu SQL Server 2016 (13.x) SP1. Înainte de aceasta, auditul la nivel de bază de date era limitat la edițiile Enterprise, Developer și Evaluation. Pentru mai multe informații, consultați caracteristici acceptate de edițiile SQL Server 2016.

notă

acest subiect se aplică SQL Server. Pentru baza de date SQL, consultați începeți cu auditarea bazei de date SQL.

SQL Server Audit Components

un audit este combinația mai multor elemente într-un singur pachet pentru un grup specific de acțiuni server sau acțiuni de bază de date. Componentele auditului SQL Server se combină pentru a produce o ieșire care se numește audit, la fel cum o definiție a raportului combinată cu elemente grafice și date produce un raport.

SQL Server audit utilizează evenimente extinse pentru a ajuta la crearea unui audit. Pentru mai multe informații despre evenimente extinse, consultați evenimente extinse.

SQL Server Audit

obiectul SQL Server Audit colectează o singură instanță de acțiuni la nivel de server sau bază de date și grupuri de acțiuni pentru a monitoriza. Auditul este la nivel de instanță SQL Server. Puteți avea mai multe audituri pe instanță SQL Server.

când definiți un audit, specificați locația pentru ieșirea rezultatelor. Aceasta este destinația auditului. Auditul este creat într-o stare dezactivată și nu auditează automat nicio acțiune. După ce auditul este activat, destinația auditului primește date din audit.

specificație Audit Server

obiectul specificație Audit Server aparține unui audit. Puteți crea o specificație de audit server per audit, deoarece ambele sunt create la domeniul de aplicare instanță SQL Server.

specificația auditului serverului colectează multe grupuri de acțiune la nivel de server ridicate de caracteristica evenimente extinse. Puteți include grupuri de acțiune de audit într-o specificație de audit server. Grupurile de acțiuni de Audit sunt grupuri predefinite de acțiuni, care sunt evenimente atomice care au loc în motorul bazei de date. Aceste acțiuni sunt trimise auditului, care le înregistrează în țintă.

grupuri de acțiune de audit la nivel de Server sunt descrise în subiect SQL Server Audit grupuri de acțiune și acțiuni.

specificarea auditului bazei de date

obiectul specificației auditului bazei de date aparține, de asemenea, unui audit SQL Server. Puteți crea o specificație de audit de baze de date pentru fiecare bază de date SQL Server pentru fiecare audit.

specificația auditului bazei de date colectează acțiuni de audit la nivel de bază de date ridicate de caracteristica evenimente extinse. Puteți adăuga fie grupuri de acțiuni de audit, fie evenimente de audit la o specificație de audit a bazei de date. Evenimentele de Audit sunt acțiunile atomice care pot fi auditate de motorul SQL Server. Grupurile de acțiuni de Audit sunt grupuri predefinite de acțiuni. Ambele sunt la domeniul de aplicare al bazei de date SQL Server. Aceste acțiuni sunt trimise auditului, care le înregistrează în țintă. Nu includeți obiecte cu scop server, cum ar fi vizualizările de sistem, într-o specificație de audit a bazei de date utilizator.

grupuri de acțiune de audit la nivel de bază de date și acțiuni de audit sunt descrise în subiect SQL Server Audit grupuri de acțiune și acțiuni.

Target

rezultatele unui audit sunt trimise către o țintă, care poate fi un fișier, Jurnalul de evenimente Windows Security sau jurnalul de evenimente Windows Application. Jurnalele trebuie revizuite și arhivate periodic pentru a vă asigura că ținta are suficient spațiu pentru a scrie înregistrări suplimentare.

Important

orice utilizator autentificat poate citi și scrie în Jurnalul de evenimente al aplicației Windows. Jurnalul de evenimente al aplicației necesită permisiuni mai mici decât jurnalul de evenimente de securitate Windows și este mai puțin sigur decât jurnalul de evenimente de securitate Windows.

scrierea în Jurnalul de securitate Windows necesită adăugarea contului de serviciu SQL Server la Politica generare audituri de securitate. În mod implicit, sistemul Local, serviciul Local și serviciul de rețea fac parte din această politică. Această setare poate fi configurată utilizând snap-in-ul politicii de securitate (secpol.msc). În plus, Politica de securitate a accesului la obiectul de Audit trebuie să fie activată atât pentru succes, cât și pentru eșec. Această setare poate fi configurată utilizând snap-in-ul politicii de securitate (secpol.msc). În Windows Vista sau Windows Server 2008, puteți seta politica generată de aplicație mai granulară din linia de comandă utilizând programul de politică de audit (AuditPol.exe). Pentru mai multe informații despre pașii pentru a activa scrierea în Jurnalul de securitate Windows, consultați scrierea evenimentelor de audit SQL Server în Jurnalul de securitate. Pentru mai multe informații despre Auditpol.programul exe, consultați articolul 921469 din Baza de cunoștințe, cum se utilizează Politica de grup pentru a configura auditul detaliat al securității. Jurnalele de evenimente Windows sunt globale pentru sistemul de operare Windows. Pentru mai multe informații despre jurnalele de evenimente Windows, consultați Prezentarea generală a Vizualizatorului de evenimente. Dacă aveți nevoie de permisiuni mai precise pentru audit, Utilizați fișierul binar țintă.

când salvați informații de audit într-un fișier, pentru a preveni manipularea frauduloasă, puteți restricționa accesul la locația fișierului în următoarele moduri:

  • contul de serviciu SQL Server trebuie să aibă permisiunea de citire și scriere.

  • administratorii de Audit necesită de obicei permisiunea de citire și scriere. Aceasta presupune că administratorii de Audit sunt conturi Windows pentru administrarea fișierelor de audit, cum ar fi: copierea lor în diferite acțiuni, copierea de rezervă a acestora și așa mai departe.

  • cititorii de Audit care sunt autorizați să citească fișierele de audit trebuie să aibă permisiunea de citire.

chiar și atunci când motorul bazei de date scrie într-un fișier, alți utilizatori Windows pot citi fișierul de audit dacă au permisiunea. Motorul bazei de date nu ia o blocare exclusivă care împiedică operațiile de citire.

deoarece motorul bazei de date poate accesa fișierul, conectările SQL Server care au permisiunea CONTROL SERVER pot utiliza motorul bazei de date pentru a accesa fișierele de audit. Pentru a înregistra orice utilizator care citește fișierul de audit, definiți un audit pe master.sys.fn_get_audit_fișier. Aceasta înregistrează datele de conectare cu permisiunea CONTROL SERVER care au accesat fișierul de audit prin SQL Server.

dacă un administrator de Audit copiază fișierul într-o altă locație (în scopuri de arhivă și așa mai departe), ACL-urile din noua locație ar trebui reduse la următoarele permisiuni:

  • administrator de Audit-Citire / Scriere

  • cititor de Audit-citit

vă recomandăm să generați rapoarte de audit dintr-o instanță separată de SQL Server, cum ar fi o instanță de SQL Server Express, la care au acces doar administratorii de Audit sau cititorii de Audit. Utilizând o instanță separată a motorului bazei de date pentru raportare, puteți preveni accesul utilizatorilor neautorizați la înregistrarea auditului.

puteți oferi protecție suplimentară împotriva accesului neautorizat prin criptarea folderului în care este stocat fișierul de audit utilizând Windows BitLocker Drive Encryption sau Windows Encrypting File System.

pentru mai multe informații despre înregistrările de audit care sunt scrise la țintă, consultați SQL Server Audit Records.

Prezentare generală a utilizării auditului SQL Server

puteți utiliza SQL Server Management Studio sau Transact-SQL pentru a defini un audit. După ce auditul este creat și activat, ținta va primi intrări.

puteți citi jurnalele de evenimente Windows utilizând utilitarul Event Viewer din Windows. Pentru ținte de fișiere, puteți utiliza vizualizatorul de fișiere jurnal în SQL Server Management Studio sau funcția fn_get_audit_file pentru a citi fișierul țintă.

procesul general de creare și utilizare a unui audit este următorul.

  1. creați un audit și definiți ținta.

  2. creați fie o specificație de audit a serverului, fie o specificație de audit a bazei de date care se mapează la audit. Activați specificațiile de audit.

  3. activați auditul.

  4. citiți evenimentele de audit utilizând vizualizatorul de evenimente Windows, vizualizatorul de fișiere jurnal sau funcția fn_get_audit_file.

pentru mai multe informații, consultați Crearea unei specificații de audit Server și Audit Server și crearea unei specificații de Audit Server și a bazei de date.

considerații

în cazul unei defecțiuni în timpul inițierii auditului, serverul nu va porni. În acest caz, serverul poate fi pornit utilizând opțiunea-f din linia de comandă.

atunci când un eșec de audit determină serverul să se închidă sau să nu pornească deoarece ON_FAILURE=SHUTDOWN este specificat pentru audit, evenimentul MSG_AUDIT_FORCED_SHUTDOWN va fi scris în jurnal. Deoarece oprirea va avea loc la prima întâlnire a acestei setări, evenimentul va fi scris o singură dată. Acest eveniment este scris după mesajul de eșec pentru audit care provoacă oprirea. Un administrator poate ocoli închiderile induse de audit pornind SQL Server în modul utilizator unic folosind steagul-M. Dacă începeți în modul utilizator unic, veți downgrade orice audit în care ON_FAILURE=SHUTDOWN este specificat să ruleze în acea sesiune ca ON_FAILURE=CONTINUE. Când SQL Server este pornit utilizând steagul-m, mesajul MSG_AUDIT_SHUTDOWN_BYPASSED va fi scris în Jurnalul de erori.

pentru mai multe informații despre opțiunile de pornire a serviciului, consultați Opțiunile de pornire a serviciului motorului bazei de date.

atașarea unei baze de date cu un Audit definit

atașarea unei baze de date care are o specificație de audit și specifică un GUID care nu există pe server va cauza o specificație de audit orfană. Deoarece un audit cu un GUID care se potrivește nu există pe instanța serverului, nu vor fi înregistrate evenimente de audit. Pentru a corecta această situație, utilizați comanda ALTER DATABASE AUDIT SPECIFICATION pentru a conecta specificația auditului orfan la un audit Server existent. Sau, utilizați comanda Creare AUDIT SERVER pentru a crea un nou audit server cu GUID-ul specificat.

puteți atașa o bază de date care are o specificație de audit definit pe ea la o altă ediție de SQL Server care nu acceptă SQL Server audit, cum ar fi SQL Server Express, dar nu va înregistra evenimente de audit.

Oglindire bază de date și SQL Server Audit

o bază de date care are o specificație de audit bază de date definite și care utilizează oglindire bază de date va include specificația de audit bază de date. Pentru a funcționa corect pe instanța SQL oglindită, trebuie configurate următoarele elemente:

  • serverul oglindă trebuie să aibă un audit cu același GUID pentru a permite specificația auditului bazei de date să scrie înregistrări de audit. Acest lucru poate fi configurat utilizând comanda Creare AUDIT cu GUID = <GUID de la Source Server Audit >.

  • pentru țintele de fișiere binare, contul de serviciu mirror server trebuie să aibă permisiuni adecvate pentru locația în care este scrisă pista de audit.

  • pentru obiectivele jurnalului de evenimente Windows, Politica de securitate de pe computerul în care se află serverul oglindă trebuie să permită accesul contului de serviciu la Jurnalul de evenimente de securitate sau aplicație.

administratorii de audit

membrii rolului serverului fix sysadmin sunt identificați ca utilizator dbo în fiecare bază de date. Pentru a audita acțiunile administratorilor, auditați acțiunile utilizatorului dbo.

crearea și gestionarea auditurilor cu Transact-SQL

puteți utiliza declarații DDL, vizualizări și funcții de gestionare dinamică și vizualizări catalog pentru a implementa toate aspectele auditului SQL Server.

Declarații de limbaj pentru definirea datelor

puteți utiliza următoarele declarații DDL pentru a crea, modifica și renunța la specificațiile de audit:

declarații DDL descriere
ALTER autorizare schimbă dreptul de proprietate asupra unui securable.
ALTER DATABASE AUDIT SPECIFICATION modifică un obiect de audit database specification utilizând caracteristica SQL Server Audit.
ALTER Server AUDIT modifică un obiect de audit server utilizând caracteristica SQL Server Audit.
ALTER Server AUDIT SPECIFICATION modifică un obiect specificație audit server utilizând caracteristica SQL Server Audit.
creați specificații AUDIT bază de date creează un obiect specificație audit bază de date utilizând caracteristica audit SQL Server.
creare Server AUDIT creează un obiect de audit server folosind SQL Server Audit.
creare specificație AUDIT SERVER creează un obiect specificație audit server utilizând caracteristica audit SQL Server.
picătură baza de date AUDIT specificație picături un obiect de audit specificație bază de date utilizând caracteristica de audit SQL Server.
DROP Server AUDIT picături un obiect de Audit Server utilizând caracteristica SQL Server Audit.
DROP Server AUDIT specificație picături un obiect de audit specificație server folosind caracteristica SQL Server Audit.

vizualizări și funcții dinamice

următorul tabel listează vizualizările și funcțiile dinamice pe care le puteți utiliza pentru auditarea SQL Server.

vizualizări și funcții dinamice descriere
sys.dm_audit_actions returnează un rând pentru fiecare acțiune de audit care poate fi raportată în Jurnalul de audit și fiecare grup de acțiune de audit care poate fi configurat ca parte a auditului SQL Server.
SYS. dm_server_audit_status oferă informații despre starea actuală a auditului.
SYS. dm_audit_class_type_map returnează un tabel care mapează câmpul class_type din jurnalul de audit la câmpul class_desc din sys. dm_audit_actions.
Fn_get_audit_file returnează informații dintr-un fișier de audit creat de un audit server.

Vizualizări Catalog

următorul tabel listează vizualizările catalog pe care le puteți utiliza pentru auditarea SQL Server.

vizualizări Catalog descriere
sys.database_audit_specifications conține informații despre specificațiile de audit de baze de date într-un audit SQL Server pe o instanță de server.
sys.database_audit_specification_details conține informații despre specificațiile de audit de baze de date într-un audit SQL Server pe o instanță de server pentru toate bazele de date.
sys.server_audits conține un rând pentru fiecare audit SQL Server într-o instanță de server.
sys.server_audit_specifications conține informații despre specificațiile de audit server într-un audit SQL Server pe o instanță de server.
sys.server_audit_specifications_details conține informații despre detaliile specificației de audit server (acțiuni) într-un audit SQL Server pe o instanță de server.
sys.server_file_audits conține stochează informații extinse despre tipul de audit fișier într-un audit SQL Server pe o instanță de server.

permisiuni

fiecare caracteristică și comandă pentru SQL Server Audit are cerințe de permisiune individuale.

pentru a crea, modifica sau renunța la o specificație de audit de Server sau de Audit de Server, directorii de server necesită ALTER ANY server AUDIT sau permisiunea de CONTROL SERVER. Pentru a crea, modifica sau renunța la o specificație de Audit a bazei de date, directorii bazei de date necesită permisiunea de audit ALTER ANY DATABASE sau permisiunea ALTER or CONTROL din Baza de date. În plus, directorii trebuie să aibă permisiunea de a se conecta la baza de date sau de a modifica orice permisiuni de AUDIT sau CONTROL al serverului.

permisiunea vizualizare orice definiție oferă acces pentru vizualizarea vizualizărilor de audit la nivel de server, iar vizualizarea definiție oferă acces pentru vizualizarea vizualizărilor de audit la nivel de bază de date. Negarea acestor permisiuni, suprascrie capacitatea de a vizualiza vizualizările catalog, chiar dacă principalul are ALTER orice AUDIT SERVER sau modifica orice permisiuni de AUDIT de baze de date.

pentru mai multe informații despre modul de acordare a drepturilor și permisiunilor, consultați GRANT (Transact-SQL).

atenție

directorii din rolul sysadmin pot modifica orice componentă de audit, iar cei din rolul db_owner pot modifica specificațiile de audit dintr-o bază de date. SQL Server Audit va valida că o conectare care creează sau Modifică o specificație de audit are cel puțin permisiunea de audit ALTER ANY DATABASE. Cu toate acestea, nu validare atunci când atașați o bază de date. Ar trebui să presupunem că toate specificațiile de Audit ale bazei de date sunt la fel de demne de încredere ca acei directori din rolul sysadmin sau db_owner.

creați o specificație de Audit Server și Audit Server

creați o specificație de Audit Server și Bază de date

vizualizați un jurnal de Audit SQL Server

scrieți evenimente de Audit SQL Server în Jurnalul de securitate

Proprietăți Server (pagina de securitate)
explică modul de activare a auditului de conectare pentru SQL Server. Înregistrările de audit sunt stocate în Jurnalul de aplicații Windows.

C2 mod de audit opțiune de configurare Server
explică modul de audit C2 de conformitate de securitate în SQL Server.

categoria evenimentului de Audit de securitate (SQL Server Profiler)
explică evenimentele de audit pe care le puteți utiliza în SQL Server Profiler. Pentru mai multe informații, consultați SQL Server Profiler.

SQL Trace
explică modul în care SQL Trace poate fi utilizat din propriile aplicații pentru a crea urme manual, în loc să utilizați SQL Server Profiler.

declanșatoare DDL
explică modul în care puteți utiliza declanșatoarele Data Definition Language (DDL) pentru a urmări modificările aduse bazelor de date.

Microsoft TechNet: SQL Server TechCenter: SQL Server 2005 securitate și protecție
oferă informații actualizate despre SQL Server de securitate.

a se vedea, de asemenea,

SQL Server Audit grupuri de acțiune și acțiuni
SQL Server audit Records