SQL Server Audit (Database Engine)

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

Applies to: yesSQL Server (alla versioner som stöds)Ja Azure SQL Managed Instance

granska en instans av SQL Server-databasmotorn eller en enskild databas innebär spårning och loggning händelser som inträffar på databasmotorn. SQL Server audit låter dig skapa serverrevisioner, som kan innehålla serverrevisionsspecifikationer för servernivåhändelser och databasgranskningsspecifikationer för databasnivåhändelser. Granskade händelser kan skrivas till händelseloggar eller granska filer.

viktigt

på Azure SQL-hanterad instans har denna T-SQL-funktion vissa beteendeförändringar. Se Azure SQL Managed Instance T-SQL skillnader från SQL Server för mer information om alla T-SQL beteendeförändringar.

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

du kan spela in åtgärdsgrupper för servergranskning per instans och antingen åtgärdsgrupper för databasgranskning eller åtgärder för databasgranskning per databas. Revisionshändelsen kommer att inträffa varje gång den granskningsbara åtgärden påträffas.

alla versioner av SQL Server stöder granskningar på servernivå. Alla utgåvor stöder databasnivågranskningar som börjar med SQL Server 2016 (13.x) SP1. Innan dess var databasnivågranskning begränsad till företag, utvecklare och Utvärderingsutgåvor. Mer information finns i funktioner som stöds av utgåvorna av SQL Server 2016.

Obs

det här avsnittet gäller SQL Server. För SQL Database, se Komma igång med SQL database revision.

SQL Server Audit Components

en revision är kombinationen av flera element i ett enda paket för en specifik grupp av serveråtgärder eller databasåtgärder. Komponenterna i SQL Server audit kombineras för att producera en utdata som kallas en revision, precis som en Rapportdefinition kombinerad med grafik och dataelement producerar en rapport.

SQL Server audit använder utökade händelser för att skapa en revision. Mer information om utökade händelser finns i utökade händelser.

SQL Server Audit

SQL Server Audit-objektet 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 resultatet av resultaten. Detta är revisionsdestinationen. Granskningen skapas i ett inaktiverat tillstånd och granskar inte automatiskt några åtgärder. När granskningen har aktiverats får granskningsdestinationen data från granskningen.

Server Audit Specification

objektet Server Audit Specification tillhör en revision. Du kan skapa en serverrevisionsspecifikation per revision, eftersom båda skapas i SQL Server-instansomfånget.

server audit specification samlar in många åtgärdsgrupper på servernivå som tagits upp av funktionen Extended Events. Du kan inkludera granskningsåtgärdsgrupper i en serverrevisionsspecifikation. Audit action groups är fördefinierade grupper av åtgärder, som är atomhändelser som förekommer i databasmotorn. Dessa åtgärder skickas till revisionen, som registrerar dem i målet.

åtgärdsgrupper för granskning på servernivå beskrivs i avsnittet ÅTGÄRDSGRUPPER och åtgärder för granskning av SQL Server.

Database Audit Specification

objektet Database Audit Specification tillhör också en SQL Server-revision. Du kan skapa en databasgranskningsspecifikation per SQL Server-databas per revision.

databassrevisionsspecifikationen samlar in granskningsåtgärder på databasnivå som tagits upp av funktionen Extended Events. Du kan lägga till antingen granskningsåtgärdsgrupper eller granskningshändelser i en databasgranskningsspecifikation. Revisionshändelser är de atomåtgärder som kan granskas av SQL Server-motorn. Revisionsåtgärder är fördefinierade grupper av åtgärder. Båda är i SQL Server – databasens omfattning. Dessa åtgärder skickas till revisionen, som registrerar dem i målet. Ta inte med objekt med serverbegränsning, t.ex. systemvyer, i en användardatabasgranskningsspecifikation.

åtgärdsgrupper och granskningsåtgärder på databasnivå beskrivs i ämnet ÅTGÄRDSGRUPPER och åtgärder för SQL Server-granskning.

mål

