Audit
Audit is een belangrijk onderdeel van DatabaseExplorer. Het stelt gebruikers in staat om wijzigingen in de database bij te houden en te controleren. Audit is ook een belangrijk onderdeel van de beveiliging van de database, omdat het helpt bij het identificeren van ongeautoriseerde toegang en wijzigingen en daarnaast is het ook een belangrijk onderdeel van de naleving van regelgeving (AVG). In alle gevallen worden de audit logs gemonitord en indien er een verdachte activiteit wordt gedetecteerd, wordt er een melding gestuurd die zichtbaar is via de Meldingen pagina's.
SQL server varianten
Binnen de DatabaseExplorer wordt de audit functionaliteit voor verschillende SQL varianten ondersteund.
- Microsoft SQL Server
- MySQL
- PostgreSQL
Dit betekent dat gebruikers van verschillende SQL varianten de audit functionaliteit kunnen gebruiken binnen DatabaseExplorer. Dat de audit functionaliteit consistent is over verschillende SQL varianten en de gebruiker onafhankelijk van de gebruikte SQL variant dezelfde ervaring heeft.
Op de achtergrond wordt hiervoor voor de verschillende SQL varianten specifieke implementaties gebruikt om audit logs bij te houden.
Audit voor SQL server
Voor Microsoft SQL Server gebruiken we verschillende ingebouwde Audit mogelijkheden, ieder met zijn eigen doel.
SQL Server Audit
SQL Server Audit is een ingebouwde functionaliteit van Microsoft SQL Server die het mogelijk maakt om wijzigingen in de database bij te houden en te controleren. Het biedt een gedetailleerde audit trail van alle activiteiten in de database, inclusief wie wat heeft gedaan en wanneer.
Change Data Capture (CDC)
Change Data Capture (CDC) is een andere ingebouwde functionaliteit van Microsoft SQL Server die het mogelijk maakt om wijzigingen in de database bij te houden. Het biedt een eenvoudige manier om wijzigingen in de database te detecteren en te repliceren naar andere systemen.
Extended Custom Events
Extended Custom Events is een andere ingebouwde functionaliteit van Microsoft SQL Server die het mogelijk maakt om aangepaste gebeurtenissen in de database bij te houden. Het biedt een flexibele manier om specifieke gebeurtenissen in de database te detecteren en te loggen.
SQL Server audit biedt vooral audit logs op het gebied van Wie, Wat en Wanneer. Change Data Capture richt zich op het bijhouden van wijzigingen in de data zelf, terwijl Extended Custom Events flexibiliteit biedt voor het loggen van specifieke gebeurtenissen.
Het loggen van Wie in de SQL Server audit logs gebeurt op basis van de gebruiker die de actie heeft uitgevoerd. Het systeem gebruikt hiervoor de gebruiker die door SQL Server is geauthenticeerd. Dit is meestal de Windows-gebruiker of de SQL Server-gebruiker die de actie heeft uitgevoerd. Maar dit is afhankelijk van de configuratie en de aard van de client applicaties. Bijvoorbeeld als een client applicatie ( Windows applicatie ) een verbinding maakt met een connectie waar Integrated Security is ingeschakeld, zal SQL Server de Windows-gebruiker gebruiken voor authenticatie en logging. Maar indien dit een Web applicatie is die een verbinding maakt met een connectie waar Integrated Security is ingeschakeld, zal deze ( bijvoorbeeld als het een IIS applicatie is ) verbinding maken met het account waarop de applicatie draait in de applicatie pool. En zo zijn er nog wel diverse scenario's te bedenken. Het is dus belangrijk om te begrijpen hoe de authenticatie en logging werkt in de specifieke omgeving waarin SQL Server draait, om te begrijpen wie er wordt gelogd in de audit logs.
Compleet
Deze drie Audit log functionaliteiten bieden samen een uitgebreid overzicht van wie wat doet in de database en wanneer. Ze helpen bij het waarborgen van de veiligheid en integriteit van de gegevens. Maar betekend wel dat er voor het gebruik van de audit log functionaliteit wel de client applicaties in kaart gebracht moeten worden om een afstelling te bepalen welke log functionaliteit het beste past bij de specifieke situatie.
Hoe start je audit voor een database
In de databaseexplorer applicatie is er een scherm met een overzicht van de geregistreerde database connections. Hier is een de optie beschikbaar om de audit functionaliteit te starten voor een specifieke database.
Conclusie
Na het aanvinken auditLogEnabled voor de betreffende database wordt er, indien het een Microsoft SQL Server database betreft, een statement gestuurd waarmee de audit functionaliteit wordt gestart. Daarnaast wordt er dan voor deze database periodieke jobs gestart:
- Een job die de audit logs ophaalt en opslaat in de databaseexplorer database.
- Een job die de audit logs controleert op verdachte activiteiten en indien nodig een melding verstuurd.
- Een job die de audit logs archiveert na een bepaalde periode.
Het toevoegen van de username in de context is optioneel en indien de username is toegevoegd wordt het automatisch opgepakt. Wel moet dit de juiste schrijfwijze hebben:
using var command = sqlConnection.CreateCommand();
command.CommandText = """
EXEC sys.sp_set_session_context
@key = N'UserName',
@value = @userName;
""";
De key is dus 'UserName' en de value is de username van de gebruiker die de actie uitvoert, de key is hoofdletter gevoelig en moet exact zo worden geschreven.
MySQL Audit
todo
PostgreSQL Audit
todo
