Dela via


SQL Server Granskning (Database Engine)

Applies to:SQL ServerAzure SQL Managed Instance

Auditing en instans av Databasmotor för SQL Server eller en enskild databas innebär att spåra och logga händelser som inträffar i Database Engine. SQL Server granskning kan du skapa servergranskningar som kan innehålla servergranskningsspecifikationer för händelser på servernivå och databasgranskningsspecifikationer för händelser på databasnivå. Granskade händelser kan skrivas till händelseloggarna eller till granskningsfiler.

Det finns flera granskningsnivåer för SQL Server, beroende på myndighets- eller standardkrav för din installation. SQL Server Audit innehåller de verktyg och processer som du måste ha för att aktivera, lagra och visa granskningar på olika server- och databasobjekt.

Du kan registrera servergranskningsåtgärdsgrupper per instans och antingen databasgranskningsåtgärdsgrupper eller databasgranskningsåtgärder per databas. Granskningshändelsen inträffar varje gång den granskningsbara åtgärden påträffas.

Den här artikeln gäller för SQL Server och Azure SQL Managed Instance.

  • Alla utgåvor av SQL Server stöder granskningar på servernivå. I SQL Server 2016 (13.x) med Service Pack 1 och senare versioner stöder alla utgåvor granskningar på databasnivå. Före SQL Server 2016 (13.x) begränsades granskning på databasnivå till utgåvorna Enterprise, Developer och Evaluation. Mer information finns i Versioner och funktioner som stöds i SQL Server 2016.
  • I Azure SQL Managed Instance stöds SQL Server-granskning och det finns olikheter mellan databaser i Azure SQL Managed Instance och databaser i SQL Server.
  • Information om SQL Database finns i Auditing for Azure SQL Database.

SQL Server Granskningskomponenter

En granskning är kombinationen av flera element i ett enda paket för en specifik grupp med serveråtgärder eller databasåtgärder. Komponenterna i SQL Server granskning kombineras för att skapa utdata som kallas granskning, precis som en rapportdefinition kombinerad med grafik och dataelement skapar en rapport.

SQL Server revision använder Extended Events för att hjälpa till med att skapa en revision. Mer information om utökade händelser finns i Översikt över utökade händelser.

SQL Server granskning

Objektet SQL Server Audit samlar in en enda instans av åtgärder på server- eller databasnivå och grupper av åtgärder som ska övervakas. Granskningen är på SQL Server instansnivå. Du kan ha flera granskningar per SQL Server instans.

När du definierar en granskning anger du platsen för resultatets utdata. Det här är granskningsdestinationen. Granskningen skapas i ett inaktiverat tillstånd och granskar inte automatiskt några åtgärder. När granskningen har aktiverats mottar målet för granskningen data från granskningen.

Servergranskningsspecifikation

Objektet Server Audit Specification tillhör en granskning. Du kan skapa en servergranskningsspecifikation per granskning, eftersom båda skapas i SQL Server instansomfång.

Servergranskningsspecifikationen samlar in många åtgärdsgrupper på servernivå som genereras av funktionen Utökade händelser. Du kan inkludera granskningsåtgärdsgrupper i en servergranskningsspecifikation. Granskningsåtgärdsgrupper är fördefinierade grupper av åtgärder, som är atomiska händelser som inträffar i Database Engine. Dessa åtgärder skickas till revisionen, som registrerar dem i målobjektet.

Granskningsåtgärdsgrupper på servernivå beskrivs i artikeln SQL Server Granskningsåtgärdsgrupper och åtgärder.

Not

På grund av prestandabegränsningar tempdb och temporära tabeller granskas inte. Även om åtgärdsgruppen när batchen är slutförd samlar in satser mot temporära tabeller, kanske den inte fyller i objektnamnen korrekt. Källtabellen granskas dock alltid, vilket säkerställer att alla infogningar från källtabellen till tillfälliga tabeller registreras.