resultaten av en revision skickas till ett mål, som kan vara en fil, Windows Security händelseloggen eller Windows Application händelseloggen. Loggar måste granskas och arkiveras regelbundet för att se till att målet har tillräckligt med utrymme för att skriva ytterligare poster.

viktigt

alla autentiserade användare kan läsa och skriva till Windows-händelseloggen. Programhändelseloggen kräver lägre behörigheter än Windows säkerhetshändelseloggen och är mindre säker än Windows säkerhetshändelseloggen.

att skriva till Windows säkerhetslogg kräver att SQL Server service-kontot läggs till i principen generera säkerhetsgranskningar. Som standard är det lokala systemet, den lokala tjänsten och nättjänsten en del av denna policy. Den här inställningen kan konfigureras med snapin-modulen säkerhetspolicy (secpol.msc). Dessutom måste säkerhetsprincipen för audit object access vara aktiverad för både framgång och misslyckande. Den här inställningen kan konfigureras med snapin-modulen säkerhetspolicy (secpol.msc). I Windows Vista eller Windows Server 2008 kan du ställa in den mer detaljerade programgenererade principen från kommandoraden med hjälp av granskningsprincipprogrammet (AuditPol.exe). Mer information om stegen för att aktivera skrivning till Windows säkerhetslogg finns i Skriv SQL Server-Granskningshändelser till säkerhetsloggen. För mer information om Auditpol.exe program, se Knowledge Base artikel 921469, hur man använder Grupprincip för att konfigurera detaljerad säkerhetsgranskning. Windows händelseloggar är Globala för Windows operativsystem. Mer information om händelseloggar i Windows finns i översikt över händelsevisare. Om du behöver mer exakta behörigheter för granskningen, använd det binära filmålet.

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 Service-kontot 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 för administration av granskningsfiler, till exempel: kopiera dem till olika resurser, 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 databasmotorn skriver till en fil kan andra Windows-användare läsa granskningsfilen om de har behörighet. Databasmotorn tar inte ett exklusivt lås som förhindrar läsoperationer.

eftersom databasmotorn kan komma åt filen kan SQL Server-inloggningar som har KONTROLLSERVERBEHÖRIGHET använda databasmotorn för att komma åt granskningsfilerna. Om du vill spela in alla användare som läser revisionsfilen definierar du en revision på master.sys.fn_get_audit_file. Detta registrerar inloggningarna med KONTROLLSERVERBEHÖRIGHET som har åtkomst till granskningsfilen via SQL Server.

om en Granskningsadministratör kopierar filen till en annan plats (för arkivändamål och så vidare), bör ACL: erna på den nya platsen reduceras till följande behörigheter:

  • Revisionsadministratör-Läs / skriv

  • Audit Reader-Läs

vi rekommenderar att du skapar granskningsrapporter från en separat instans av SQL Server, till exempel en instans av SQL Server Express, till vilken endast Granskningsadministratörer eller Granskningsläsare har åtkomst. Genom att använda en separat instans av databasmotorn för rapportering kan du förhindra att obehöriga användare får åtkomst till granskningsposten.

du kan erbjuda ytterligare skydd mot obehörig åtkomst genom att kryptera mappen där granskningsfilen lagras med hjälp av Windows BitLocker Drive Encryption eller Windows Encrypting File System.

mer information om de granskningsposter som skrivs till målet finns i 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 revision. När granskningen har skapats och aktiverats kommer målet att få poster.

du kan läsa händelseloggarna i Windows med hjälp av verktyget Event Viewer i Windows. För filmål kan du använda antingen Loggfilvisaren 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 revision är som följer.

  1. skapa en revision och definiera målet.

  2. skapa antingen en serverrevisionsspecifikation eller databasrevisionsspecifikation som mappas till granskningen. Aktivera revisionsspecifikationen.

  3. aktivera granskningen.

  4. Läs granskningshändelserna med hjälp av Windows Event Viewer, Log File Viewer eller fn_get_audit_file-funktionen.

mer information finns i skapa en Server revision och Server revision specifikation och skapa en Server revision och databas revision Specifikation.

överväganden

