Det er vigtigt at have et sikkert miljø og håndhæve princippet om færrest rettigheder i dine servere og databaser, men dette kan være svært at opnå i store miljøer, hvor mange personer har forhøjede rettigheder eller flere personer har rettigheder til at udføre opgaver over dine data eller skemaer.
Som en ekstra foranstaltning bør der implementeres en audit log i disse scenarier og gennemgå disse ofte.
SQL Server giver mulighed for at implementere audit logs på Server og Database niveau. Fra og med SQL Server 2008 understøtter alle SQL Server-udgaver revisioner på Server-niveau. Databaseaudits understøttes fra og med SQL Server 2016 (13.x) SP1. Før det var auditering på databaseniveau begrænset til Enterprise-, Developer- og Evaluation-udgaverne.
På dette indlæg vil jeg vise dig, hvordan du konfigurerer og viser auditlogs:
Implementer revisionslog
Under sikkerhed skal du gå til Revisioner og vælge Ny revision…
Angiv et navn til revisionen og vælg en revisionsdestination (jeg foretrækker personligt en filplacering).
Vælg de ønskede parametre og klik på OK.
Audit er nu oprettet, for at det skal virke skal du blot aktivere audit.
BEMÆRK: Før du foretager ændringer i auditkonfigurationen, skal du først deaktivere den.
Implementer revision på serverniveau
Vi har oprettet vores revisionssted, nu vil vi fortsætte med at oprette de handlinger, vi ønsker at revidere på serverniveau.
Under mappen Sikkerhed skal du finde Server Audit Specifications, højreklikke og vælge New Server Audit Specification….
I det næste vindue skal du angive et navn til revisionen (du kan have mere end ét) og vælge den revision, der blev oprettet i det foregående trin.
Vælg den handling eller de handlinger, der skal revideres. For at kontrollere, hvad der er inkluderet på hver handling, skal du læse her fra Microsofts dokumentation.
Når du er færdig, skal du klikke på OK for at oprette revisionsspecifikationen.
I dette eksempel har jeg blot inkluderet DBCC-handlingen, der skal revideres (som vi vil se senere i dette indlæg)
Revisionsspecifikationen er også oprettet deaktiveret, for at få den til at fungere, skal du aktivere den som vist på billedet.
BEMÆRK: Før du foretager ændringer i revisionsspecifikationen, skal du først deaktivere den.
Implementer revision på databaseniveau
Processen er relativt den samme for at oprette en revisionsspecifikation på databaseniveau, den største forskel er, at indstillingen er placeret under mappen Sikkerhed på hver database.
Højreklik på mappen Database Audit Specification og derefter New Database Audit Specification…
Vælg navnet på Database Audit og revisionsdestinationen (den samme, der blev oprettet i første trin for dette eksempel).
En anden af de vigtigste forskelle for databaseaudits er, at vi skal vælge det objekt eller skema, vi vil kontrollere.
Vælg de handlinger, der skal auditeres (du kan se beskrivelsen for hver enkelt her), og klik derefter på Ok.
I dette eksempel vil jeg auditere SELECT-kommandoen over en tabel ved navn Kursus i en eksempeldatabase med navnet Skole.
Når du har oprettet revisionsspecifikationen, skal du aktivere den til at køre.
BEMÆRK: Før du foretager ændringer i revisionskonfigurationen, skal du først deaktivere den.
Review audit logs
At have audits konfigureret og kørt er kun halvdelen af arbejdet, det vil ikke være noget værd, hvis du ikke proaktivt gennemgår logfilerne ofte.
Der er 2 muligheder for at gennemgå logfilerne, ved hjælp af SSMS og T-SQL
I dette eksempel har jeg udført nogle sætninger for at udløse de server- og databaseaudits, der er konfigureret ovenfor, så vi kan se nogle data.
SSMS
For at kontrollere hændelseslogfiler ved hjælp af Management Studio skal du blot vælge den oprettede Audit, højreklikke på den og vælge indstillingen Vis Audit Logs
Auditloggen vil blive vist i en SQL Server log kind type, og du kan se nogle af de eksempler jeg har udløst
T-SQL
For at bruge denne mulighed, bruger du DMF sys.fn_get_audit_file, angiv filplacering, og til filnavn bruger du *.sqlaudit for at inkludere alle filer.
Dette er den forespørgsel, jeg bruger til dette eksempel:
SELECT event_time,action_id,statement,database_name,server_principal_name
FROM sys.fn_get_audit_file ('C:\temp\TestAudit_*.sqlaudit',default,default);
Opdatet af forespørgslen ser således ud:
Jeg har markeret de handlinger, der er blevet fanget i databasens specifikation, med gult.
Med denne information er du klar til at konfigurere dine egne revisioner for dine missionskritiske servere og gennemgå dem ofte, og du kan også implementere en alarm eller automatisk rapporteringslogik for at blive underrettet om mistænkelig aktivitet.