SQL Server Audit (Database Engine)

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

Applies to: yesSQL Server (alle ondersteunde versies) JaAzure SQL Managed Instance

het controleren van een instance van de SQL Server Database Engine of een individuele database omvat het bijhouden en registreren van gebeurtenissen die zich voordoen op de Database Engine. Met SQL Server audit kunt u serveraudits maken, die serverauditspecificaties voor gebeurtenissen op serverniveau en databaseauditspecificaties voor gebeurtenissen op databaseniveau kunnen bevatten. Gecontroleerde gebeurtenissen kunnen worden geschreven naar de gebeurtenislogboeken of naar auditbestanden.

belangrijk

op Azure SQL Managed instantie heeft deze T-SQL functie bepaalde gedragsveranderingen. Zie verschillen tussen Azure SQL Managed Instance T-SQL en SQL Server voor meer informatie over alle T-SQL-gedragswijzigingen.

er zijn verschillende auditniveaus voor SQL Server, afhankelijk van de vereisten van de overheid of standaarden voor uw installatie. SQL Server Audit biedt de tools en processen die u moet hebben om audits op verschillende server-en databaseobjecten in te schakelen, op te slaan en te bekijken.

u kunt serverauditactiegroepen per instantie opnemen, en databaseauditactiegroepen of databaseauditacties per database. De audit event zal plaatsvinden elke keer dat de controleerbare actie wordt aangetroffen.

alle edities van SQL Server ondersteunen audits op serverniveau. Alle edities ondersteunen databaseniveau audits te beginnen met SQL Server 2016 (13.x) SP1. Voorafgaand aan dat, database niveau auditing was beperkt tot Enterprise, ontwikkelaar, en evaluatie edities. Zie functies die worden ondersteund door de edities van SQL Server 2016 voor meer informatie.

opmerking

dit onderwerp is van toepassing op SQL Server. Zie aan de slag met SQL-database-auditing voor SQL-Database.

SQL Server Audit Components

een audit is de combinatie van verschillende elementen in één pakket voor een specifieke groep serveracties of databaseacties. De componenten van SQL Server audit combineren om een output te produceren die een audit wordt genoemd, net zoals een rapportdefinitie in combinatie met grafieken en gegevenselementen een rapport produceert.

SQL Server audit gebruikt uitgebreide gebeurtenissen om een audit te helpen maken. Zie uitgebreide evenementen voor meer informatie over uitgebreide evenementen.

SQL Server Audit

het SQL Server Audit object verzamelt één exemplaar van acties op server-of databaseniveau en groepen acties die moeten worden gecontroleerd. De audit vindt plaats op het niveau van SQL Server instance. U kunt meerdere audits per SQL Server-instantie hebben.

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

Server Audit Specification

het server Audit Specification object behoort tot een audit. U kunt één serverauditspecificatie per audit maken, omdat beide worden gemaakt in de scope van SQL Server-exemplaren.

de serverauditspecificatie verzamelt veel actiegroepen op serverniveau die door de functie Extended Events worden opgeroepen. U kunt audit actiegroepen opnemen in een server audit specificatie. Audit actiegroepen zijn vooraf gedefinieerde groepen van acties, die atomaire gebeurtenissen die zich voordoen in de Database Engine. Deze acties worden naar de audit gestuurd, die ze registreert in het doel.

auditactiegroepen op serverniveau worden beschreven in het onderwerp SQL Server Audit actiegroepen en acties.

Database Audit Specification

Het Database Audit Specification object behoort ook tot een SQL Server audit. U kunt één databaseauditspecificatie per SQL Server-database per audit maken.

de databaseauditspecificatie verzamelt auditacties op databaseniveau die door de functie Extended Events worden opgeroepen. U kunt auditactiegroepen of auditgebeurtenissen toevoegen aan een databaseauditspecificatie. Auditgebeurtenissen zijn de atomaire acties die kunnen worden gecontroleerd door de SQL Server-engine. Auditactiegroepen zijn vooraf gedefinieerde groepen van acties. Beide bevinden zich in de SQL Server database scope. Deze acties worden naar de audit gestuurd, die ze registreert in het doel. Neem geen serverobjecten op, zoals de systeemweergaven, op in een auditspecificatie voor gebruikersdatabase.

auditactiegroepen en auditacties op databaseniveau worden beschreven in het onderwerp SQL Server Audit actiegroepen en acties.

Target

