Delen via


SQL Server Audit (Database Engine)

van toepassing op:SQL ServerAzure SQL Managed Instance

Controle een exemplaar van de SQL Server Database Engine of een afzonderlijke database omvat het bijhouden en vastleggen van gebeurtenissen die op de database-engine plaatsvinden. Met SQL Server-controle kunt u servercontroles maken, die servercontrolespecificaties kunnen bevatten voor gebeurtenissen op serverniveau en databasecontrolespecificaties voor gebeurtenissen op databaseniveau. Gecontroleerde gebeurtenissen kunnen worden geschreven naar de gebeurtenislogboeken of naar auditbestanden.

Belangrijk

In Azure SQL Managed Instanceheeft deze T-SQL-functie bepaalde gedragswijzigingen. Zie T-SQL-verschillen tussen Azure SQL Managed Instance en SQL Server voor meer informatie over alle wijzigingen in T-SQL-gedrag.

Er zijn verschillende controleniveaus voor SQL Server, afhankelijk van de overheids- of standaardenvereisten voor uw installatie. SQL Server Audit biedt de hulpprogramma's en processen die u nodig hebt om controles op verschillende server- en databaseobjecten in te schakelen, op te slaan en weer te geven.

U kunt actiegroepen voor servercontrole per exemplaar vastleggen en databasecontroleactiegroepen of databasecontroleacties per database. De controlegebeurtenis vindt elke keer plaats wanneer de controleerbare actie wordt aangetroffen.

Alle edities van SQL Server ondersteunen controles op serverniveau. Alle edities ondersteunen controles op databaseniveau vanaf SQL Server 2016 (13.x) SP1. Voorheen was controle op databaseniveau beperkt tot Enterprise-, Developer- en Evaluation-edities. Zie Functies die worden ondersteund door de edities van SQL Server 2016voor meer informatie.

Notitie

Dit onderwerp is van toepassing op SQL Server. Voor SQL Database, zie Aan de slag met SQL Databasecontrole.

SQL Server-controleonderdelen

Een audit is de combinatie van verschillende elementen in één pakket voor een specifieke groep serveracties of databaseacties. De onderdelen van SQL Server-audit combineren om een uitvoer te produceren die een controle wordt genoemd, net zoals een rapportdefinitie gecombineerd met afbeeldingen en gegevenselementen een rapport produceert.

SQL Server-audit maakt gebruik van uitgebreide gebeurtenissen om een controle te maken. Zie Uitgebreide gebeurtenissenvoor meer informatie over uitgebreide gebeurtenissen.

SQL Server-controle

Het SQL Server Audit-object verzamelt één exemplaar van acties op server- of databaseniveau en groepen acties die moeten worden bewaakt. De controle bevindt zich op het niveau van het SQL Server-exemplaar. U kunt meerdere controles per SQL Server-exemplaar hebben.

Wanneer u een controle definieert, geeft u de locatie op voor de uitvoer van de resultaten. Dit is de controlebestemming. De controle wordt gemaakt in een uitgeschakelde status en controleert niet automatisch acties. Nadat de controle is ingeschakeld, ontvangt de controlebestemming gegevens van de audit.

Specificatie voor serveraudit

Het Server Audit Specificatie-object behoort tot een controle. U kunt per audit één servercontrolespecificatie maken, omdat beide worden gemaakt binnen de scope van het SQL Server-instance.

De controlespecificatie van de server verzamelt veel actiegroepen op serverniveau die worden gegenereerd door de functie Uitgebreide gebeurtenissen. U kunt actiegroepen voor controle opnemen in een servercontrolespecificatie. Controleactiegroepen zijn vooraf gedefinieerde groepen acties, die atomische gebeurtenissen zijn die plaatsvinden in de database-engine. Deze acties worden naar de audit verzonden, waar ze in het doel worden geregistreerd.

Controleactiegroepen op serverniveau worden beschreven in het artikel SQL Server Audit Action Groups and Actions.

Notitie

Vanwege prestatiebeperkingen controleren we de tempdb en tijdelijke tabellen niet. Hoewel de actiegroep met batch voltooide instructies vastlegt voor tijdelijke tabellen, worden de objectnamen mogelijk niet correct ingevuld. De brontabel wordt echter altijd gecontroleerd, zodat alle invoegingen van de brontabel naar tijdelijke tabellen worden vastgelegd.

