Warum ich mir BenutzeraktivitÀten genauer anschaue
Ab einer gewissen GröĂe will die GeschĂ€ftsleitung wissen:
Wer hat wann was gemacht?
Welche Daten wurden gelesen, verÀndert oder gelöscht?
Nicht zur Kontrolle – sondern zur Absicherung.
SQL Server 2025 bringt einige Neuerungen, mit denen ich genau das leichter abbilden kann.
Und ich zeige Dir, wie ich das ohne Enterprise-Edition aufbaue.
1. Server Audit (auch in Standard Edition)
SQL Server 2025 erlaubt jetzt auch in der Standard Edition mehr Audit-Events.
Setup: Audit erstellen
CREATE SERVER AUDIT Audit_KMU
TO FILE (FILEPATH = 'C:\AuditLogs\', MAXSIZE = 10 MB)
WITH (ON_FAILURE = CONTINUE);
ALTER SERVER AUDIT Audit_KMU WITH (STATE = ON);
Ereignis hinzufĂŒgen
CREATE SERVER AUDIT SPECIFICATION Audit_Logins
FOR SERVER AUDIT Audit_KMU
ADD (SUCCESSFUL_LOGIN_GROUP),
ADD (FAILED_LOGIN_GROUP);
ALTER SERVER AUDIT SPECIFICATION Audit_Logins WITH (STATE = ON);
Du bekommst jetzt zuverlÀssig mit:
- Wer sich einloggt
- Wer es (vergeblich) versucht
- Wann das passiert
2. Datenbank-spezifisches Audit
CREATE DATABASE AUDIT SPECIFICATION Audit_Updates
FOR SERVER AUDIT Audit_KMU
ADD (UPDATE ON dbo.kunden BY public),
ADD (DELETE ON dbo.kunden BY public);
ALTER DATABASE AUDIT SPECIFICATION Audit_Updates WITH (STATE = ON);
Jetzt weiĂt Du z. B., wenn jemand an dbo.kunden
rumfummelt.
Mit User, Uhrzeit, Statement, Hostname.
3. Neuerung 2025: Audit Lookup Views
Neu in SQL Server 2025: Audit-EintrÀge lassen sich direkt als Views abfragen.
SELECT
event_time,
server_principal_name,
database_name,
object_name,
statement
FROM sys.dm_audit_log_lookup
WHERE object_name = 'kunden'
AND event_time > DATEADD(DAY, -1, GETDATE());
Das spart Dir das Zusammenbasteln aus xel-Files und Viewer.
4. Benutzerdefiniertes Logging (manuell)
FĂŒr eigene Protokolle logge ich sensitive Aktionen selbst – z. B. in Triggern.
CREATE TRIGGER trg_LogDelete
ON dbo.kunden
AFTER DELETE
AS
BEGIN
INSERT INTO dbo.audit_log (aktion, tabelle, benutzer, datum, details)
SELECT
'DELETE', 'kunden', SYSTEM_USER, GETDATE(),
CONCAT('Gelöscht: ', name, ', ID: ', id)
FROM deleted;
END;
Vorteil: lÀuft unabhÀngig vom Server-Audit.
Nachteil: bei vielen Aktionen ein Performancefaktor.
5. Extended Events fĂŒr Lesefolgen
Lesen wird nicht geloggt. AuĂer, Du willst es.
Beispiel: SELECTs auf sensible Tabelle tracken
CREATE EVENT SESSION Track_KundenSelects
ON SERVER
ADD EVENT sqlserver.sql_statement_completed (
WHERE sqlserver.database_name = 'KundenDB'
AND sqlserver.sql_text LIKE '%FROM dbo.kunden%'
)
ADD TARGET package0.ring_buffer;
ALTER EVENT SESSION Track_KundenSelects ON SERVER STATE = START;
Dann auslesen:
SELECT
event_data.value('(event/@name)[1]', 'varchar(100)') AS event_name,
event_data.value('(event/data[@name="statement"]/value)[1]', 'varchar(max)') AS sql_text,
event_data.value('(event/action[@name="client_app_name"]/value)[1]', 'varchar(100)') AS app_name,
event_data.value('(event/action[@name="username"]/value)[1]', 'varchar(100)') AS user_name,
event_data.value('(event/@timestamp)[1]', 'datetime') AS event_time
FROM (
SELECT CAST(event_data AS XML) AS event_data
FROM sys.dm_xe_sessions AS s
JOIN sys.dm_xe_session_targets AS t
ON s.address = t.event_session_address
WHERE s.name = 'Track_KundenSelects'
) x;
6. Sichtbare Reports fĂŒr Admins
Ich baue in SSMS Views wie:
CREATE VIEW vw_Audit_LetzteAktivitÀten AS
SELECT TOP 100
event_time,
server_principal_name AS benutzer,
database_name,
object_name,
statement
FROM sys.dm_audit_log_lookup
ORDER BY event_time DESC;
Dann haben Admins immer einen Ăberblick, ohne im File Explorer zu wĂŒhlen.
7. Proaktive Checks auf RollenÀnderung
SELECT
name,
create_date,
modify_date,
principal_id,
type_desc
FROM sys.database_principals
WHERE type IN ('S', 'U') AND modify_date > GETDATE() - 7;
Wenn jemand sich selbst db_owner
gegeben hat – hier siehst Du es.
Mein Fazit
Security Audits sind kein Luxus.
Und SQL Server 2025 macht’s leichter als je zuvor.
Weniger Tricks, mehr Bordmittel.
Wenn Du willst, schick ich Dir gern meine Starter-Definitionen als SQL-Datei.
Oder ein Standard-Audit-Paket fĂŒr KMU-Datenbanken.
Keine Antworten