Implementér revision

Fuldført

Revision giver indsigt i databaseaktivitet og hjælper dig med at opdage sikkerhedstrusler, følge overholdelse og undersøge hændelser. Ved at registrere, hvem der fik adgang til hvilke data og hvornår, skaber revision et ansvarlighedsspor, der understøtter både sikkerhedsovervågning og regulatoriske krav.

SQL Server, Azure SQL og SQL-databaser i Microsoft Fabric tilbyder indbyggede auditfunktioner, der fanger databasebegivenheder uden at kræve applikationsændringer. At forstå, hvordan man konfigurerer og administrerer revision, hjælper dig med at opretholde passende overvågning af dine databasemiljøer.

Forstå revisionsmuligheder

Revision indfanger databasebegivenheder og skriver dem til en revisionslog. De begivenheder, du reviderer, hvor du gemmer logs, og hvordan du analyserer dem, afhænger af dine sikkerhedskrav og infrastruktur.

Diagram, der viser Azure SQL Database, der sender revisionslogs til tre destinationer: Azure Blob Storage til langtidsopbevaring, Log Analytics workspace til KQL-forespørgsler og Event Hubs til realtidsstreaming.

SQL Server Audit bruger Extended Events-infrastrukturen til at registrere aktivitet. Du kan skrive revisionsposter til filer, Windows sikkerhedsloggen eller Windows-applikationsloggen. Denne fleksibilitet gør det muligt at integrere med eksisterende loghåndteringssystemer.

Azure SQL Database auditing skriver til Azure Blob Storage, Log Analytics eller Event Hubs. Den administrerede service håndterer infrastrukturen, så du kan fokusere på at beslutte, hvad der skal revideres, i stedet for at administrere lageret.

SQL-databaser i Microsoft Fabric bruger Fabrics aktivitetslogning og Microsoft Purview til revisionsdata. Denne integration med Microsoft Purview giver dig samlet revision på tværs af hele din dataportefølje.

Konfigurér SQL Server-auditing

SQL Server Audit kræver oprettelse af et serverrevisionsobjekt, der definerer, hvor revisionsposter skal skrives, og derefter oprettes revisionsspecifikationer, der definerer, hvad der skal registreres.

Start med at oprette en serveraudit, der skriver til en fil:

CREATE SERVER AUDIT SecurityAudit
TO FILE (FILEPATH = 'C:\AuditLogs\', MAXSIZE = 100 MB, MAX_ROLLOVER_FILES = 10)
WITH (QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE);

Parameteren QUEUE_DELAY angiver, hvor mange millisekunder der skal buffres begivenheder, før den skrives. Lavere værdier giver mere realtidslogning, men kan påvirke ydeevnen. Indstillingen ON_FAILURE bestemmer adfærd, når auditskrivning fejler. SHUTDOWN Brug til kritiske compliance-scenarier, hvor manglende revisionsoptegnelser er uacceptabelt.

Aktiver nu revisionen:

ALTER SERVER AUDIT SecurityAudit WITH (STATE = ON);

Dernæst skal du oprette en serveraudit-specifikation til at fange serverniveau-hændelser:

CREATE SERVER AUDIT SPECIFICATION ServerAuditSpec
FOR SERVER AUDIT SecurityAudit
ADD (FAILED_LOGIN_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP),
ADD (SERVER_PERMISSION_CHANGE_GROUP),
ADD (DATABASE_PERMISSION_CHANGE_GROUP)
WITH (STATE = ON);

For database-niveau hændelser oprettes en databaserevisionsspecifikation:

USE MyDatabase;
GO

CREATE DATABASE AUDIT SPECIFICATION DatabaseAuditSpec
FOR SERVER AUDIT SecurityAudit
ADD (SELECT, INSERT, UPDATE, DELETE ON dbo.SensitiveData BY public),
ADD (EXECUTE ON SCHEMA::dbo BY public),
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP)
WITH (STATE = ON);

Denne specifikation reviderer al dataadgang i tabellen SensitiveData , udførelser af lagrede procedurer og ændringer i rollemedlemskab.

Configure Azure SQL auditing

Azure SQL Database-auditing konfigureres på server- eller databaseniveau. Serverniveau-politikker gælder for alle databaser på den logiske server.

Du kan aktivere auditing i Azure-portalen eller ved hjælp af T-SQL:

-- Enable auditing to blob storage (configured in Azure portal)
ALTER DATABASE AUDIT SPECIFICATION AzureAuditSpec
ADD (SELECT, INSERT, UPDATE, DELETE ON DATABASE::MyDatabase BY public)
WITH (STATE = ON);