Databasecontrolespecificatie

Het database-auditspecificatie-object behoort ook tot een SQL Server-audit. U kunt per controle één databasecontrolespecificatie per SQL Server-database maken.

De databasecontrolespecificatie verzamelt controleacties op databaseniveau die worden gegenereerd door de functie Uitgebreide gebeurtenissen. U kunt controleactiegroepen of controlegebeurtenissen toevoegen aan een databasecontrolespecificatie. Controlegebeurtenissen zijn de atomische acties die kunnen worden gecontroleerd door de SQL Server-processor. Audit-actiegroepen zijn vooraf gedefinieerde groepen van acties. Beide bevinden zich op het databasebereik van SQL Server. Deze acties worden verzonden naar het auditlogboek, dat ze opneemt in het doelbestand. Neem geen objecten met serverbereik op, zoals de systeemweergaven, in een auditspecificatie van een gebruikersdatabase.

Auditactiegroepen en auditacties op databaseniveau worden beschreven in het artikel SQL Server-auditactiegroepen en -acties.

Doel

De resultaten van een audit worden verzonden naar een doel, dat kan een bestand, het Windows-beveiligingsgebeurtenislogboek of het windows-toepassingsgebeurtenislogboek zijn. Logboeken moeten periodiek worden gecontroleerd en gearchiveerd om ervoor te zorgen dat het doel voldoende ruimte heeft om meer records te schrijven.

Belangrijk

Elke geverifieerde gebruiker kan het gebeurtenislogboek van de Windows-toepassing lezen en schrijven. Het gebeurtenislogboek van de toepassing vereist lagere machtigingen dan het Windows-beveiligingslogboek en is minder veilig dan het Windows-beveiligingslogboek.

Schrijven naar het Windows-beveiligingslogboek vereist dat het SQL Server-service-account wordt toegevoegd aan het beleid 'Beveiligingscontroles genereren'. Het lokale systeem, de lokale service en de netwerkservice maken standaard deel uit van dit beleid. Deze instelling kan worden geconfigureerd met behulp van de module beveiligingsbeleid (secpol.msc). Daarnaast moet het objecttoegang beveiligingsbeleid beveiligingsbeleid zijn ingeschakeld voor zowel succesvolle als misluktetoegang. Deze instelling kan worden geconfigureerd met behulp van de beheerconsole voor beveiligingsbeleid (secpol.msc). In Windows Vista of Windows Server 2008 (en hoger) kunt u de meer gedetailleerde toepassing die is gegenereerd beleid vanaf de opdrachtregel instellen met behulp van het controlebeleidsprogramma (AuditPol.exe). Voor meer informatie over de stappen om naar het Windows-beveiligingslogboek te schrijven, bekijk SQL Server-auditgebeurtenissen naar het beveiligingslogboek schrijven. Zie het Knowledge Base-artikel 921469 Groepsbeleid gebruiken om gedetailleerde beveiligingscontrole-te configureren voor meer informatie over het Auditpol.exe-programma. De Windows-gebeurtenislogboeken zijn globaal voor het Windows-besturingssysteem. Voor meer informatie over de Windows-gebeurtenislogboeken, zie Overzicht van de logboeken van de Gebeurtenisviewer. Als u nauwkeurigere machtigingen voor de controle nodig hebt, gebruikt u het binaire doelbestand.

Wanneer u controlegegevens opslaat in een bestand om manipulatie te voorkomen, kunt u de toegang tot de bestandslocatie op de volgende manieren beperken:

  • Het SQL Server-serviceaccount moet zowel de machtiging Lezen als Schrijven hebben.

  • Auditbeheerders hebben doorgaans lees- en schrijfmachtigingen nodig. Hierbij wordt ervan uitgegaan dat de auditbeheerders Windows-accounts zijn voor het beheer van controlebestanden, zoals het kopiëren naar verschillende shares, het maken van back-ups, enzovoort.

  • Auditlezers die gemachtigd zijn om auditbestanden te lezen, moeten over de machtiging Lezen beschikken.

Zelfs wanneer de database-engine naar een bestand schrijft, kunnen andere Windows-gebruikers het auditbestand lezen als ze gemachtigd zijn. De database-engine heeft geen exclusieve vergrendeling die leesbewerkingen voorkomt.

