SQL Server-granskning (databasmotor)
gäller för:SQL Server
Azure SQL Managed Instance
Granskning av en instans av SQL Server Database Engine eller en enskild databas innebär spårning och loggning av händelser som inträffar i databasmotorn. Med 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.
Viktig
På Azure SQL Managed Instancehar den här T-SQL-funktionen vissa beteendeändringar. Mer information om alla T-SQL-beteendeändringar finns i T-SQL-skillnader i Azure SQL Managed Instance från SQL Server.
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.
Alla utgåvor av SQL Server stöder granskningar på servernivå. Alla utgåvor stöder granskningar på databasnivå från och med SQL Server 2016 (13.x) SP1. Innan dess var granskning på databasnivå begränsad till enterprise-, utvecklar- och utvärderingsversioner. Mer information finns i funktioner som stöds av versionerna av SQL Server 2016.
Not
Det här avsnittet gäller för SQL Server. Information om SQL Database finns i Komma igång med SQL Database-granskning.
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 skapa en revision. Mer information om utökade händelser finns i Extended Events.
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ånget.
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 databasmotorn. Dessa åtgärder skickas till revisionen, som registrerar dem i målobjektet.
Granskningsåtgärdsgrupper på servernivå beskrivs i artikeln SQL Server Audit Action Groups and Actions.
Not
På grund av prestandabegränsningar granskar vi inte de tempdb
och tillfälliga tabellerna. Ä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. Granskningshändelser är de åtgärder på atomnivå som kan granskas av SQL Server. Granskningsåtgärdsgrupper är fördefinierade åtgärdsgrupper. Båda finns i SQL Server-databasomfånget. Dessa åtgärder skickas till granskningen, som registrerar dem i målsystemet. 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 Audit Action Groups and Actions.
Mål
Resultatet av en granskning skickas till ett mål, som kan vara en fil, händelseloggen för Windows-säkerhet eller händelseloggen för Windows-program. 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 händelseloggen för Windows-program. Programhändelseloggen kräver lägre behörigheter än händelseloggen för Windows-säkerhet och är mindre säker än händelseloggen för Windows-säkerhet.
När du skriver till Windows-säkerhetsloggen måste SQL Server-tjänstkontot läggas till i Generera säkerhetsgranskningar principen. 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 snap-in modulen för säkerhetspolicyn (secpol.msc). På Windows Vista eller Windows Server 2008 (och senare) kan du ange den mer detaljerade programgenererade policyn från kommandoraden med hjälp av granskningsprincipprogrammet (AuditPol.exe). Mer information om stegen för att aktivera skrivning till Windows-säkerhetsloggen finns i Skriva 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ändelseloggarna är globala för Windows-operativsystemet. Mer information om Windows-händelseloggarna finns i Översikt över Händelsevyn. 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 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äsåtgärder.
Eftersom databasmotorn kan komma åt filen kan SQL Server-inloggningar som har behörigheten CONTROL SERVER använda databasmotorn för att komma åt granskningsfilerna. 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 behörigheten CONTROL SERVER som har åtkomst till granskningsfilen via SQL Server.
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 databasmotorn 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 Encrypting File System.
För mer information om de granskningsposter som skrivs till måldatabasen, se SQL Server Audit Records.
Översikt över hur du använder SQL Server-granskning
Du kan använda SQL Server Management Studio eller Transact-SQL för att definiera en granskning. När granskningen har skapats och aktiverats får målet poster.
Du kan läsa Windows-händelseloggarna med hjälp av verktyget Händelsevisaren 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.
Skapa en granskning och definiera målet.
Skapa antingen en servergranskningsspecifikation eller en databasgranskningsspecifikation som mappar till granskningen. Aktivera granskningsspecifikationen.
Aktivera granskning.
Läs granskningshändelserna med hjälp av Windows Loggboken, Loggfilsgranskareneller funktionen fn_get_audit_file.
För mer information, se Skapa en servergranskning och servergranskningsspecifikation och Skapa en servergranskning och databasspecifikationsgranskning.
Överväganden
Om det uppstår ett fel under granskningsinitieringen startar inte servern. I det här fallet kan servern startas med hjälp av alternativet -f 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 Enskild användare med hjälp av flaggan -m. Om du startar i läget Enskild användare nedgraderar du alla granskningar där ON_FAILURE=SHUTDOWN anges för att köras i sessionen som ON_FAILURE=FORTSÄTT. När SQL Server startas med hjälp av flaggan -m skrivs MSG_AUDIT_SHUTDOWN_BYPASSED-meddelandet till felloggen.
Mer information om startalternativ för tjänsten finns i Startalternativ för databasmotortjänsten.
Ansluta en databas med en revisionsdefinition
Om du kopplar en databas som har en granskningsspecifikation och anger ett GUID som inte finns på servern orsakas en överblivna 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 kommandot ALTER DATABASE AUDIT SPECIFICATION för att ansluta den överblivna granskningsspecifikationen till en befintlig servergranskning. Du kan också använda kommandot CREATE SERVER AUDIT för att skapa en ny servergranskning med det angivna GUID:t.
Du kan bifoga en databas som har en granskningsspecifikation som definierats 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 från källan 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 Windows-händelseloggmål måste säkerhetspolicyn på datorn där speglingsservern finns tillåta tjänstekontoåtkomst till säkerhets- eller programhändelseloggen.
Granskningsadministratörer
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.
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 SQL Server-granskningsfunktionen. |
ALTER SERVER AUDIT | Ändrar ett servergranskningsobjekt med funktionen SQL Server-granskning. |
Ändra servergranskningsspecifikation | Ändrar ett servergranskningsspecifikationsobjekt med hjälp av sql Server-granskningsfunktionen. |
SKAPA DATABASGRANSKNINGSSPECIFIKATION | Skapar ett databasgranskningsspecifikationsobjekt med hjälp av SQL Server-granskningsfunktionen. |
CREATE SERVER AUDIT | Skapar ett servergranskningsobjekt med SQL Server-granskning. |
SKAPA SERVERGRANSKNINGSSPECIFIKATION | Skapar ett servergranskningsspecifikationsobjekt med funktionen SQL Server-granskning. |
TA BORT DATABASGRANSKNINGSSPECIFIKATION | Släpper ett databasgranskningsspecifikationsobjekt med hjälp av sql Server-granskningsfunktionen. |
DROP SERVER GRANSKNING | Släpper ett servergranskningsobjekt med hjälp av SQL Server-granskningsfunktionen. |
TA BORT SPECIFIKATION FÖR SERVERGRANSKNING | Släpper ett servergranskningsspecifikationsobjekt med hjälp av SQL Server-granskningsfunktionen. |
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. |
Behörigheter
Varje funktion och kommando för SQL Server Audit har individuella behörighetskrav.
För att skapa, ändra eller ta bort en servergranskning eller en servergranskningsspecifikation behöver serverhuvudprincipalerna antingen ALTER ANY SERVER AUDIT- eller CONTROL SERVER-behörigheten. För att skapa, ändra eller ta bort en databasgranskningsspecifikation kräver databasprincipaler ALTER ANY DATABASE AUDIT-behörigheten eller ALTER- eller CONTROL-behörigheten för databasen. Dessutom måste huvudansvariga ha behörighet att ansluta till databasen, eller behörighet att ändra valfri servergranskning eller kontrollera server.
Behörigheten VIEW ANY DEFINITION ger åtkomst till att visa granskningsvyer på servernivå och VIEW DEFINITION ger åtkomst till att visa granskningsvyer på databasnivå. Att neka dessa behörigheter blockerar möjligheten att visa katalogvyerna, även om den användaren har behörigheten 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).
Försiktighet
Huvudnamn i sysadmin-rollen kan manipulera alla granskningskomponenter och de i db_owner-rollen 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 de användare som har sysadmin- eller db_owner-rollen.
Relaterade uppgifter
Skapa en servergranskning och en servergranskningsspecifikation
Skapa en specifikation för servergranskning och databasgranskning
Visa en SQL Server-granskningslogg
Skriva SQL Server-granskningshändelser till säkerhetsloggen
Artiklar som är nära relaterade till granskning
Serveregenskaper (säkerhetssida)
Förklarar hur du aktiverar inloggningsgranskning för SQL Server. Granskningsposterna lagras i Windows-programloggen.
c2-granskningsläge Serverkonfigurationsalternativ
Förklarar granskningsläget för C2-säkerhetsefterlevnad i SQL Server.
händelsekategori för säkerhetsgranskning (SQL Server Profiler)
Förklarar de granskningshändelser som 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årningar manuellt i stället för att använda SQL Server Profiler.
DDL-utlösare
Förklarar hur du kan använda DDL-utlösare (Data Definition Language) för att spåra ändringar i dina databaser.
Microsoft TechNet: SQL Server TechCenter: SQL Server 2005 Säkerhet och skydd
Innehåller up-todatuminformation om SQL Server-säkerhet.