For mere detaljeret kontrol, konfigurer revision gennem Azure Policy eller ARM-skabeloner. Her er et eksempel, der specificerer lagringskonto, opbevaringsperiode og revisionshandlingsgrupper:

{
  "properties": {
    "state": "Enabled",
    "storageEndpoint": "https://myauditlogs.blob.core.windows.net",
    "retentionDays": 90,
    "auditActionsAndGroups": [
      "SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP",
      "FAILED_DATABASE_AUTHENTICATION_GROUP",
      "BATCH_COMPLETED_GROUP"
    ]
  }
}

Bemærkning

Azure SQL-auditing til Log Analytics muliggør kraftfulde forespørgsels- og alarmfunktioner ved brug af Kusto Query Language (KQL). Denne integration forenkler sikkerhedsovervågning og overholdelsesrapportering.

Vælg revisionshandlinger

Vælg revisionshandlinger baseret på dine sikkerheds- og compliance-krav. Almindelige aktionsgrupper inkluderer:

Autentificeringsbegivenheder:

  • SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP - Vellykkede logins
  • FAILED_DATABASE_AUTHENTICATION_GROUP - Mislykkede loginforsøg

Tilladelsesændringer:

  • DATABASE_PERMISSION_CHANGE_GROUP - Tildel, tilbagekald, afkræft operationer
  • DATABASE_ROLE_MEMBER_CHANGE_GROUP - Ændringer i rollemedlemskab
  • DATABASE_PRINCIPAL_CHANGE_GROUP - Brugeroprettelse og -ændring

Dataadgang:

  • BATCH_COMPLETED_GROUP - Alle færdige partier (stort volumen)
  • SELECT på specifikke objekter - målrettet læseadgangsovervågning
  • INSERT, UPDATE, DELETE på specifikke objekter - Datamodifikationssporing

Skemaændringer:

  • SCHEMA_OBJECT_CHANGE_GROUP - Tabel- og objektmodifikationer
  • DATABASE_OBJECT_CHANGE_GROUP - DDL-udsagn

Vigtigt!

Start med et fokuseret sæt revisionshandlinger i stedet for at indfange alt. Revision med stort volumen påvirker ydeevnen og genererer logfiler, der er vanskelige at analysere.

Forespørg og analyser revisionslogfiler

For SQL Server-filbaserede revisioner skal du bruge funktionen fn_get_audit_file til at forespørge dine logfiler:

SELECT 
    event_time,
    action_id,
    succeeded,
    session_server_principal_name AS UserName,
    database_name,
    object_name,
    statement
FROM fn_get_audit_file('C:\AuditLogs\*.sqlaudit', DEFAULT, DEFAULT)
WHERE event_time > DATEADD(day, -7, GETUTCDATE())
ORDER BY event_time DESC;

Hvis du bruger Azure SQL-revision med Log Analytics, kan du forespørge via KQL:

AzureDiagnostics
| where Category == "SQLSecurityAuditEvents"
| where TimeGenerated > ago(7d)
| where action_name_s == "SELECT"
| summarize count() by client_ip_s, server_principal_name_s
| order by count_ desc

Denne forespørgsel identificerer, hvilke brugere og IP-adresser der har genereret flest SELECT-forespørgsler i den forgangne uge, hvilket hjælper med at identificere usædvanlige adgangsmønstre.

Implementér revision og beskyttelse

Dine revisionslogfiler har brug for beskyttelse mod manipulation, og du skal opbevare dem i overensstemmelse med compliance-kravene.

For SQL Server skal du konfigurere uforanderlig lagring til revisionsfiler og bruge Windows-filsystemrettigheder for at forhindre sletning. For Azure SQL konfigureres lagring med uforanderlig blob-lagring og indstil opbevaringspolitikker i Azure Storage lifecycle management.

Vigtigt!

Gem revisionslogfiler separat fra de databaser, de overvåger. Dette sikrer, at selv hvis angribere kompromitterer en database, kan de ikke manipulere revisionssporet.

For overholdelsesscenarier bør du overveje disse fastholdelsespraksisser:

  • Definer opbevaringsperioder baseret på regulatoriske krav (ofte syv år for finansielle data)
  • Brug uforanderlig lagring for at forhindre logsletning
  • Implementér logarkivering til koldopbevaring til omkostningsstyring
  • Etabler processer for gennemgang og advarsler af revisionslogfiler

Regelmæssig gennemgang af revisionsdata hjælper dig med at identificere sikkerhedsproblemer, før de bliver til hændelser. Opret advarsler for mislykkede loginforsøg, tilladelsesændringer uden for vedligeholdelsesvinduer og usædvanlige dataadgangsmønstre.