Specifikation för databasgranskning

Objektet Database Audit Specification tillhör också en SQL Server granskning. Du kan skapa en databasgranskningsspecifikation per SQL Server databas per granskning.

Specifikationen för databasgranskning samlar in granskningsåtgärder på databasnivå som genereras av funktionen Utökade händelser. Du kan lägga till antingen granskningsåtgärdsgrupper eller granskningshändelser i en databasgranskningsspecifikation. Audit-händelser är atomiska åtgärder som kan granskas av SQL Server-motorn. Granskningsåtgärdsgrupper är fördefinierade åtgärdsgrupper. Båda finns i databasomfånget SQL Server. Dessa åtgärder skickas till revisionen, som registrerar dem i målobjektet. Inkludera inte objekt med serveromfattning, till exempel systemvyer, i en användardatabasgranskningsspecifikation.

Granskningsåtgärdsgrupper på databasnivå och granskningsåtgärder beskrivs i artikeln SQL Server Granskningsåtgärdsgrupper och åtgärder.

Mål

Resultatet av en granskning skickas till ett mål, som kan vara en fil, Windows Säkerhetshändelselogg eller Windows Programhändelselogg. Loggar måste granskas och arkiveras regelbundet för att se till att systemet har tillräckligt med utrymme för att skriva fler poster.

Viktig

Alla autentiserade användare kan läsa och skriva till Windows-applikationens händelseloggen. Programhändelseloggen kräver lägre behörigheter än händelseloggen Windows Zabezpečenie och är mindre säker än Windows Zabezpečenie händelseloggen.

För att skriva till Windows Zabezpečenie-loggen behövs att SQL Server-tjänstkonto läggs till under policyn Generera säkerhetsgranskningar. Som standard ingår det lokala systemet, den lokala tjänsten och nätverkstjänsten i den här principen. Den här inställningen kan konfigureras med hjälp av snapin-modulen för säkerhetsprinciper (secpol.msc). Dessutom måste Objektåtkomstrevision säkerhetspolicy vara aktiverad för både Framgång och Misslyckande. Den här inställningen kan konfigureras med hjälp av snapin-modulen för säkerhetsprinciper (secpol.msc). I Windows Vista eller Windows Server 2008 (och senare) kan du ange den mer detaljerade programgenererade principen från kommandoraden, med hjälp av granskningsprincipprogrammet (AuditPol.exe). För mer information om hur du aktiverar skrivning till säkerhetsloggen för Windows, se Skriv SQL Server Granskningshändelser till säkerhetsloggen. Mer information om Auditpol.exe-programmet finns i knowledge base-artikeln 921469, Använda grupprincip för att konfigurera detaljerad säkerhetsgranskning. Windows händelselogg är global för Windows-operativsystemet. Mer information om händelseloggarna för Windows finns i Zobrazovač udalostí Overview. Om du behöver mer exakta behörigheter till granskningen använder du den binära målfilen.

När du sparar granskningsinformation i en fil kan du begränsa åtkomsten till filplatsen på följande sätt för att förhindra manipulering:

  • SQL Server-tjänstkontot måste ha både läs- och skrivbehörighet.

  • Granskningsadministratörer kräver vanligtvis läs- och skrivbehörighet. Detta förutsätter att granskningsadministratörerna är Windows-konton som administrerar granskningsfiler, såsom: kopiera dem till olika delningar, säkerhetskopiera dem och så vidare.

  • Granskningsläsare som har behörighet att läsa granskningsfiler måste ha läsbehörighet.

Även när Database Engine skriver till en fil kan andra Windows användare läsa granskningsfilen om de har behörighet. Database Engine tar inte ett exklusivt lås som förhindrar läsåtgärder.