de resultaten van een audit worden verzonden naar een doel, dat een bestand, het Windows Security event log of het Windows Application event log kan zijn. Logboeken moeten periodiek worden gecontroleerd en gearchiveerd om ervoor te zorgen dat het doel voldoende ruimte heeft om extra 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 gebeurtenislogboek van Windows beveiliging en is minder veilig dan het gebeurtenislogboek van Windows beveiliging.

voor het schrijven naar het Windows-beveiligingslogboek moet het SQL Server-serviceaccount worden toegevoegd aan het beleid beveiligingsaudits genereren. Standaard maken het lokale systeem, de lokale Service en de Netwerkservice deel uit van dit beleid. Deze instelling kan worden geconfigureerd met de module beveiligingsbeleid (secpol.msc). Bovendien moet het beveiligingsbeleid voor objecttoegang controleren zijn ingeschakeld voor zowel succes als mislukking. Deze instelling kan worden geconfigureerd met de module beveiligingsbeleid (secpol.msc). In Windows Vista of Windows Server 2008 kunt u op de opdrachtregel het meer gedetailleerde beleid van de toepassing instellen met behulp van het programma auditbeleid (AuditPol).executable). Zie auditgebeurtenissen van SQL Server naar het beveiligingslogboek schrijven voor meer informatie over de stappen om schrijven naar het Windows-beveiligingslogboek in te schakelen. Voor meer informatie over de Auditpol.exe-programma, zie Kennisbank artikel 921469, hoe Groepsbeleid te gebruiken om gedetailleerde beveiligingscontrole te configureren. De Windows-gebeurtenislogboeken zijn globaal voor het Windows-besturingssysteem. Zie overzicht logboeken voor logboeken voor meer informatie over de Windows-gebeurtenislogboeken. Als je nauwkeurigere rechten nodig hebt voor de audit, gebruik dan het binary file target.

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

  • het SQL Server Service-Account moet zowel Lees-als schrijfrechten hebben.

  • Auditbeheerders hebben doorgaans lees-en schrijfrechten nodig. Dit veronderstelt dat de Audit Administrators Windows-accounts zijn voor het beheer van auditbestanden, zoals: ze kopiëren naar verschillende shares, ze back-uppen, enzovoort.

  • Controlelezers die gemachtigd zijn om controlebestanden te lezen, moeten leesmachtiging hebben.

zelfs als de Database-Engine naar een bestand schrijft, kunnen andere Windows-gebruikers het auditbestand lezen als ze toestemming hebben. De Database-Engine neemt geen exclusief slot dat leesbewerkingen voorkomt.

omdat de Database-Engine toegang heeft tot het bestand, kunnen SQL Server-logins die CONTROL SERVER-rechten hebben, de Database-Engine gebruiken om toegang te krijgen tot de auditbestanden. Als u een gebruiker wilt registreren die het auditbestand leest, definieert u een audit op master.sys.fn_get_audit_file. Hiermee worden de aanmeldingen met BEHEERSERVERMACHTIGINGEN geregistreerd die via SQL Server toegang hebben gekregen tot het auditbestand.

als een Auditbeheerder het bestand naar een andere locatie kopieert (voor archiefdoeleinden, enzovoort), moeten de ACL ‘ s op de nieuwe locatie worden gereduceerd tot de volgende rechten:

  • Audit Administrator-Read / Write

  • Audit Reader-lezen

we raden u aan auditrapporten te genereren vanuit 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 voor rapportage te gebruiken, kunt u voorkomen dat onbevoegde gebruikers toegang krijgen tot het auditrecord.

u kunt extra bescherming bieden tegen onbevoegde toegang door de map waarin het controlebestand is opgeslagen te versleutelen met behulp van Windows BitLocker-stationsversleuteling of Windows Encrypting-bestandssysteem.

Zie SQL Server Audit Records voor meer informatie over de auditrecords die naar het doel zijn geschreven.

overzicht van het gebruik van SQL Server Audit

u kunt SQL Server Management Studio of Transact-SQL gebruiken om een audit te definiëren. Nadat de audit is gemaakt en ingeschakeld, zal het doel items ontvangen.

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

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

  1. Maak een audit en definieer het doel.

  2. Maak een serverauditspecificatie of een databaseauditspecificatie die wordt toegewezen aan de audit. Schakel de auditspecificatie in.

  3. Schakel de audit in.

  4. lees de audit gebeurtenissen met behulp van de Windows Event Viewer, Log File Viewer, of de fn_get_audit_file functie.

zie een specificatie voor Serveraudit en Serveraudit maken en een specificatie voor Serveraudit en Databaseaudit maken voor meer informatie.