i händelse av ett fel under granskningsinitiering startar inte servern. I det här fallet kan servern startas med hjälp av-f-alternativet på kommandoraden.

när ett revisionsfel gör att servern stängs av eller inte startar eftersom ON_FAILURE=avstängning anges för granskningen, kommer msg_audit_forced_shutdown-händelsen att skrivas till loggen. Eftersom avstängningen kommer att ske vid det första mötet i denna inställning kommer händelsen att skrivas en gång. Denna händelse skrivs efter felmeddelandet för revisionen som orsakar avstängningen. En administratör kan kringgå granskningsinducerade avstängningar genom att starta SQL Server i enanvändarläge med-M-flaggan. Om du startar i enanvändarläge nedgraderar du alla granskningar där ON_FAILURE=SHUTDOWN anges för att köras i den sessionen som ON_FAILURE=CONTINUE. När SQL Server startas med hjälp av-m-flaggan skrivs meddelandet msg_audit_shutdown_bypassed till felloggen.

mer information om startalternativ för tjänster finns i Databasmotorns startalternativ för tjänster.

bifoga en databas med en revision definierad

bifoga en databas som har en revisionsspecifikation och anger ett GUID som inte finns på servern kommer att orsaka en föräldralös revisionsspecifikation. Eftersom en revision med ett matchande GUID inte finns på serverinstansen registreras inga granskningshändelser. För att korrigera denna situation, använd kommandot ALTER DATABASE AUDIT SPECIFICATION för att ansluta den kvarlämnade revisionsspecifikationen till en befintlig serverrevision. Eller använd kommandot Skapa SERVERREVISION för att skapa en ny serverrevision med det angivna GUID.

du kan bifoga en databas som har en revisionsspecifikation definierad på den till en annan utgåva av SQL Server som inte stöder SQL Server audit, till exempel SQL Server Express men det kommer inte att spela in granskningshändelser.

databasspegling och SQL Server Audit

en databas som har en databasrevisionsspecifikation definierad och som använder databasspegling kommer att inkludera databassrevisionsspecifikationen. För att fungera korrekt på den speglade SQL-instansen måste följande objekt konfigureras:

  • spegelservern måste ha en revision med samma GUID för att databasgranskningsspecifikationen ska kunna skriva revisionsposter. Detta kan konfigureras med kommandot Skapa revision med GUID =< GUID från källservergranskning>.

  • för binära filmål måste mirror server service-kontot ha lämpliga behörigheter till den plats där verifieringskedjan skrivs.

  • för Windows-händelseloggsmål måste säkerhetsprincipen på datorn där spegelservern finns tillåta åtkomst till servicekontot till säkerhets-eller programhändelseloggen.

Granskningsadministratörer

medlemmar i sysadmin fast server Roll identifieras som DBO-användare i varje databas. För att granska administratörernas åtgärder, granska DBO-användarens åtgärder.

skapa och hantera revisioner med Transact-SQL

du kan använda DDL-uttalanden, dynamiska hanteringsvyer och funktioner och katalogvyer för att implementera alla aspekter av SQL Server Audit.

Datadefinitionsspråk

du kan använda följande DDL-uttalanden för att skapa, ändra och släppa revisionsspecifikationer:

DDL-uttalanden beskrivning
ändra tillstånd ändrar ägandet av en säker.
ALTER DATABASE AUDIT SPECIFICATION ändrar ett database audit specification-objekt med SQL Server Audit-funktionen.
ALTER SERVER AUDIT ändrar ett server audit-objekt med SQL Server Audit-funktionen.
ALTER SERVER AUDIT SPECIFICATION ändrar ett server audit specification-objekt med SQL Server Audit-funktionen.
skapa DATABASGRANSKNINGSSPECIFIKATION skapar ett databasgranskningsspecifikationsobjekt med SQL Server audit-funktionen.
skapa SERVERREVISION skapar ett serverrevisionsobjekt med SQL Server Audit.
skapa SERVER AUDIT SPECIFICATION skapar ett server audit specification-objekt med SQL Server Audit-funktionen.
DROP DATABASE AUDIT SPECIFICATION släpper ett database audit specification-objekt med SQL Server Audit-funktionen.
DROP SERVER AUDIT släpper ett Serverrevisionsobjekt med SQL Server Audit-funktionen.
DROP SERVER AUDIT SPECIFICATION släpper ett server audit specification-objekt med SQL Server Audit-funktionen.

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 Audit.
sys. dm_server_audit_status ger information om det aktuella läget för revisionen.
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 serverrevision.