Eftersom Database Engine kan komma åt filen kan SQL Server inloggningar som har behörigheten CONTROL SERVER använda Database Engine för att komma åt granskningsfilerna. I SQL Server 2022 (16.x) och senare versioner räcker behörigheten VIEW SERVER SECURITY AUDIT för att läsa granskningsfiler med hjälp av fn_get_audit_file. Om du vill registrera alla användare som läser granskningsfilen definierar du en granskning på master.sys.fn_get_audit_file. Detta registrerar inloggningarna med CONTROL SERVER behörighet som har åtkomst till granskningsfilen via SQL Server. Mer information om fn_get_audit_file behörigheter finns i sys.fn_get_audit_file.

Om en granskningsadministratör kopierar filen till en annan plats (i arkivsyfte och så vidare) bör åtkomstkontrollistorna (ACL:er) på den nya platsen minskas till följande behörigheter:

  • Granskningsadministratör – Läsa/skriva
  • Granskningsläsare – Läs

Vi rekommenderar att du genererar granskningsrapporter från en separat instans av SQL Server, till exempel en instans av SQL Server Express, som endast granskningsadministratörer eller granskningsläsare har åtkomst till. Genom att använda en separat instans av Database Engine för rapportering kan du förhindra att obehöriga användare får åtkomst till granskningsposten.

Du kan erbjuda extra skydd mot obehörig åtkomst genom att kryptera mappen där granskningsfilen lagras med hjälp av Windows BitLocker-diskkryptering eller Windows Kryptera filsystem.

För mer information om de granskningsposter som skrivs till objektet, se SQL Server Granskningsposter.

Översikt över att använda SQL Server Audit

Du kan använda SQL Server Management Studio eller Transact-SQL för att definiera en granskning. När granskningen har skapats och aktiverats tar systemet emot poster.

Du kan läsa händelseloggarna för Windows med hjälp av verktyget Zobrazovač udalostí i Windows. För filmål kan du använda antingen Log File Viewer i SQL Server Management Studio eller funktionen fn_get_audit_file för att läsa målfilen.

Den allmänna processen för att skapa och använda en granskning är följande.

  1. Skapa en granskning och definiera målet.
  2. Skapa antingen en servergranskningsspecifikation eller en databasgranskningsspecifikation som mappar till granskningen. Aktivera granskningsspecifikationen.
  3. Aktivera granskning.
  4. Läs granskningshändelserna med hjälp av Windows Zobrazovač udalostí, Log File Viewer eller funktionen fn_get_audit_file.

Mer information finns i Skapa en servergransknings- och servergranskningsspecifikation och Skapa en specifikation för servergranskning och databasgranskning.

Överväganden

Om ett fel inträffar under granskningsinitieringen startar inte servern. I det här fallet kan servern startas med hjälp -f av alternativet på kommandoraden.

När ett granskningsfel gör att servern stängs av eller inte startas eftersom ON_FAILURE = SHUTDOWN har angetts för granskningen, skrivs händelsen MSG_AUDIT_FORCED_SHUTDOWN till loggen. Eftersom avstängningen sker vid första aktivering av den här inställningen registreras händelsen en gång. Den här händelsen skrivs efter felmeddelandet för den granskning som orsakade avstängningen. En administratör kan kringgå granskningsinducerade avstängningar genom att starta SQL Server i läget En användare med flaggan -m. Om du startar i Enanvändarläge, kommer du att sänka statusen för alla granskningar där ON_FAILURE = SHUTDOWN har angetts att köras i den sessionen som ON_FAILURE = CONTINUE. När SQL Server startas med flaggan -m skrivs meddelandet MSG_AUDIT_SHUTDOWN_BYPASSED till felloggen.

Mer information om startalternativ för tjänsten finns i startalternativ för Database Engine service.