overwegingen

in het geval van een fout tijdens het opstarten van de audit zal de server niet starten. In dit geval kan de server worden gestart met de optie-f op de opdrachtregel.

wanneer een auditfout ervoor zorgt dat de server wordt afgesloten of niet wordt gestart omdat ON_FAILURE=SHUTDOWN is opgegeven voor de audit, zal de gebeurtenis MSG_AUDIT_FORCED_SHUTDOWN naar het logboek worden geschreven. Omdat de shutdown zal plaatsvinden bij de eerste ontmoeting van deze instelling, zal de gebeurtenis één keer worden geschreven. Deze gebeurtenis wordt geschreven na het foutbericht voor de controle die het afsluiten veroorzaakt. Een beheerder kan audit-geïnduceerde shutdowns omzeilen door SQL Server te starten in Single User modus met behulp van de-m-vlag. Als je in Single User modus start, zal je elke audit downgraden waarbij ON_FAILURE = SHUTDOWN is opgegeven om in die sessie uit te voeren als ON_FAILURE=CONTINUE. Als SQL Server wordt gestart met de vlag-m, zal het msg_audit_shutdown_ bypassed bericht naar het foutlogboek worden geschreven.

voor meer informatie over opties voor het opstarten van service, zie opties voor het opstarten van Database Engine-Service.

bijvoegen van een Database met een Audit gedefinieerd

bijvoegen van een database met een auditspecificatie en specificeert een GUID die niet op de server bestaat, zal een verweesde auditspecificatie veroorzaken. Omdat er op de server geen audit met een overeenkomende GUID bestaat, worden er geen auditgebeurtenissen geregistreerd. Om deze situatie te corrigeren, gebruik je het ALTER DATABASE AUDIT SPECIFICATION commando om de verweesde audit specification te verbinden met een bestaande server audit. U kunt ook met de opdracht servercontrole maken een nieuwe servercontrole maken met de opgegeven GUID.

u kunt een database met een auditspecificatie koppelen aan een andere editie van SQL Server die geen SQL Server-audit ondersteunt, zoals SQL Server Express, maar er worden geen auditgebeurtenissen geregistreerd.

Database-Mirroring en SQL Server-Audit

een database met een database-auditspecificatie gedefinieerd en die database-mirroring gebruikt, bevat de database-auditspecificatie. Om correct te werken op de gespiegelde SQL-instantie, moeten de volgende items worden geconfigureerd:

  • de mirrorserver moet een audit hebben met dezelfde GUID om de databaseauditspecificatie in staat te stellen auditrecords te schrijven. Dit kan worden geconfigureerd met het commando audit aanmaken met GUID =<GUID from source Server Audit>.

  • voor binaire bestandsdoelen moet het mirror server-serviceaccount de juiste machtigingen hebben voor de locatie waar het audittrail wordt geschreven.

  • voor Windows-gebeurtenislogboekdoelen moet het beveiligingsbeleid op de computer waarop de mirrorserver zich bevindt, toegang tot het gebeurtenislogboek van de beveiliging of toepassing toestaan.

Auditing beheerders

leden van de vaste serverrol van sysadmin worden geïdentificeerd als de dbo-gebruiker in elke database. Om acties van de beheerders te controleren, controleert u de acties van de DBO-gebruiker.

Audits aanmaken en beheren met Transact-SQL

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

Data Definition Language Statements

u kunt de volgende DDL-statements gebruiken om auditspecificaties aan te maken, te wijzigen en te laten vallen:

DDL-verklaringen omschrijving
ALTER AUTHORIZATION verandert de eigendom van een secureable.
ALTER DATABASE AUDIT SPECIFICATION verandert een database audit specification object met behulp van de SQL Server Audit functie.
ALTER SERVER AUDIT verandert een server audit object met behulp van de SQL Server Audit functie.
ALTER Server AUDIT SPECIFICATION wijzigt een server audit specification object met behulp van de SQL Server Audit functie.
DATABASEAUDITSPECIFICATIE aanmaken maakt een databaseauditspecificatie aan met behulp van de SQL Server-auditfunctie.
CREATE SERVER AUDIT maakt een server audit object met behulp van SQL Server Audit.
Server AUDIT SPECIFICATION maakt een server audit specification object met behulp van de SQL Server Audit functie.
DROP DATABASE AUDIT SPECIFICATION laat een database audit specification object vallen met behulp van de SQL Server Audit functie.
DROP SERVER AUDIT laat een server Audit Object vallen met behulp van de SQL Server Audit functie.
DROP SERVER AUDIT SPECIFICATION laat een server audit specification object vallen met behulp van de SQL Server Audit functie.