Katalogvyer

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

Katalogvisningar beskrivning
sys.database_audit_specifications innehåller information om databasgranskningsspecifikationer i en SQL Server-revision på en serverinstans.
sys.database_audit_specification_details innehåller information om databasgranskningsspecifikationer i en SQL Server-revision 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 serverrevisionsspecifikationerna i en SQL Server-revision på en serverinstans.
sys.server_audit_specifications_details innehåller information om serverrevisionsspecifikationsdetaljer (åtgärder) i en SQL Server-revision på en serverinstans.
sys.server_file_audits innehåller lagrar utökad information om filgranskningstypen i en SQL Server-revision på en serverinstans.

behörigheter

varje funktion och kommando för SQL Server Audit har individuella behörighetskrav.

för att skapa, ändra eller släppa en Serverrevision eller Serverrevisionsspecifikation kräver serverhuvudmän behörigheten ALTER ANY SERVER AUDIT eller CONTROL SERVER. För att skapa, ändra eller släppa en Databasgranskningsspecifikation kräver databasansvariga behörigheten ALTER ANY DATABASE AUDIT eller behörigheten ALTER or CONTROL i databasen. Dessutom måste huvudmän ha behörighet att ansluta till databasen eller ändra serverrevisions-eller KONTROLLSERVERBEHÖRIGHETER.

behörigheten Visa vilken DEFINITION som helst ger åtkomst för att visa granskningsvyer på servernivå och VYDEFINITIONEN ger åtkomst för att visa granskningsvyer på databasnivå. Förnekande av dessa behörigheter åsidosätter möjligheten att visa katalogvyer, även om huvudmannen har behörigheterna ALTER ANY SERVER AUDIT eller ALTER ANY DATABASE AUDIT.

mer information om hur du beviljar rättigheter och behörigheter finns i GRANT (Transact-SQL).

Varning

huvudmän i rollen sysadmin kan manipulera med någon revisionskomponent och de i rollen db_owner kan manipulera med revisionsspecifikationer i en databas. SQL Server Audit validerar att en inloggning som skapar eller ändrar en revisionsspecifikation har åtminstone behörigheten ALTER ANY DATABASE AUDIT. Det gör dock ingen validering när du bifogar en databas. Du bör anta att alla Databassrevisionsspecifikationer bara är lika pålitliga som de huvudmännen i sysadmin-eller db_owner-rollen.

skapa en Serverrevision och Serverrevisionsspecifikation

skapa en Serverrevision och Databasrevisionsspecifikation

visa en SQL Server-granskningslogg

skriv SQL Server-Granskningshändelser till säkerhetsloggen

Serveregenskaper (säkerhetssida)
förklarar hur du aktiverar inloggningsgranskning för SQL Server. Granskningsposterna lagras i Windows-programloggen.

alternativet C2 audit mode Server Configuration
förklarar granskningsläget C2 för säkerhetsöverensstämmelse i SQL Server.

Säkerhetskontrollhändelsekategori (SQL Server Profiler)
förklarar de granskningshändelser du kan använda i SQL Server Profiler. Mer information finns i SQL Server Profiler.

SQL Trace
förklarar hur SQL Trace kan användas inifrån dina egna program för att skapa spår manuellt, istället för att använda SQL Server Profiler.

DDL Triggers
förklarar hur du kan använda Data Definition Language (DDL) triggers för att spåra ändringar i dina databaser.

Microsoft TechNet: SQL Server TechCenter: SQL Server 2005 säkerhet och skydd
ger aktuell information om SQL Server-Säkerhet.

Se även

SQL Server Audit Action Groups and Actions
SQL Server Audit Records