Omdat de Database Engine toegang heeft tot het bestand, kunnen SQL Server-gebruikers met de permissie CONTROL SERVER de engine gebruiken voor toegang tot de auditbestanden. Als u een gebruiker wilt vastleggen die het auditbestand leest, definieert u een controle op master.sys.fn_get_audit_file. Hiermee worden de aanmeldingen vastgelegd van gebruikers met CONTROL SERVER-rechten die toegang hebben gehad tot het auditlogbestand via SQL Server.

Als een controlebeheerder het bestand kopieert naar een andere locatie (voor archiefdoeleinden, enzovoort), moeten de toegangsbeheerlijsten (ACL's) op de nieuwe locatie worden gereduceerd tot de volgende machtigingen:

  • Controlebeheerder - Lezen/schrijven

  • Auditlezer - Lezen

U wordt aangeraden controlerapporten te genereren van een afzonderlijk exemplaar van SQL Server, zoals een exemplaar van SQL Server Express, waartoe alleen auditbeheerders of auditlezers toegang hebben. Door een afzonderlijk exemplaar van de database-engine te gebruiken voor rapportage, kunt u voorkomen dat onbevoegde gebruikers toegang krijgen tot de auditrecord.

U kunt extra bescherming bieden tegen onbevoegde toegang door de map te versleutelen waarin het auditbestand wordt opgeslagen met windows BitLocker-stationsversleuteling of Windows Encrypting File System.

Raadpleeg SQL Server Audit Recordsvoor meer informatie over de auditrecords die naar de doelbestemming zijn geschreven.

Overzicht van het gebruik van SQL Server-controle

U kunt SQL Server Management Studio of Transact-SQL gebruiken om een controle te definiëren. Nadat de controle is aangemaakt en ingeschakeld, ontvangt het doelobject invoer.

U kunt de Windows-gebeurtenislogboeken lezen met behulp van het hulpprogramma Logboeken in Windows. Voor bestandsdoelen kunt u de Logboekbestandsviewer in SQL Server Management Studio of de fn_get_audit_file-functie gebruiken om het doelbestand te lezen.

Het algemene proces voor het maken en gebruiken van een audit is als volgt.

  1. Maak een controle en definieer het doel.

  2. Maak een serveraudit-specificatie of databaseaudit-specificatie die aan de audit is gekoppeld. Schakel de auditspecificatie in.

  3. Schakel de controle in.

  4. Lees de controlegebeurtenissen met behulp van de Windows Logboekenviewer, Logbestandsviewer, of de functie fn_get_audit_file.

Zie Een servercontrole- en servercontrolespecificatie maken en Een servercontrole- en databasecontrolespecificatie makenvoor meer informatie.

Overwegingen

In het geval van een fout tijdens het starten van de controle wordt de server niet gestart. In dit geval kan de server worden gestart met behulp van de optie -f op de opdrachtregel.

Wanneer een controlefout ervoor zorgt dat de server wordt afgesloten of niet wordt gestart omdat ON_FAILURE=AFSLUITEN is opgegeven voor de controle, wordt de MSG_AUDIT_FORCED_SHUTDOWN gebeurtenis naar het logboek geschreven. Omdat het afsluiten plaatsvindt bij de eerste keer dat deze instelling wordt aangetroffen, wordt de gebeurtenis één keer vastgelegd. Deze gebeurtenis wordt geschreven na het foutbericht voor de audit die de afsluiting veroorzaakt. Een beheerder kan controle-geïnduceerde afsluitingen omzeilen door SQL Server in de modus voor één gebruiker te starten met behulp van de vlag -m. Als u in de modus Voor één gebruiker begint, downgradet u een audit waarbij ON_FAILURE=SHUTDOWN is opgegeven om in die sessie uit te voeren als ON_FAILURE=DOORGAAN. Wanneer SQL Server wordt gestart met de vlag -m, wordt het bericht MSG_AUDIT_SHUTDOWN_BYPASSED in het foutenlogboek geschreven.

Zie Database Engine Service Startup Optionsvoor meer informatie over opstartopties voor services.

Een database koppelen aan een gedefinieerde audit

Als u een database met een controlespecificatie koppelt en een GUID opgeeft die niet op de server bestaat, wordt een verweesde controlespecificatie veroorzaakt. Omdat er geen audit met een overeenkomende GUID (Globally Unique Identifier) bestaat op de serverinstantie, worden er geen auditevenementen vastgelegd. Als u deze situatie wilt corrigeren, gebruikt u de opdracht ALTER DATABASE AUDIT SPECIFICATION om de zwevende auditspecificatie te verbinden met een bestaande servercontrole. Of gebruik de opdracht CREATE SERVER AUDIT om een nieuwe servercontrole te maken met de opgegeven GUID.

U kunt een database waaraan een controlespecificatie is gedefinieerd, koppelen aan een andere editie van SQL Server die geen ondersteuning biedt voor SQL Server-audit, zoals SQL Server Express, maar geen controlegebeurtenissen registreert.

Databasespiegeling en SQL Server-audit

Een database waarvoor een databasecontrolespecificatie is gedefinieerd en die gebruikmaakt van databasespiegeling, bevat de databasecontrolespecificatie. Als u het gespiegelde SQL-exemplaar correct wilt gebruiken, moeten de volgende items worden geconfigureerd:

  • De mirrorserver moet een controle met dezelfde GUID hebben om de databasecontrolespecificatie in te schakelen voor het schrijven van auditrecords. Dit kan worden geconfigureerd met behulp van de opdracht CREATE AUDIT WITH GUID =<GUID van bronservercontrole>.

  • Voor binaire bestanddoelen moet het serviceaccount van de mirrorserver de juiste machtigingen hebben voor de locatie waar het controlelogboek wordt geschreven.

  • Voor Windows-gebeurtenislogboekdoelen moet het beveiligingsbeleid op de computer waarop de mirrorserver zich bevindt, toestaan dat het serviceaccount toegang krijgt tot het beveiligings- of toepassingsgebeurtenislogboek.

Controle van beheerders

Leden van de sysadmin vaste serverfunctie worden geïdentificeerd als de dbo gebruiker in elke database. Als u acties van de beheerders wilt controleren, controleert u de acties van de dbo gebruiker.

Audits maken en beheren met Transact-SQL

U kunt DDL-instructies, dynamische beheerweergaven en -functies en catalogusweergaven gebruiken om alle aspecten van SQL Server Audit te implementeren.

Taalinstructies voor gegevensdefinities

U kunt de volgende DDL-instructies gebruiken om auditspecificaties te maken, te wijzigen en te verwijderen:

DDL-instructies Beschrijving
ALTER AUTHORIZATION Hiermee wordt het eigendom van een beveiligd object gewijzigd.
DATABASECONTROLESPECIFICATIE wijzigen Hiermee wijzigt u een databasecontrolespecificatieobject met behulp van de SQL Server-auditfunctie.
ALTER SERVER AUDIT Hiermee wijzigt u een servercontroleobject met behulp van de functie SQL Server-controle.
AUDITSPECIFICATIE VOOR SERVER WIJZIGEN Hiermee wijzigt u een servercontrolespecificatieobject met behulp van de functie SQL Server-controle.
DATABASECONTROLESPECIFICATIE MAKEN Hiermee maakt u een databasecontrolespecificatieobject met behulp van de SQL Server-controlefunctie.
SERVERAUDIT MAKEN Hiermee maakt u een servercontroleobject met behulp van SQL Server Audit.
SERVERCONTROLESPECIFICATIE MAKEN Hiermee maakt u een servercontrolespecificatieobject met behulp van de functie SQL Server-controle.
VERWIJDER DATABASE AUDITSPECIFICATIE Hiermee wordt een databasecontrolespecificatieobject verwijderd met behulp van de sql Server-controlefunctie.
VERWIJDER SERVERAUDIT Hiermee wordt een servercontroleobject verwijderd met behulp van de functie SQL Server-controle.
VERWIJDER SERVER AUDITSPECIFICATIE Hiermee wordt een object van de serveraudit-specificatie verwijderd met behulp van de SQL Server Audit-functie.

Dynamische weergaven en functies

De volgende tabel bevat de dynamische weergaven en functie die u kunt gebruiken voor SQL Server Auditing.

Dynamische weergaven en functies Beschrijving
sys.dm_audit_actions Retourneert een rij voor elke controleactie die kan worden gerapporteerd in het auditlogboek en elke controleactiegroep die kan worden geconfigureerd als onderdeel van SQL Server Audit.
sys.dm_server_audit_status Bevat informatie over de huidige status van de audit.
sys.dm_audit_class_type_map Hiermee wordt een tabel geretourneerd waarmee het class_type veld in het auditlogboek wordt toegewezen aan het class_desc veld in sys.dm_audit_actions.
fn_get_audit_file Retourneert informatie uit een auditbestand dat is gemaakt door een servercontrole.

Catalogusweergaven

De volgende tabel bevat de catalogusweergaven die u kunt gebruiken voor SQL Server-controle.

Catalogusweergaven Beschrijving
sys.database_audit_specifications Bevat informatie over de databankauditspecificaties in een SQL Server-audit op een serverinstantie.
sys.database_audit_specification_details Bevat informatie over de specificaties voor database-audit in een SQL Server-audit op een serverexemplaar voor alle databases.
sys.server_audits Bevat één rij voor elke SQL Server-audit in een serverexemplaar.
sys.server_audit_specifications Bevat informatie over de serverspecifieke auditvoorschriften in een SQL Server-audit bij een serverinstantie.
sys.server_audit_specifications_details Bevat informatie over de details van de servercontrolespecificatie (acties) in een SQL Server-controle op een serverinstantie.
sys.server_file_audits Bevat uitgebreide informatie over het bestand audittype in een SQL Server-audit op een serverinstantie.

Machtigingen

Elke functie en opdracht voor SQL Server Audit hebben afzonderlijke machtigingsvereisten.

Als u een servercontrole- of servercontrolespecificatie wilt maken, wijzigen of verwijderen, is voor server-principals de machtiging ALTER ANY SERVER AUDIT of controlserver vereist. Als u een databasecontrolespecificatie wilt maken, wijzigen of verwijderen, is voor database-principals de machtiging ALTER ANY DATABASE AUDIT of de machtiging ALTER of CONTROL voor de database vereist. Bovendien moeten principals toestemming hebben om verbinding te maken met de database, of beschikken over ALTER ANY SERVER AUDIT- of CONTROL SERVER-machtigingen.

De machtiging VIEW ANY DEFINITION biedt toegang tot het weergeven van de controleweergaven op serverniveau en VIEW DEFINITION biedt toegang om de controleweergaven op databaseniveau weer te geven. Weigering van deze machtigingen heeft voorrang op de mogelijkheid om de catalogusweergaven te bekijken, zelfs als de principal de machtigingen ALTER ANY SERVER AUDIT of ALTER ANY DATABASE AUDIT heeft.

Zie GRANT (Transact-SQL)voor meer informatie over het verlenen van rechten en machtigingen.

Voorzichtigheid

Principals met de rol sysadmin kunnen knoeien met elk controleonderdeel en die met de rol db_owner kunnen knoeien met controlespecificaties in een database. SQL Server Audit controleert of een aanmelding die een controlespecificatie maakt of wijzigt, ten minste de machtiging ALTER ANY DATABASE AUDIT heeft. Er wordt echter geen validatie uitgevoerd wanneer u een database koppelt. U moet ervan uitgaan dat alle specificaties voor database-audits slechts zo betrouwbaar zijn als de principals in de rol sysadmin of db_owner.

een servercontrole- en servercontrolespecificatie maken

een servercontrole- en databasecontrolespecificatie maken

een SQL Server-auditlogboek weergeven

SQL Server-auditgebeurtenissen schrijven naar het beveiligingslogboek

servereigenschappen (beveiligingspagina)
Hierin wordt uitgelegd hoe u aanmeldingscontrole inschakelt voor SQL Server. De auditrecords worden opgeslagen in het Windows-toepassingslogboek.

c2 audit-modus serverconfiguratie-optie
Hierin wordt de controlemodus voor C2-beveiligingsnaleving in SQL Server uitgelegd.

Categorie beveiligingscontrolegebeurtenis (SQL Server Profiler)
Hierin worden de controlegebeurtenissen uitgelegd die u kunt gebruiken in SQL Server Profiler. Zie SQL Server Profilervoor meer informatie.

SQL-tracering
Hierin wordt uitgelegd hoe SQL Trace kan worden gebruikt vanuit uw eigen toepassingen om handmatig traceringen te maken in plaats van SQL Server Profiler te gebruiken.

DDL-triggers
Hierin wordt uitgelegd hoe u DDL-triggers (Data Definition Language) kunt gebruiken om wijzigingen in uw databases bij te houden.

Microsoft TechNet: SQL Server TechCenter: SQL Server 2005 Beveiliging en Bescherming
Biedt up-to-datuminformatie over SQL Server-beveiliging.