dynamische weergaven en functies

de volgende tabel toont de dynamische weergaven en functie die u kunt gebruiken voor SQL Server-controle.

dynamische weergaven en functies beschrijving
sys.dm_audit_actions geeft een rij terug voor elke auditactie die kan worden gerapporteerd in het auditlogboek en elke auditactiegroep die kan worden geconfigureerd als onderdeel van SQL Server Audit.
sys. dm_server_audit_status geeft informatie over de huidige status van de audit.
sys. dm_audit_class_type_map geeft een tabel terug die het class_type-veld in de auditlog koppelt aan het class_desc-veld in sys. dm_audit_actions.
fn_get_audit_file geeft informatie terug uit een auditbestand dat is aangemaakt door een server audit.

Catalogusweergaven

de volgende tabel toont de catalogusweergaven die u kunt gebruiken voor controle van SQL Server.

catalogusweergaven beschrijving
sys.database_audit_specifications bevat informatie over de specificaties van de database-audit in een SQL Server-audit op een server-instantie.
sys.database_audit_specification_details bevat informatie over de specificaties van de database-audit in een SQL Server-audit op een server-instantie voor alle databases.
sys.server_audits bevat Één rij voor elke SQL Server-audit in een serverinstance.
sys.server_audit_specifications bevat informatie over de server audit specificaties in een SQL Server audit op een server instantie.
sys.server_audit_specifications_details bevat informatie over de specificatie van de serveraudit (acties) in een SQL Server-audit op een serverinstantie.
sys.server_file_audits bevat uitgebreide informatie over het bestand audit type in een SQL Server audit op een server instantie.

Machtigingen

elke functie en opdracht voor SQL Server Audit heeft individuele machtigingsvereisten.

om een Serveraudit of Serveraudit-specificatie te maken, te wijzigen of te laten vallen, vereisen serverprincipes dat elke SERVERAUDIT of CONTROLSERVER permissie wordt gewijzigd. Om een Database Audit specificatie aan te maken, te wijzigen of te laten vallen, database principals vereisen de ALTER ANY DATABASE AUDIT permission of de ALTER or CONTROL permission op de database. Bovendien moeten principals toestemming hebben om verbinding te maken met de database of machtigingen voor SERVERAUDIT of-beheer te wijzigen.

de VIEW ANY DEFINITION permission geeft toegang tot de controleweergaven op serverniveau en VIEW DEFINITION geeft toegang tot de controleweergaven op databaseniveau. Het weigeren van deze machtigingen heeft voorrang op de mogelijkheid om de catalogusweergaven te bekijken, zelfs als de principal de machtigingen SERVER-AUDIT of DATABASE-AUDIT wijzigen heeft.

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

voorzichtigheid

Principals in de sysadmin rol kunnen knoeien met elke audit component en degenen in de db_owner rol kunnen knoeien met audit specificaties in een database. SQL Server Audit zal valideren dat een aanmelding die een auditspecificatie maakt of wijzigt, ten minste de toestemming heeft om een DATABASE-AUDIT te wijzigen. Het doet echter geen validatie wanneer u een database bijvoegt. Je moet ervan uitgaan dat alle database Audit SPECIFICATIES alleen zo betrouwbaar zijn als die principals in de sysadmin of db_owner rol.

Maak een server Audit en Server Audit Specification

Maak een Server Audit en Database Audit Specification

Bekijk een SQL Server Audit Log

schrijf SQL Server Audit Events naar het Security Log

Server Properties (Security Page)
legt uit hoe login audit voor SQL Server moet worden ingeschakeld. De auditrecords worden opgeslagen in het Windows-toepassingslogboek.

c2-auditmodus Serverconfiguratieoptie
legt de C2-beveiligingscontrolemodus in SQL Server uit.

Security Audit Event Category (SQL Server Profiler)
legt uit welke auditgebeurtenissen u kunt gebruiken in SQL Server Profiler. Zie SQL Server Profiler voor meer informatie.

SQL Trace
legt uit hoe SQL Trace vanuit uw eigen toepassingen kan worden gebruikt om handmatig sporen aan te maken, in plaats van SQL Server Profiler te gebruiken.

DDL-Triggers
legt uit 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 Security and Protection
biedt actuele informatie over SQL Server security.

zie ook

SQL Server Audit actiegroepen en acties
SQL Server Audit Records