Interna åtgärder i Azure SQL Managed Instance

  • I Azure SQL Database och Azure SQL Managed Instance är händelser som initieras av SQLDBControlPlaneFirstPartyApp en intern Azure funktion i kontrollplanet Azure SQL Database. Händelser som initieras av SQLDBControlPlaneFirstPartyApp ingår i en intern synkroniseringsåtgärd mellan SQL-motorn och Azure Resource Manager. Dessa händelser är en normal del av resurshanteringen och krävs för korrekt resursrepresentation och åtgärd i Azure.

Bifoga en databas med en definierad granskningslogg

Om du kopplar en databas som har en granskningsspecifikation och anger ett GUID som inte finns på servern, orsakas en överbliven granskningsspecifikation . Eftersom det inte finns någon granskning med matchande GUID på serverinstansen registreras inga granskningshändelser. Du kan åtgärda den här situationen genom att använda ALTER DATABASE AUDIT SPECIFICATION kommandot för att ansluta den överblivna granskningsspecifikationen till en befintlig servergranskning. Du kan också använda CREATE SERVER AUDIT kommandot för att skapa en ny servergranskning med angivet GUID.

Du kan bifoga en databas som har en granskningsspecifikation definierad på den till en annan version av SQL Server som inte stöder SQL Server granskning, till exempel SQL Server Express men som inte registrerar granskningshändelser.

Databasspegling och SQL Server granskning

En databas som har en definierad databasgranskningsspecifikation och som använder databasspegling innehåller specifikationen för databasgranskning. För att fungera korrekt på den speglade SQL-instansen måste följande objekt konfigureras:

  • Speglingsservern måste ha en granskning med samma GUID för att databasgranskningsspecifikationen ska kunna skriva granskningsposter. Detta kan konfigureras med hjälp av kommandot CREATE AUDIT WITH GUID = <guid-from-source-server-audit>.

  • För binära filmål måste tjänstkontot för speglingsservern ha rätt behörigheter till platsen där revisionsloggen skrivs.

  • För mål som använder Windows händelseloggar måste säkerhetsprincipen på datorn på vilken speglingsservern finns tillåta att tjänstekontot har åtkomst till säkerhets- eller programhändelseloggen.

Granska administratörsaktivitet

Medlemmar i sysadmin fast serverroll identifieras som dbo- användare i varje databas. Granska administratörernas åtgärder genom att granska åtgärderna hos användaren dbo.

Behörigheter

Varje funktion och kommando för SQL Server Granskning har individuella behörighetskrav.

För att skapa, ändra eller ta bort en serverrevision eller serverrevisionsspecifikation kräver serverroller ALTER ANY SERVER AUDIT eller behörigheten CONTROL SERVER. För att skapa, ändra eller ta bort en databasgranskningsspecifikation kräver databasprincipalerna behörigheten ALTER ANY DATABASE AUDIT eller behörigheten ALTERCONTROL databasen. Dessutom måste rektorer ha behörighet att ansluta till databasen, eller ALTER ANY SERVER AUDIT eller CONTROL SERVER behörighet.

Behörigheten VIEW ANY DEFINITION ger åtkomst för att visa granskningsvyer på servernivå och VIEW DEFINITION ger åtkomst till att visa granskningsvyer på databasnivå. Om dessa behörigheter nekas åsidosätts möjligheten att visa katalogvyerna, även om den berörda personen har behörigheterna ALTER ANY SERVER AUDIT eller ALTER ANY DATABASE AUDIT.

Om du vill läsa granskningsdata med fn_get_audit_file kräver SQL Server 2019 (15.x) och tidigare versioner CONTROL SERVER behörighet på servern, medan SQL Server 2022 (16.x) och senare versioner kräver VIEW SERVER SECURITY AUDIT behörighet. Mer information finns i sys.fn_get_audit_file.

Mer information om hur du beviljar rättigheter och behörigheter finns i GRANT.

Försiktighet

