News zu Tech Portfolio

SQL Server Datenbanksicherheit mit Vulnerability Assessment Reports

Die Anfälligkeit und Sicherheit der Microsoft SQL Server Datenbanken und Datenbanksysteme ist ein Thema, welches in der täglichen Arbeit des DBAs oftmals nicht die notwendige Aufmerksamkeit bekommt. Das poten­tielle Bedrohungspotential ist jedoch in den letzten Jahren exponen­tiell gewachsen und das kann durchaus drama­tische Folgen haben. Für uns ein guter Grund, um diesem Thema mal wieder mit einen Artikel zu widmen. Von daher haben wir uns im Microsoft SQL Server Management Studio die neue hinzu­ge­fügte Funktionalität Vulnerability Assessment mal genauer angeschaut.

Vulnerability Assessment wurde erstmals mit Version 17.4 einge­führt. Mit diesem Werkzeug ist es möglich, einfach und übersichtlich, eine Bewertung der Datenbank in der Instanz aus sicher­heits­kri­ti­scher Sicht zu erstellen. So werden zahlreiche Risiken getestet und anschließend in den 3 Kategorien “High Risk”, “Medium Risk” und “Low Risk” aufge­führt. Zusätzlich zum Ergebnis des Tests, wird für jedes angezeigte Problem eine detail­lierte Beschreibung und ein Lösungsvorschlag angezeigt.

Kurze Featureübersicht

Das Vulnerability Assessment wird zur Überprüfung des Sicherheitsstatus der SQL Server Datenbanken verwendet. Es beruht dabei auf einer Knowledge Database, die von Microsoft gepflegte und den Anforderungen vieler Aufsichtsbehörden entspre­chenden Regeln enthält. Anhand dieser Regeln werden die Datenbanken geprüft und der Nutzer bekommt hilfreiche Hinweise zur Behebung eventu­eller Fehlkonfigurationen.

Die Reports unter­stützen den Nutzer bei folgenden Aufgaben:

  • Erfüllung von Konformitätsanforderungen
  • Einhaltung von Datenschutzstandards
  • Überwachung von dynami­schen Datenbankumgebungen

Die einzelnen Ergebnisse können durch das Erstellen einer indivi­du­ellen Baseline an die eigenen Bedürfnisse angepasst werden. Zudem besteht die Möglichkeit alle Check Statements, die der Report angewendet hat, einzu­sehen. Diese können bspw. auch für ein Monitoring System verwendet werden, da hier stets ein verwert­bares Ergebnis zurück geliefert wird.

Vulnerability Assessment ausführen

Zum Ausführen des Vulnerability Assessment Reports wird ein aktuelles SQL Server Management Studio benötigt. Dies kann von der offizi­ellen Microsoft Website kostenlos bezogen werden.

Download: https://docs.microsoft.com/de-de/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

Nach der Installation auf einem belie­bigen Client (der eine Netzwerkverbindung zur SQL Server Instanz aufbauen können sollte), wird das SQL Server Management Studio gestartet und eine Verbindung zur Instanz aufgebaut.

SQL Server Management Studio

Als nächstes wird die jeweilige Datenbank ausge­wählt, die getestet werden soll. Mit einem Rechtsklick auf den Datenbanknamen → Tasks → Vulnerability Assessment → Scan for Vulnerabilities … kann der Scan gestartet werden.

Jetzt muss noch der Speicherort des Reports ausge­wählt werden. Standardmäßig wird dieser im “Documents Ordner” des aktuellen Benutzers gespeichert.

Report Speicherort

Anschließend kann der Report ausge­führt werden und die Ergebnisse werden direkt angezeigt.

Vulnerabilty Assessment Report Ergebnisse

Somit bekommt man einen guten Überblick der aktuellen Sicherheitskonfiguration der jewei­ligen Datenbank.

Falls ein Check ein negatives Ergebnis liefert, was nicht gelöst werden soll, kann dieses in die Baseline aufge­nommen werden. Damit wird dieser Check zukünftig dann nicht mehr angezeigt.

Vulnerabilty Assessment Baseline Approval

Automatisierte Reporterstellung

Bei einer umfang­reichen Datenbankumgebung ist es nicht prakti­kabel, für alle Datenbanken den Report per Hand zu erzeugen. Besser ist es hier einen automa­ti­schen Job zu erstellen mit dem die Vulnerability Assessemt Reports erzeugt werden. Dafür nutzt du die PowerShell mit dem PowerShell Modul “SqlServer”.

Download: https://www.powershellgallery.com/packages/SqlServer/

Im PowerShell Modul “SqlServer” sind bereits folgende Vulnerabilty Assessment relevante Cmdlets enthalten:

Cmdlet
Beschreibung
Invoke-SqlVulnerabilityAssessmentScan 
Mit diesem Cmdlet lässt sich eine spezi­fische Datenbank einer Instanz scannen. Als Ergebnis wird der Scan geliefert, der anschließend weiter­ver­ar­beitet werden kann. Die Authentisierung an der Instanz kann über Windows oder SQL Server Authentifizierung erfolgen. 
Export-SqlVulnerabilityAssessmentScan 
Damit kann die Ergebnismenge aus dem Scan als Excel Datei expor­tiert werden. 
New-SqlVulnerabilityAssessmentBaseline 
Mit diesem Cmdlet kann eine neue Baseline für eine bestimmte VA-Sicherheitsprüfung erstellt werden. Diese Baseline kann dann zu einem Baseline-Set hinzu­gefügt werden, das wiederum zum Ausführen eines neuen VA-Scans mit angepassten Ergebniswerten verwendet werden kann. Ein Ergebnis eines vorhe­rigen VA-Scans kann verwendet werden, um den Wert für diese Baseline festzulegen. 
New-SqlVulnerabilityAssessmentBaselineSet 
Mit Hilfe dieses Cmdlet kann ein neues VA-Baseline-Set erstellt werden, dass eine Sammlung von VA-Baseline-Werten für verschiedene Sicherheitsprüfungen enthält. Das Baseline-Set kann verwendet werden, um VA-Scans mit angepassten Ergebnissen auszu­führen, die auf Ihre Datenbankumgebung zugeschnitten sind. 
Export-SqlVulnerabilityAssessmentBaselineSet 
Verwende dieses Cmdlet, um ein VA-Baseline-Set in eine Datei zu expor­tieren. Die Ausgabedatei kann in SSMS geöffnet und verwaltet werden. 
Import-SqlVulnerabilityAssessmentBaselineSet 
Dieses Cmdlet verwendest du, um ein VA-Baseline-Set aus einer Datei zu impor­tieren. Es kann verwendet werden, um mit SSMS erstellte Baseline-Sets zu importieren. 

Mit einem einfachen Skript lassen sich so alle Datenbanken einer Datenbankinstanz scannen.

Hier wäre ein Beispiel für ein Skript, was alle Datenbanken einer Instanz scannt und die Ergebnisse als Excel Dateien ablegt. Die Systemdatenbanken werden dabei ausge­nommen. Dieses Skript kann auch als geplanter Task im Windows Server hinterlegt werden.

DB_VA_Scan.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
######################################################
# ASPICON Automatic Vulnerability Assessment Scan
######################################################
 
######################################################
# Variablen Definition
######################################################
 
# SqlServer Modul importieren
Import-Module SqlServer
 
# System Datenbanken definieren
$sysdbs = @('master','msdb','model','tempdb')
 
# Server und Instanz definieren
$serverinstance 'localhost'
 
# Zielordner für die Exports definieren
$folder = "D:\test\"
 
######################################################
# Skript Logik
######################################################
 
# Alle Datenbanken der Instanz erfassen
$databases = Get-SqlDatabase -ServerInstance $serverinstance
 
# Schleife durch alle Datenbanken
foreach ($db in $databases)
{
  if (!$sysdbs.Contains($db.Name))   # Definierte System Datenbanken nicht scannen
  {
    echo 'Erstelle Report für $db.Name '
 
    # Scan durchführen und in einer Variable speichern
    $result = Invoke-SqlVulnerabilityAssessmentScan -ServerInstance $serverinstance -DatabaseName $db.Name
 
    # Zieldatei und Ordner definieren
    $file $folder $db.Name + ".xlsx"
 
    echo 'Erstelle Excel Datei'
 
    # Export des Reports in eine Excel Datei
    $result | Export-SqlVulnerabilityAssessmentScan -FolderPath $file
  }
}

Fazit

Es lohnt sich ab und zu einen Blick auf neue Features der Microsoft Client- und Server Produkte zu werfen. Mit den Vulnerability Assessment Reports bekommt man als DBA ein nützliches Tool an die Hand, um schnell und effektiv die Datenbanken auf Schwachstellen zu prüfen. Zugleich werden entspre­chende Lösungsvorschläge zur Behebung der Probleme geliefert. Damit eignen sich diese Reports auch zur Erfüllung eventu­eller Compliance Richtlinien.

Hier findest du weitere Posts zu den Themen Microsoft oder SQL Server aus unserem News Bereich. 
icon-arrow_right_medium-violet-blue.svg

Share this article

Share on facebook
Facebook 
Share on twitter
Twitter 
Share on linkedin
LinkedIn 
Share on xing
XING 
Share on whatsapp
WhatsApp 
Share on email
Email