Home → 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 potentielle Bedrohungspotential ist jedoch in den letzten Jahren exponentiell gewachsen und das kann durchaus dramatische 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 hinzugefügte Funktionalität Vulnerability Assessment mal genauer angeschaut.
Vulnerability Assessment wurde erstmals mit Version 17.4 eingeführt. Mit diesem Werkzeug ist es möglich, einfach und übersichtlich, eine Bewertung der Datenbank in der Instanz aus sicherheitskritischer Sicht zu erstellen. So werden zahlreiche Risiken getestet und anschließend in den 3 Kategorien “High Risk”, “Medium Risk” und “Low Risk” aufgeführt. Zusätzlich zum Ergebnis des Tests, wird für jedes angezeigte Problem eine detaillierte Beschreibung und ein Lösungsvorschlag angezeigt.
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 entsprechenden Regeln enthält. Anhand dieser Regeln werden die Datenbanken geprüft und der Nutzer bekommt hilfreiche Hinweise zur Behebung eventueller Fehlkonfigurationen.
Die Reports unterstützen den Nutzer bei folgenden Aufgaben:
Die einzelnen Ergebnisse können durch das Erstellen einer individuellen Baseline an die eigenen Bedürfnisse angepasst werden. Zudem besteht die Möglichkeit alle Check Statements, die der Report angewendet hat, einzusehen. Diese können bspw. auch für ein Monitoring System verwendet werden, da hier stets ein verwertbares Ergebnis zurück geliefert wird.
Zum Ausführen des Vulnerability Assessment Reports wird ein aktuelles SQL Server Management Studio benötigt. Dies kann von der offiziellen Microsoft Website kostenlos bezogen werden.
Nach der Installation auf einem beliebigen 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.
Als nächstes wird die jeweilige Datenbank ausgewä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 ausgewählt werden. Standardmäßig wird dieser im “Documents Ordner” des aktuellen Benutzers gespeichert.
Anschließend kann der Report ausgeführt werden und die Ergebnisse werden direkt angezeigt.
Somit bekommt man einen guten Überblick der aktuellen Sicherheitskonfiguration der jeweiligen Datenbank.
Falls ein Check ein negatives Ergebnis liefert, was nicht gelöst werden soll, kann dieses in die Baseline aufgenommen werden. Damit wird dieser Check zukünftig dann nicht mehr angezeigt.
Bei einer umfangreichen Datenbankumgebung ist es nicht praktikabel, für alle Datenbanken den Report per Hand zu erzeugen. Besser ist es hier einen automatischen 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 spezifische Datenbank einer Instanz scannen. Als Ergebnis wird der Scan geliefert, der anschließend weiterverarbeitet 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 exportiert 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 hinzugefügt werden, das wiederum zum Ausführen eines neuen VA-Scans mit angepassten Ergebniswerten verwendet werden kann. Ein Ergebnis eines vorherigen 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 auszuführen, die auf eure Datenbankumgebung zugeschnitten sind.
|
Export-SqlVulnerabilityAssessmentBaselineSet
|
Verwende dieses Cmdlet, um ein VA-Baseline-Set in eine Datei zu exportieren. 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 importieren. 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 ausgenommen. Dieses Skript kann auch als geplanter Task im Windows Server hinterlegt werden.
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 } } |
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 entsprechende Lösungsvorschläge zur Behebung der Probleme geliefert. Damit eignen sich diese Reports auch zur Erfüllung eventueller Compliance Richtlinien.
Share this article