Huvudnamn i sysadmin-rollen kan manipulera alla granskningskomponenter och huvudnamn i db_owner roll kan manipulera granskningsspecifikationer i en databas. SQL Server Audit verifierar att en inloggning som skapar eller ändrar en granskningsspecifikation har minst behörigheten ALTER ANY DATABASE AUDIT. Det gör dock ingen validering när du bifogar en databas. Du bör anta att alla specifikationer för databasgranskning endast är lika tillförlitliga som dessa principaler i sysadmin eller db_owner-rollen.

Skapa och hantera granskningar med Transact-SQL

Du kan använda DDL-instruktioner, dynamiska hanteringsvyer och funktioner samt katalogvyer för att implementera alla aspekter av SQL Server Granskning.

Språkinstruktioner för datadefinition

Du kan använda följande DDL-instruktioner för att skapa, ändra och släppa granskningsspecifikationer:

DDL-instruktioner Beskrivning
ändra auktorisering Ändrar ägarskapet för ett säkerhetsobjekt.
ÄNDRA FÖR DATABASGRANSKNING Ändrar ett databasgranskningsspecifikationsobjekt med hjälp av funktionen SQL Server Granskning.
ÄNDRA SERVERGRANSKNING Ändrar ett servergranskningsobjekt med hjälp av funktionen SQL Server Granskning.
Ändra servergranskningsspecifikation Ändrar ett servergranskningsspecifikationsobjekt med hjälp av funktionen SQL Server Granskning.
SKAPA DATABASGRANSKNINGSSPECIFIKATION Skapar ett databasgranskningsspecifikationsobjekt med hjälp av funktionen SQL Server granskning.
SKAPA SERVERGRANSKNING Skapar ett servergranskningsobjekt med SQL Server Granskning.
SKAPA SERVERGRANSKNINGSSPECIFIKATION Skapar ett servergranskningsspecifikationsobjekt med funktionen SQL Server Granskning.
TA BORT DATABASGRANSKNINGSSPECIFIKATION Tar bort ett databasgranskningsspecifikationsobjekt med hjälp av funktionen SQL Server Audit.
DROP SERVER GRANSKNING Tar bort ett servergranskningsobjekt med SQL Server granskningsfunktionen.
TA BORT SPECIFIKATION FÖR SERVERGRANSKNING Tar bort ett granskningsspecifikationsobjekt för server med funktionen för SQL Server-granskning.

Dynamiska vyer och funktioner

I följande tabell visas de dynamiska vyer och funktioner som du kan använda för SQL Server granskning.

Dynamiska vyer och funktioner Beskrivning
sys.dm_audit_actions Returnerar en rad för varje granskningsåtgärd som kan rapporteras i granskningsloggen och varje granskningsåtgärdsgrupp som kan konfigureras som en del av SQL Server Granskning.
sys.dm_server_audit_status Innehåller information om det aktuella tillståndet för granskningen.
sys.dm_audit_class_type_map Returnerar en tabell som mappar fältet class_type i granskningsloggen till fältet class_desc i sys.dm_audit_actions.
fn_get_audit_file Returnerar information från en granskningsfil som skapats av en servergranskning.

Katalogvyer

I följande tabell visas de katalogvyer som du kan använda för SQL Server granskning.

Katalogvyer Beskrivning
sys.database_audit_specifications Innehåller information om databasgranskningsspecifikationerna i en SQL Server granskning på en serverinstans.
sys.database_audit_specification_details Innehåller information om databasgranskningsspecifikationerna i en SQL Server granskning på en serverinstans för alla databaser.
sys.server_audits Innehåller en rad för varje SQL Server granskning i en serverinstans.
sys.server_audit_specifications Innehåller information om servergranskningsspecifikationerna i en SQL Server granskning på en serverinstans.
sys.server_audit_specifications_details Innehåller information om servergranskningsspecifikationen (åtgärder) i en SQL Server-granskning på en serverinstans.
sys.server_file_audits Innehåller utökad information om filgranskningstypen i en SQL Server-granskning på en serverinstans.

Nästa steg