Implementieren von IT-Kontrollen mit SQL Server 2008

Werbung
SQL Server 2008-Kompatibilitätshandbuch
Technischer Artikel zu SQL Server
Autor: JC Cannon, Denny Lee
Mitwirkende: Andy Roberts, Ayad Shammout
Technische Lektoren: Dan Jones, Craig Gick, Jack Richins, Raul Garcia, Devendra Tiwari,
Steven Gott, Al Comeau, Lara Rubbelke
Veröffentlicht: November 2008
Betrifft: SQL Server 2008
Zusammenfassung: Dieses Whitepaper bietet eine Übersicht über den Ansatz zum
Einhalten von Gesetzen und Richtlinien (Kompatibilität) bei der
Verwaltung der SQL Server-Datenbank. Im Whitepaper werden die
kompatibilitätsbezogenen Funktionen von SQL Server 2008 und ihre
Anwendung auf IT-Kontrollen beschrieben. Zudem enthält dieses
Whitepaper Tipps und Skripts für einen schnellen Einstieg in die
Entwicklung einer Kompatibilitätslösung.
Hinweis: Sie können die Beispieldateien für dieses Dokument herunterladen.
1
Copyright
Die Informationen in diesem Dokument stellen die zum Datum der Veröffentlichung aktuelle
Ansicht der Microsoft Corporation zu den erörterten Themen dar. Da Microsoft auf geänderte
Marktbedingungen reagieren muss, dürfen diese Informationen nicht als Verpflichtung von
Microsoft ausgelegt werden, und Microsoft kann nicht garantieren, dass alle Informationen in
dem Dokument nach dem Datum der Veröffentlichung noch genau zutreffen.
Dieses Whitepaper dient ausschließlich Informationszwecken. MICROSOFT ÜBERNIMMT
FÜR DIE INFORMATIONEN IN DIESEM DOKUMENT KEINE GEWÄHRLEISTUNG, WEDER
AUSDRÜCKLICH, KONKLUDENT NOCH GESETZLICH.
Die Benutzer/innen sind verpflichtet, sich an alle anwendbaren Urheberrechtsgesetze zu
halten. Unabhängig von der Anwendbarkeit der entsprechenden Urheberrechtsgesetze darf
kein Teil dieses Dokuments ohne ausdrückliche schriftliche Erlaubnis der Microsoft
Corporation für irgendwelche Zwecke vervielfältigt oder in einem Datenempfangssystem
gespeichert oder darin eingelesen werden, unabhängig davon, auf welche Art und Weise
oder mit welchen Mitteln (elektronisch, mechanisch, durch Fotokopieren, Aufzeichnen usw.)
dies geschieht.
Es ist möglich, dass Microsoft Rechte an Patenten bzw. an angemeldeten Patenten, an
Marken, Urheberrechten oder sonstigem geistigen Eigentum besitzt, die sich auf den
fachlichen Inhalt dieses Dokuments beziehen. Die Bereitstellung dieses Dokuments gewährt
Ihnen jedoch keinerlei Lizenzrechte an diesen Patenten, Marken, Urheberrechten oder
anderem geistigen Eigentum, es sei denn, dies wurde ausdrücklich durch einen schriftlichen
Lizenzvertrag mit der Microsoft Corporation vereinbart.
Die in den Beispielen verwendeten Namen von Firmen, Organisationen, Produkten,
Domänen, Personen, Orten, Ereignissen sowie E-Mail-Adressen und Logos sind frei
erfunden, soweit nichts anderes angegeben ist. Jede Ähnlichkeit mit tatsächlichen Firmen,
Organisationen, Produkten, Domänennamen, Personen, Orten, Ereignissen, E-MailAdressen und Logos ist rein zufällig.
© 2008 Microsoft Corporation. Alle Rechte vorbehalten.
Microsoft, Active Directory, ActiveX, BitLocker, Excel, Internet Explorer, PivotTable,
PowerShell, SQL Server, Vista, Visual Basic, Visual Studio, Windows, Windows Server und
Windows Vista sind Marken der Microsoft-Unternehmensgruppe.
Alle anderen Marken sind Eigentum ihrer jeweiligen Inhaber.
2
Inhalt
Einführung ............................................................................................................................. 7
Verwendung dieses Dokuments ............................................................................................. 7
Dokumentfokus .................................................................................................................. 7
Dokumentvoraussetzungen ................................................................................................ 7
Grundlegendes zur Kompatibilität .......................................................................................... 8
GRC-Elemente ................................................................................................................... 9
Risikomanagement ......................................................................................................... 9
Führung .........................................................................................................................10
Kompatibilität .................................................................................................................10
Ein GRC-Beispiel...............................................................................................................12
Risiko mindernde Kontrollen ..............................................................................................13
Key Performance Indicators (KPIs) [Analysis Services] .....................................................14
Zuordnen von Vorschriften zu einem Kernsatz von IT-Kontrollen ......................................14
Implementieren von IT-Kontrollen mit SQL Server 2008 .......................................................16
Sichern der Plattform ............................................................................................................17
Sichern von SQL Server 2008 ........................................................................................17
Verwalten der SQL Server 2008-Oberflächenkonfiguration ............................................18
Kontrollieren der Identität und Aufgabentrennung .................................................................20
Verwenden der Windows-Authentifizierung .......................................................................20
Erstellen von Anmeldenamen ............................................................................................22
Zuweisen von Benutzern zu Serverrollen ..........................................................................23
Erteilen von Datenbankzugriff ............................................................................................24
Zuweisen von Benutzern zu Datenbankrollen ....................................................................25
Verwalten von Berechtigungen ..........................................................................................26
Serverrollenberechtigungen ...........................................................................................26
Datenbankberechtigungen .............................................................................................27
Berechtigungen auf Spaltenebene .................................................................................28
Aufgabentrennung.................................................................................................................30
Einschränken der Verwendung der Rolle "sysadmin" ........................................................30
3
Deaktivieren des Administratorkontos (sa) .....................................................................30
Verwenden von signierten Prozeduren zum Agieren als Systemadministrator
(Deaktivieren aller sysadmin-Konten) .............................................................................31
Beim Setup definierte sysadmin-Konten ............................................................................31
Zuweisen der sysadmin-Rolle beim SQL Server 2008-Setup .........................................31
Zuweisung von Dienst-SIDs unter Windows Vista und Windows Server 2008................33
Verwenden der Gruppe "VORDEFINIERT\Administratoren" ..........................................33
Identitätsverwaltung mit Multi-Tier-Anwendungen..............................................................34
Verschlüsseln von Datenbankdaten ......................................................................................35
SQL Server-Datenbankverschlüsselung ............................................................................35
Auswählen eines Verschlüsselungsalgorithmus ................................................................35
Verwenden der transparenten Datenverschlüsselung ........................................................35
Sichern des privaten Schlüssels des Zertifikats..............................................................36
Rotieren von Zertifikaten oder Rotieren von Schlüsseln .................................................37
Überwachen des Schlüsselzugriffs ....................................................................................37
Überwachen des Verschlüsselungsflags für die Datenbank ...............................................38
Behandeln von spezifischen Szenarien .............................................................................38
Absichern gegen den Diebstahl eines Computers ..........................................................38
Verhindern des Zugriffs durch Systemadministratoren und Datenbankbesitzer ..............39
Schützen einer Spalte in einer Datenbanktabelle ...........................................................39
Überwachen sensibler Vorgänge ..........................................................................................40
Sammeln von Protokollen ..................................................................................................41
Übertragen von Protokollen ...............................................................................................41
Verwenden von Skripts und Tools zum Verwalten der Überwachung ................................41
Überwachen bestimmter Benutzer und Tabellen ...............................................................43
Überwachen bestimmter Benutzer .................................................................................43
Überwachen bestimmter Tabellen ..................................................................................44
Verfolgen des sysadmin- und db_owner-Zugriffs ...........................................................44
Zentralisieren von Protokollen ...........................................................................................44
Erstellen von Berichten aus Protokolldateien .....................................................................45
Übersicht – Serveraktionen ............................................................................................46
Trendanalyse der Serveraktionen ..................................................................................46
Ausführen eines Drillthroughs zu den Serveraktionsdetails ............................................47
4
Übersicht – Datenbankaktionen .....................................................................................48
Ausführen eines Drillthroughs zu den Datenbankaktionen .............................................48
Übersicht – DDL-Aktionen ..............................................................................................49
Ausführen eines Drillthroughs zu den DDL-Aktionen ......................................................49
Übersicht – DML-Aktionen .............................................................................................50
Ausführen eines Drillthroughs zu den DML-Aktionen .....................................................50
Verwenden der richtlinienbasierten Verwaltung zum Definieren, Bereitstellen und Überprüfen
von Richtlinien.......................................................................................................................51
Struktur der richtlinienbasierten Verwaltung.......................................................................51
Richtlinienbasierte Verwaltung – Beispiel ..........................................................................52
Überwachen der Richtlinien der richtlinienbasierten Verwaltung ........................................52
Verwenden der richtlinienbasierten Verwaltung zur Einhaltung gesetzlicher Bestimmungen
..........................................................................................................................................52
Erstellen eines Plans......................................................................................................53
Welche Richtlinien möchten Sie basierend auf dem Plan erstellen? ..............................54
Bestimmen des Ausführungsmodus für Ihre Richtlinien .................................................55
Verwenden der richtlinienbasierten Verwaltung zum Implementieren von KPIs und KRIs
......................................................................................................................................57
Verwenden der richtlinienbasierten Verwaltung zum Überprüfen der
Überwachungskonfiguration ...........................................................................................58
Verwenden der richtlinienbasierten Verwaltung zum Überprüfen der
Verschlüsselungskonfiguration .......................................................................................58
Bereitstellen von Richtlinien ...........................................................................................59
Erstellen von Berichten zur richtlinienbasierten Verwaltung ...........................................61
Nützliche Skripts und Tipps ...................................................................................................64
Programmierschnittstellen zu SQL Server .........................................................................64
SMO ..............................................................................................................................64
Transact-SQL.................................................................................................................64
Windows PowerShell .....................................................................................................64
VBScript ............................................................................................................................65
Windows Data Access Components ..................................................................................65
Sicherstellen der Sicherheitseinstellungen ("Server Security Policy.xml") .............................66
Verwalten der Aufgabentrennung ("SOD Policy.xml") ...........................................................68
Verwenden von Skripts in Bedingungen ............................................................................69
5
Deaktivieren aller sysadmin-Konten ("ManageSA.sql") ......................................................70
Überprüfen des sa-Kontos ("ValidateSA.sql") ....................................................................71
Überprüfen der sysadmin-Rollenmitgliedschaft ("ValidateSysadmins.sql") ........................72
Erzwingen der Rollentrennung ("SOD Policy.xml") ............................................................72
Überwachen von Serverrollen ("ValidateServerRoles.sql").............................................73
Auflisten von Benutzern in mehreren Rollen ("ValidateServerRoles.sql") .......................74
Überwachen von Datenbankrollen ("ValidateDatabaseRoles.sql") .................................75
Verwalten von Verschlüsselungsschlüsseln ..........................................................................76
Überwachen des Zugriffs auf Verschlüsselungsschlüssel ("AuditCryptoActions.sql") ........76
Anzeigen von Zertifikaten und Schlüsseln ("ViewKeys.sql")...............................................77
Wechseln von Zertifikaten ("RotateCerts.sql") ...................................................................78
Sichern des privaten Zertifikatschlüssels ("BackupCerts.sql")............................................79
Sicherstellen der Zertifikatrotation und -sicherung ("CertRotationPolicy.xml") ....................80
Verwalten der Überwachung .................................................................................................81
Übertragen von SQL Server Audit-Protokollen an eine Tabelle ("StoreAuditLogs.sql") ......81
Verwenden von SSIS zum Verschieben von Protokollen in eine Datenbanktabelle
("LoadLogsPackage.dtsx") ................................................................................................84
Zugreifen auf SQL Server Audit-Ereignisse mithilfe von Excel ("AuditReport.xlsx") ...........87
Abrufen einer IP-Adresse aus einem Überwachungsprotokoll ...........................................89
Überwachungsprojekt ........................................................................................................90
SQL DB-Protokollordner (z. B. "H:\sqllog") ............................................................................91
Verwalten der Richtlinien der richtlinienbasierten Verwaltung ...............................................95
Erstellen einer Richtlinie mithilfe von PowerShell...............................................................95
Bereitstellen von Richtlinien der richtlinienbasierten Verwaltung mit PowerShell
("DeployPBMPolicies.ps1") ................................................................................................95
Übertragen von Richtlinienzustandsprüfungen in eine Datenbanktabelle ...........................97
Zusammenfassung..............................................................................................................101
6
Einführung
Weltweit werden Organisationen mit Vorschriften und Verordnungen überschwemmt. Zudem
besteht in Organisationen die dringende Notwendigkeit zur besseren Verwaltung der ITSysteme, um den effizienten Betrieb und die Sicherheit dieser Systeme zu gewährleisten.
Microsoft wird häufig gebeten, Anleitungen und Technologie bereitzustellen, um
Organisationen bei ihren Kompatibilitätsanstrengungen zu unterstützen. Das Whitepaper
"SQL Server 2008-Kompatibilitätshandbuch" wurde verfasst, um Organisationen und
Einzelpersonen zu veranschaulichen, wie sie die Funktionen der Microsoft® SQL Server®
2008-Datenbanksoftware verwenden können, um ihre Kompatibilitätsanforderungen zu
erfüllen. Dieses Whitepaper dient als Begleitdokument für das SQL Server 2008Kompatibilitäts-SDK (Software Development Kit), das Beispielcode und Anleitungen
bereitstellt, um die SQL Server 2008-Kompatibilitätsfunktionen besser zu verstehen und bei
der Lösungsentwicklung gezielt einzusetzen.
Verwendung dieses Dokuments
Dieses Dokument stellt Kompatibilitätsleitlinien für verschiedene Ebenen bereit. Im ersten Teil
dieses Whitepapers werden allgemeine Kompatibilitätskonzepte erläutert und beschrieben,
wo IT-Kontrollen gezielt zur Risikominimierung eingesetzt werden können und wie
Technologie zum Implementieren dieser Kontrollen verwendet wird. Im zweiten Teil werden
bestimmte Kompatibilitätsszenarien behandelt, beispielsweise Sichern der Plattform und
Schützen der Daten. Der dritte Teil dieses Whitepapers enthält Beispielcode, Beispiele und
Tipps, die verwendet werden können, um das Erstellen benutzerdefinierter
kompatibilitätsbezogener Lösungen auf Basis von SQL Server 2008 zu beschleunigen. Das
SDK kann auch für sich allein zur Implementierung von IT-Kontrollen verwendet werden.
Informationen hierzu können Sie der Infodatei entnehmen, die mit dem SDK geliefert wird.
Dokumentfokus
Dieses Dokument bietet allgemeine Hilfestellung bei der Verwendung von SQL Server 2008
zum Erfüllen der Kompatibilitätsanforderungen. Außerdem wird auf allgemeine
Kompatibilitätsleitlinien des Solution Accelerator-Teams von Microsoft und auf Anleitungen
zum Wahren der Sicherheit im Betriebssystem Windows Server® hingewiesen.
Dokumentvoraussetzungen
Die Leser dieses Dokuments sollten über grundlegende SQL Server-Kenntnisse verfügen,
um die hier vorgestellten Konzepte besser verstehen zu können. Das Compliance Hands-onLab im SDK vertieft das Verständnis der kompatibilitätsbezogenen Funktionen von
SQL Server 2008.
7
Grundlegendes zur Kompatibilität
Die Kompatibilität zwecks Einhaltung gesetzlicher Bestimmungen betrifft viele Organisationen
aller Größen. Die Kompatibilität wird wesentlich durch gesetzliche Bestimmungen wie den
Sarbanes-Oxley Act (SOX) und den Payment Card Industry Data Security Standard (PCIDSS) vorangetrieben. Aber auch Unternehmen, die noch nicht von gesetzlichen
Bestimmungen betroffen sind, müssen eigene organisatorische Richtlinien festlegen, um
Kompatibilität zu erreichen. Häufig kommt es jedoch zu Problemen, wenn in Unternehmen
ein Kompatibilitätsprogramm initiiert wird. Oftmals wissen Unternehmen nicht, wo sie den
Anfang machen sollen oder wie das Kompatibilitätsprogramm mithilfe von Technologie,
insbesondere SQL Server, automatisiert werden kann.
Die Kompatibilität ist der letzte Schritt eines dreistufigen Prozesses, der als GRC bezeichnet
wird. Dies ist die Kurzform von "Governance, Risk Management & Compliance" (Führung,
Risikomanagement, Kompatibilität). Organisationen, die ein GRC-Programm entwickeln
möchten, sollten einen Kompatibilitätsberater um Unterstützung bitten. Die Analysten des
Marktforschungsunternehmens Forrester haben die GRC-Branche unter die Lupe genommen
und einen Bericht über die GRC-Beratungsfirmen erstellt. Dieser Bericht enthält eine Liste
der Unternehmen, die als Berater in Betracht kommen. Im nächsten Abschnitt wird der Begriff
GRC näher erläutert. Zudem erfahren Sie, wie SQL Server in ein GRC-Programm integriert
werden kann.
8
GRC-Elemente
Mit GRC können Unternehmen Risiken identifizieren, diese Risiken mildern und sicherstellen,
dass die Risiken im Laufe der Zeit minimiert werden. Abbildung 1 bietet eine Übersicht über
diese Konzepte.
Abbildung 1: GRC-Elemente
Assessment
Prioritization
Action plan
Policies
Training
Practices
Monitoring
Validation
Remediation
Risikomanagement
Risikomanagement ist ein Programm zum Minimieren oder Ausschalten von Risiken.
Zunächst wird jeder Bereich einer Organisation analysiert, um festzustellen, wo
möglicherweise Risiken bestehen. Für jede Abteilung, beispielsweise Sicherheit, operativer
Ablauf, Vertrieb und Entwicklung, kann eine eigene Risikoeinschätzung durchgeführt werden.
Zunächst einmal sollten Unternehmen mit einem Kompatibilitätsprüfer zusammenarbeiten,
um für ihr Unternehmen eine Risikoeinschätzung durchzuführen. Nachdem die Risiken
ermittelt wurden, sollte diesen eine Priorität zugewiesen werden. Basierend auf den
Prioritäten sollte dann ein Aktionsplan aufgestellt und umgesetzt werden. Der Plan sollte
Aufschluss darüber geben, wie jedes Risiko behandelt werden sollte: Sollte das Risiko
ignoriert, abgemildert oder vermieden werden?
9
Strategien zum Bekämpfen der Risiken, die mit dem Speichern von Kreditkartendaten
verbunden sind
 Ignorieren – Schutz der Kreditkartendaten nicht verbessern.
 Abmildern – Schutz der Kreditkartendaten verbessern.
 Vermeiden – Keine Kreditkartendaten sammeln.
Risiken, für die eine Strategie zur Abmilderung verfolgt wird, sollten priorisiert werden. Zudem
sollte ein Aktionsplan aufgestellt und umgesetzt werden, um jedes Risiko abzumildern. Da die
Risiken in jeder Abteilung identifiziert und priorisiert werden, muss sichergestellt sein, dass
diese Risiken mit den organisatorischen Risiken in Einklang gebracht werden. Die Prioritäten
auf Abteilungsebene dürfen keine Prioritäten auf Organisationsebene außer Kraft setzen.
Führung
Die Führung stellt die Aktionen dar, die ausgeführt werden müssen, um die bei der
Risikoeinschätzung ermittelten Risiken zu bekämpfen. Bei diesem Schritt werden Richtlinien,
IT-Kontrollen, Praktiken, Systeme und Schulungen eingesetzt, um Risiken abzumildern. Die
Risiko mindernden Kontrollen, die unter erörtert werden, können in den Fällen verwendet
werden, wo die strikte Einhaltung von Richtlinien nicht möglich ist oder Risiken nicht
verhindert werden können. Mit SQL Server kann beispielsweise nicht verhindert werden,
dass der Systemadministrator sensible Daten anzeigt. Das Konto sysadmin kann jedoch
deaktiviert und alle Zugriffe vom Systemadministrator können überwacht werden, um
sicherzustellen, dass kein zweckwidriger Zugriff auf vertrauliche Daten erfolgt.
Strategien zum Anwenden von Führungsrichtlinien zum Schützen sensibler Daten
 Erstellen von Richtlinien zur ordnungsgemäßen Behandlung sensibler Daten.
 Schulen der Mitarbeiter in der Anwendung von Datenbehandlungsrichtlinien.
 Anwenden von Richtlinien auf Systeme, in denen sensible Daten gespeichert werden.
 Überwachen und Protokollieren der Behandlung sensibler Daten, um die Einhaltung der
Richtlinien sicherzustellen.
Kompatibilität
Um Kompatibilität sicherzustellen, wird überprüft, ob die identifizierten Risiken minimiert
werden. Im Folgenden wird anhand von Beispielen veranschaulicht, wie Risiken überprüft
werden können. 1. Wurde für jedes identifizierte Risiko eine Richtlinie definiert, um das Risiko
zu verhindern oder zu minimieren? 2. Wurden die entsprechenden Personen über die
Richtlinien informiert? 3. Wurden die Richtlinien über Prozesse, Software oder IT-Kontrollen
implementiert? 4. Werden die Richtlinien überwacht, um deren Einhaltung sicherzustellen
und bei einem Verstoß gegen die Richtlinien schnell Maßnahmen ergreifen zu können? Um
echte Kompatibilität zu erzielen, muss jeder Schritt durch einen Prüfer verifiziert werden
können. Hierzu können Überwachungsberichte, Ereignisprotokolle, Videobänder und der
Versionsverlauf hilfreich sein.
10
Strategien zum Überprüfen der Kompatibilität
 Aufzeigen, dass Richtlinien zum Behandeln der identifizierten Risiken entwickelt wurden.
 Aufzeigen, dass erforderliche Richtlinien implementiert wurden.
 Nachweisen, dass Richtlinien während des Erzwingungszeitraums umgesetzt und befolgt
wurden.
Die Einhaltung organisatorischer Richtlinien und Vorschriften (Kompatibilität) wird
normalerweise durch interne Überwachungsteams und professionelle externe Betriebsprüfer
sichergestellt. Stellen Sie sicher, dass die vorhandenen Systeme den Prüfern die
Kompatibilitätsüberprüfung erleichtern. Durch Zentralisierung der Überwachungssysteme
kann die Effizienz der Kompatibilitätsüberprüfung verbessert werden. Durch diese Techniken
werden die Kosten der Überprüfung reduziert, und die Unterbrechung täglicher Abläufe wird
minimiert.
11
Ein GRC-Beispiel
Als Nächstes wird unter Verwendung der im vorherigen Abschnitt beschriebenen GRCRichtlinien veranschaulicht, wie Sie diese Richtlinien anwenden können, um die
Notwendigkeit einer Zugangskontrolle für Gebäude einzuschätzen, so wie in Abbildung 2
gezeigt.
Abbildung 2: GRC-Beispiel
Loss from theft,
vandalism and
injury to personnel
Locked door, guard,
camera, badges and
policies
Review entrance
and guard logs,
tapes and news
reports
Risikomanagement
Bei der Risikoeinschätzung des Gebäudes stellen Sie möglicherweise fest, dass eine
Sicherheitsrichtlinie notwendig ist, um das Risiko eines Diebstahls von Computern,
Büroausstattung, persönlichen Gegenständen und geistigem Eigentum zu reduzieren.
Mitarbeiter können auch dem Risiko eines Angriffs oder Raubüberfalls ausgesetzt sein. Das
Gebäude selbst könnte durch Vandalismus beschädigt werden. Jedes dieser Risiken könnte
sich negativ auf den Nettogewinn einer Organisation auswirken, falls sie tatsächlich eintreten.
Führung
Nach Abschluss der Risikoeinschätzung werden eine Reihe von Richtlinien und Prozessen
definiert und zwecks Implementierung priorisiert. Für die Zutrittskontrolle zu Gebäuden und
den Schutz der Eingänge werden Richtlinien erstellt. Die Mitarbeiter werden in Schulungen
mit diesen Richtlinien vertraut gemacht. An den Türen werden elektronische Sperren
angebracht, damit diese nur mit den entsprechenden Mitarbeiterausweisen geöffnet werden
können. Den Mitarbeitern werden Ausweise ausgehändigt, die ihren Zutritt auf die Gebäude
beschränken, die sie im Rahmen ihrer Tätigkeit aufsuchen müssen. An gefährdeten
Standorten werden Kameras und Wachposten platziert, um Richtlinien besser durchsetzen
zu können.
12
Kompatibilität
Um gegenüber einem Prüfer nachweisen zu können, dass die Richtlinien für den
Gebäudezugang erfüllt wurden, können die Eingangsprotokolle vorgelegt werden. Anhand
dieser Protokolle kann nachgewiesen werden, dass die Daten ordnungsgemäß in den
Protokollen erfasst wurden und die in den Protokollen aufgeführten Mitarbeiter sich legitim im
Gebäude aufgehalten haben. Die Bänder der Kameras können eingesehen werden, um
sicherzustellen, dass Mitarbeiter die Zugangsrichtlinien befolgt haben und der Zugang von
Nicht-Unternehmensangehörigen zum Gebäude verhindert wurde. Zudem könnte ein Auditor
die Wachposten befragen und die aktuellen Berichte lesen, um zu prüfen, ob es in Bezug auf
das Gebäude Vorfälle gegeben hat.
Risiko mindernde Kontrollen
Mit Risiko mindernden Kontrollen, die auch als Kompensationskontrollen bezeichnet werden,
können die Risiken einer Kontrolle, die nicht hundertprozentig erzwungen werden kann,
verringert werden. In dem oben geschilderten GRC-Beispiel wird die Kamera als Kontrolle zur
Risikominimierung eingesetzt, um zu sehen, ob Einzelpersonen sich ohne Mitarbeiterausweis
Zugang zum Gebäude verschaffen. Denn mit einer elektronischen Sperre an Türen kann eine
Einzelperson zwar gezwungen werden, sich mit ihrem Mitarbeiterausweis Zugang zu
Räumen zu verschaffen, aber sie hindert keinen daran, durch die Tür zu treten, nachdem
eine andere Person die Tür geöffnet hat.
Die Überwachung wird in Computersystemen häufig als Risiko mindernde Kontrolle
verwendet, um sensible Vorgänge zu überwachen, die nicht unterbunden werden können.
Beispielsweise haben Systemadministratoren häufig Zugang zu allen Systemdaten, obwohl
sie nicht immer autorisiert sind, die Daten anzuzeigen. Durch Überwachung der von
Systemadministratoren durchgeführten Aktionen kann festgestellt werden, ob die
Zugriffsrichtlinien befolgt wurden.
Mit SQL Server 2008 werden zwei Funktionen eingeführt, die zum Entwickeln von Risiko
mindernden Kontrollen verwendet werden können. Mit SQL Server Audit können sensible
Vorgänge und privilegierte Konten, z. B. das sa-Konto, überwacht werden. Mit der
richtlinienbasierten Verwaltung (Policy-Based Management, PBM) kann sichergestellt
werden, dass kritische Konfigurationseinstellungen auf den richtigen Wert festgelegt sind und
dieser Wert nicht geändert wird. Während es im jeweiligen Fall zwar nicht immer möglich ist,
bestimmte Vorgänge, Konten oder Konfigurationseinstellungen zu blockieren, können aber
die von ihnen dargestellten Risiken durch die Verwendung dieser beiden neuen Funktionen
minimiert werden.
13
Key Performance Indicators (KPIs) [Analysis Services]
Bei Key Performance Indicators (KPIs) handelt es sich um Einstellungen oder Kennzahlen,
aus denen abgeleitet werden kann, ob die Leistung des Unternehmens, der Abteilung oder
der Systeme den Erwartungen entspricht. Die Werte oder Bereiche für KPIs werden
normalerweise durch die Entscheidungsträger für betriebswirtschaftliche Belange festgelegt.
Einige IT-Kontrollen können als KPIs verwendet werden. Beispielsweise können
Datenbankabfrageleistung, CPU-Auslastung, verfügbarer Speicher und verfügbare
Verbindungen alle als Indikatoren eines fehlerfreien Systems gemessen werden.
Risikokennzahlen (Key Risk Indicators, KRIs) sind Einstellungen oder Messungen, die darauf
hinweisen können, dass Unternehmen, Abteilungen oder Systeme einem Risiko ausgesetzt
sind. Die Werte oder Bereiche für KRIs werden normalerweise durch die Entscheidungsträger
für technische Belange festgelegt. Zum Implementieren von IT-Kontrollen werden häufig ITKontrollen verwendet. Beispiele für KRIs sind Sicherheitspatches, Aktivierung der
Verschlüsselung, Anzahl der Personen mit Administratorrolle und Häufigkeit von
Sicherungen.
Informationen zum Verwenden der richtlinienbasierten Verwaltung zum Implementieren von
KPIs und KRIs finden Sie unter Verwenden der richtlinienbasierten Verwaltung zum
Implementieren von KPIs und KRIs weiter unten in diesem Dokument.
Zuordnen von Vorschriften zu einem Kernsatz von IT-Kontrollen
Die Definition von Richtlinien zum Einhalten von Vorschriften führt oft zur Entwicklung von ITKontrollen, die zum Implementieren der Richtlinien dienen. Für eine Richtlinie, die den Zugriff
auf Kreditkartennummern einschränkt, sind möglicherweise IT-Kontrollen für strenge
Authentifizierung, Kennwortrichtlinien und die Anwendung einer Verschlüsselung erforderlich.
Während einige Kontrollen durch Geschäftsprozesse implementiert werden, werden viele
Kontrollen mithilfe von Technologie implementiert.
14
In Abbildung 3 finden Sie ein Beispiel der IT-Kontrollen, die ggf. für einige der geläufigeren
Bestimmungen und Vorschriften in den USA erforderlich sind. Das Planungshandbuch für die
IT-Kompatibilität von Microsoft bietet Hilfestellung beim Zuordnen von Bestimmungen zu
einem Kernsatz von IT-Kontrollen und enthält Informationen über die Microsoft-Technologie,
die Sie bei der Erstellung dieser Kontrolle unterstützt.
GLBA
HIPAA
PCI
IT Control
SOX
Abbildung 3: SOX: Sarbanes Oxley Act. PCI: Payment Card Industry, HIPAA: Health
Information Portability and Accountability Act, GLBA: Graham Leach Bliley Act
ID Management
Separation of Duties
Encryption
Key Management
Auditing
Control Testing
Policy Management
Die nächsten Abschnitte dieses Whitepapers sind nach den genannten IT-Kontrollen
aufgegliedert.
Symbol
Beschreibung
Identitätsverwaltung
Aufgabentrennung
Verschlüsselung
Schlüsselverwaltung
Überwachung
Richtlinienbasierte Verwaltung
15
Implementieren von IT-Kontrollen mit SQL Server 2008
SQL Server 2008 umfasst mehrere Funktionen, die das Implementieren datenbankbezogener
IT-Kontrollen ermöglichen. Darüber hinaus können einige IT-Kontrollen mithilfe der Plattform
implementiert werden, auf der SQL Server installiert ist. Es ist wichtig, dass das
Kompatibilitätsteam in Ihrer Organisation die zu implementierenden IT-Kontrollen definiert
und festlegt, welche davon auf die Datenbank angewendet werden. In den folgenden
Abschnitten werden die Funktionen erläutert, die zum Implementieren von IT-Kontrollen
verwendet werden können. Folgende Bereiche werden behandelt:

Sichern der Plattform
In diesem Abschnitt werden die Maßnahmen beschrieben, die vor der Softwareinstallation
oder Datenbankkonfiguration ergriffen werden müssen. Mit diesen Maßnahmen können
die Risiken für das Betriebssystem und die Datenbankanwendung minimiert werden.

Kontrollieren der Identität und Aufgabentrennung
Dieser Abschnitt enthält Empfehlungen zum Definieren von Datenbankprinzipalen und
Erzwingen der Aufgabentrennung.

Verschlüsseln von Datenbankdaten
In diesem Abschnitt werden die Verschlüsselungsfunktionen von SQL Server 2008
beschrieben. Zudem werden Aspekte der Verschlüsselung erörtert, die häufig außer Acht
gelassen werden.

Überprüfen sensibler Informationen
In diesem Abschnitt wird die neue Überwachungsfunktion von SQL Server 2008
vorgestellt und erläutert, wie diese für die zentralisierte Protokollerfassung und
Berichterstattung verwendet werden können.

Verwenden der richtlinienbasierten Verwaltung zum Definieren, Bereitstellen und
Überprüfen von Richtlinien
In diesem Abschnitt wird die SQL Server 2008-Funktion zur richtlinienbasierten
Verwaltung vorgestellt und erläutert, wie diese zum Verwalten mehrerer Datenbanken
mithilfe einer einzelnen Richtlinie verwendet werden kann.
16
Sichern der Plattform
Bevor Sie mithilfe von SQL Server Richtlinien anwenden oder IT-Kontrollen implementieren,
sollten Sie sicherstellen, dass Sie über eine sichere Grundlage für die Installation von
SQL Server verfügen:





Verwenden Sie das neueste Betriebssystem mit aktuellen Service Packs.
Installieren Sie die neuesten Sicherheitspatches.
Installieren Sie AntiMalware-Software.
Minimieren Sie die Angriffsfläche des Betriebssystems:
o Begrenzen Sie die ausgeführten Dienste.
o Installieren Sie nur Software, die zum Unterstützen der Serverrolle erforderlich ist.
o Deaktivieren Sie unnötige Ports.
o Konfigurieren Sie die Firewall.
Beschränken Sie die Benutzer, die Zugriff auf den Server haben, und die Rollen der
Benutzer.
Wenn Sie an weiteren Informationen interessiert sind, einschließlich Anleitungen zum Sichern
von Windows Server 2008, laden Sie das Windows Server 2008-Sicherheitshandbuch
herunter.
Sichern von SQL Server 2008
Nachdem Sie die Plattform gesichert haben, sollten Sie zunächst SQL Server installieren und
sichern, bevor die Richtlinien angewendet und IT-Kontrollen entwickelt werden. Weitere
Informationen, einschließlich Richtlinien zum Sichern von SQL Server 2008, finden Sie im
Whitepaper Sichern von SQL Server.
17
Verwalten der SQL Server 2008-Oberflächenkonfiguration
Ab SQL Server 2008 gibt es das Tool zur Oberflächenkonfiguration nicht mehr. Die
Funktionen des Tools zur Oberflächenkonfiguration, die das Verhalten von SQL Server
steuern, wurden ersetzt und durch die Funktionen für die richtlinienbasierte Verwaltung
erheblich erweitert. Abbildung 4 zeigt das Bild mit den Oberflächenkonfigurationsfacets der
richtlinienbasierten Verwaltung. Es gibt sogar Oberflächenkonfigurationsfacets für Analysis
Services und Reporting Services. Weitere Informationen zum Verwalten der
Oberflächenkonfiguration finden Sie unter Grundlegendes zur Oberflächenkonfiguration.
Abbildung 4: Oberflächenkonfigurationsfacet der richtlinienbasierten Verwaltung
18
Die in Abbildung 4 gezeigten Konnektivitätsverwaltungsfunktionen des Tools zur
Oberflächenkonfiguration sind verfügbar, wenn Sie den SQL Server-Konfigurations-Manager
verwenden. Abbildung 5 zeigt die SQL Server-Konfigurations-Manager-Knoten zum
Konfigurieren von Diensten, Netzwerk und Protokollen.
Abbildung 5: SQL Server-Konfigurations-Manager
Die SQL Server-Konfiguration kann mithilfe der gespeicherten Prozedur sp_configure
verwaltet werden. Mit dieser gespeicherten Prozedur können Sie beispielsweise folgende
Einstellungen verwalten:





Sicherungskomprimierung
Common Criteria-Aktivierung
Common Language Runtime (CLR)-Aktivierung
Remotezugriff
Benutzerverbindungen
19
Kontrollieren der Identität und Aufgabentrennung
Der erste Schritt zum Einschränken des Zugriffs auf die Daten in der Datenbank besteht
darin, die Personen zu beschränken, die auf die Datenbank zugreifen können. SQL Server
2008 bietet verschiedene Möglichkeiten, um zu verwalten, welche Benutzer auf eine
Datenbank zugreifen können und welche Vorgänge von den Datenbankbenutzern ausgeführt
werden können. Abbildung 6 zeigt die verschiedenen Ebenen der Identitätsverwaltung, die
von SQL Server 2008 bereitgestellt werden. Außerdem können Benutzern besondere
Berechtigungen erteilt oder verweigert werden. Bevor Sie Benutzern Zugriff erteilen, sollten
Sie planen, wer Datenbankzugriff auf welcher Ebene und für welche Vorgänge erhalten
sollte. Beachten Sie dann die folgenden Richtlinien:





Verwenden Sie die Windows-Authentifizierung für alle Datenbankanmeldungen.
Gewähren Sie Benutzern Zugriff auf Datenbanken im erforderlichen Umfang.
Erteilen Sie Benutzern erforderliche Berechtigungen, oder verweigern Sie
Berechtigungen.
Weisen Sie Benutzern die Rollen zu, die sie zum Ausüben ihrer Tätigkeit benötigen.
Verwenden Sie die richtlinienbasierte Verwaltung zum Überprüfen der Identitätsrichtlinien.
Abbildung 6: Entstehung der Datenbankbenutzerdefinition
Verwenden der Windows-Authentifizierung
Die Identitätsverwaltung ist nach dem Überprüfen der Plattformsicherheit der wichtigste
Schritt beim Schützen der Datenbank. Der erste Teil der Identitätsverwaltung besteht darin,
die Möglichkeit zu schaffen, alle auf die Datenbank zugreifenden Personen zu identifizieren.
20
Mithilfe des Windows-Authentifizierungsmodus wird die SQL Server-Identität mit einem
Active Directory®-Konto verknüpft, um eine starke Identität bereitzustellen. Die Integration
der Zugriffverwaltung in Active Directory-Domänendienste (AD DS) bietet mehrere Vorteile
für SQL Server:



Konsistente Identität auf allen Servern
Zentralisierte Erzwingung von Kennwortrichtlinien
Zentralisierte Mittel zum Deaktivieren von Konten
Informationen über die Kontobereitstellung finden Sie unter Konfiguration des
Datenbankmoduls – Kontobereitstellung.
Der Windows-Authentifizierungsmodus wird in SQL Server Management Studio über die Seite
Sicherheit im Dialogfeld Servereigenschaften aktiviert, so wie unter Abbildung 7 gezeigt.
Abbildung 7: Sicherheitseigenschaften für Server
21
Mit der richtlinienbasierten Verwaltung kann eine Richtlinie erstellt werden, die sicherstellt,
dass Sicherheitseinstellungen festgelegt sind und nicht geändert wurden. Verwenden Sie das
Facet "Serversicherheit" der richtlinienbasierten Verwaltung, um für diese Einstellungen eine
Richtlinie zu erstellen. Weitere Informationen zum Verwenden der richtlinienbasierten
Verwaltung zum Überprüfen von Einstellungen finden Sie unter Verwenden der
richtlinienbasierten Verwaltung zum Definieren, Bereitstellen und Überprüfen von Richtlinien.
Erstellen von Anmeldenamen
Für den Zugriff auf eine Datenbank muss einem Benutzer zuerst ein Anmeldename
zugewiesen werden. Ein Anmeldename kann einem Benutzer mit einem Windows®-Konto
oder einer Windows-Sicherheitsgruppe zugewiesen werden, zu der ein Benutzer gehört.
Informationen zum Erstellen von Anmeldenamen finden Sie unter Vorgehensweise: Erstellen
einer SQL Server-Anmeldung. Das Verwenden einzelner Benutzerkonten anstelle von
Sicherheitsgruppen bietet mehr Kontrolle über die Anmeldungen, da WindowsAdministratoren ohne Wissen der Datenbankadministratoren der Benutzergruppe neue
Benutzer hinzufügen könnten. Allerdings ist Verwaltungsaufwand bei Sicherheitsgruppen
geringer. Unten sehen Sie ein Beispiel eines Skripts zum Erstellen eines Anmeldenamens
aus einem Windows-Konto.
CREATE LOGIN [SQLVM03-18158EA\Pat] FROM WINDOWS
22
In Abbildung 8 wird das Dialogfeld Anmeldung - Neu angezeigt, das zum Erstellen eines
neuen Anmeldenamens für eine Datenbank verwendet werden kann. Sie können auf das
Dialogfeld zugreifen, indem Sie mit der rechten Maustaste auf den Ordner "Anmeldungen"
klicken und dann auf Neue Anmeldung klicken.
Abbildung 8: Dialogfeld Anmeldung - Neu
Zuweisen von Benutzern zu Serverrollen
Die in SQL Server definierten Anmeldenamen sollten einer entsprechenden Serverrolle in
SQL Server zugewiesen werden. Indem Anmeldenamen einer anderen Rolle als sysadmin
zugewiesen werden, kann ihr Zugriff auf eine bestimmte Gruppe von Servervorgängen
beschränkt werden. Wenn ein Anmeldename beispielsweise der Rolle dbcreator zugewiesen
wird, werden hierdurch Berechtigungen zum Erstellen, Ändern, Löschen und
Wiederherstellen von Datenbanken erteilt. Benutzer mit dieser Rolle können jedoch keine
anderen Vorgänge ausführen. Unter Rollen auf Serverebene finden Sie eine Liste fester
Datenbankrollen und der Vorgänge, die Benutzer mit dieser Rolle ausführen können. Im
folgenden Beispiel wird ein Skript dargestellt, mit dem ein Benutzer einer Serverrolle
zugewiesen wird.
sp_addsrvrolemember N'SQLVM03-18158EA\Pat', N'dbcreator'
23
Die Eigenschaftenseite in Abbildung 9 kann verwendet werden, um einem Anmeldenamen
Serverrollen zuzuweisen. Sie können auf die Eigenschaften zugreifen, indem Sie auf
Eigenschaften und dann auf die Registerkarte Serverrollen klicken.
Abbildung 9: Serverrollen der Serveranmeldung
Erteilen von Datenbankzugriff
Nachdem ein Anmeldename erstellt wurde, muss ihm noch Zugriff auf eine Datenbank erteilt
werden, bevor auf die Daten zugegriffen werden kann. Es muss sichergestellt werden, dass
nur berechtigten Personen Zugriff auf eine Datenbank erteilt wird. Und wenn das erledigt ist,
sollte der Typ des erteilten Zugriffs mit Sorgfalt festgelegt werden. Weitere Informationen zum
Gewähren von Datenbankzugriff für Anmeldenamen finden Sie unter Vorgehensweise:
Erstellen eines Datenbankbenutzers. Im folgenden Beispiel wird ein Skript dargestellt, mit
dem einem Anmeldenamen Zugriff auf die Datenbank "Test2" erteilt wird.
USE Test1
CREATE USER [Pat] FOR LOGIN [SQLVM03-18158EA\Pat]
24
Das Dialogfeld Datenbankbenutzer - Neu in Abbildung 10 kann verwendet werden, um
einem Anmeldenamen Zugriff auf eine Datenbank zu erteilen. Das Dialogfeld kann auch
verwendet werden, um Benutzer einem Schema und Datenbankrollen zuzuweisen. Sie
können auf das Dialogfeld zugreifen, indem Sie mit der rechten Maustaste auf den Ordner
Benutzer klicken und dann auf Neuer Benutzer klicken.
Abbildung 10: Dialogfeld Datenbankbenutzer - Neu
Zuweisen von Benutzern zu Datenbankrollen
Benutzer, denen Zugriff auf eine Datenbank in SQL Server erteilt wurde, sollten einer
entsprechenden Datenbankrolle zugewiesen werden. Indem Benutzer einer anderen Rolle
als db_owner zugewiesen werden, kann ihr Zugriff auf eine bestimmte Gruppe von
Datenbankvorgängen beschränkt werden. Wenn ein Benutzer beispielsweise der Rolle
db_datareader zugewiesen wird, ist er berechtigt, Daten aus allen Datenbanktabellen zu
lesen. Benutzer mit dieser Rolle können jedoch keine anderen Vorgänge ausführen. Unter
Rollen auf Datenbankebene finden Sie eine Liste fester Datenbankrollen und die Vorgänge,
die Benutzer mit dieser Rolle ausführen können. Das folgende Beispiel zeigt ein Skript, mit
25
dem einem Benutzer Datenbankrollen zugewiesen werden, um ihm die Berechtigung zum
Lesen und Schreiben von Datenbankdaten zu erteilen.
sp_addrolemember N'db_datareader', N'Pat'
sp_addrolemember N'db_datawriter', N'Pat'
Datenbankrollen können auch bei der Benutzererstellung über das Dialogfeld
Datenbankbenutzer - Neu zugewiesen werden, so wie im Abschnitt Erteilen von
Datenbankzugriff beschrieben.
Verwalten von Berechtigungen
Berechtigungen sind Rechte oder Vorgänge, die Datenbankbenutzern und Anmeldenamen
gewährt oder verweigert werden. Wenn ein Anmeldename oder Benutzer einer Rolle
zugewiesen wird, erbt der Anmeldename oder Benutzer den Berechtigungssatz, der der Rolle
zugeordnet ist. Alternativ können den Benutzern und Anmeldenamen auch separat
Berechtigungen erteilt werden. Weitere Informationen, einschließlich einer Liste von
Berechtigungen, finden Sie unter Berechtigungen (Datenbankmodul).
Berechtigungen können verwendet werden, um Benutzern präzise Rechte zuzuweisen und
um die Rechte zu beschränken, die sie normalerweise aufgrund ihrer Rollenmitgliedschaft
erben. Beispielsweise kann einem Benutzer, der den Datenbankrollen db_datareader und
db_datawriter zugewiesen ist, mit dem Befehl DENY die Berechtigung zum Löschen von
Einträgen verweigert werden. Dieses Verfahren könnte verwendet werden, um einem
Benutzer das Erstellen und Aktualisieren von Verkaufseinträgen zu erlauben, aber nicht das
Löschen von Einträgen. Das folgende Skript kann verwendet werden, um einem Benutzer die
Berechtigung zum Löschen von Zeilen aus der Tabelle "CCTable1" zu verweigern.
DENY DELETE ON OBJECT::CCTable1 TO [Pat]
Hinweis:
Einige gespeicherte Systemprozeduren und DBCC-Befehle prüfen beim
Ausführen von Vorgängen die Rollenmitgliedschaft, aber nicht die
Berechtigungen. Daher muss immer überprüft werden, ob sich Berechtigungen
wie erwartet verhalten, bevor sie produktiv eingesetzt werden.
Serverrollenberechtigungen
Jeder Serverrolle ist ein Satz von Berechtigungen zugeordnet. Diese Rollen vereinfachen es,
einem Benutzer einen Berechtigungssatz zuzuweisen. Weitere Informationen, einschließlich
einer Auflistung der Berechtigungssätze, die den festen Serverrollen zugewiesen sind, finden
Sie unter Berechtigungen der festen Serverrollen (Datenbankmodul). Im folgenden Beispiel
wird ein Skript zum Anwenden einer Serverberechtigung dargestellt.
GRANT ALTER ANY LOGIN TO [SQLVM03-18158EA\Pat]
26
Die in Abbildung 11 gezeigte Seite Anmeldungseigenschaften kann verwendet werden,
um Serverberechtigungen für einen Anmeldenamen zu gewähren oder zu verweigern. Auf
der Registerkarte Explizit sind alle Berechtigungen einzeln aufgeführt. Über diese
Registerkarte können Berechtigungen gewährt bzw. verweigert oder das Erteilen einer
Berechtigung durch den Anmeldenamen zugelassen werden. Auf der Registerkarte Effektiv
sind die Berechtigungen aufgeführt, die einem Anmeldenamen basierend auf dessen
Rollenmitgliedschaft gewährt werden. Im Beispiel in Abbildung 11 wird Pat die
Löschberechtigung für Tabelle CCTable1 verweigert.
Abbildung 11: Berechtigungen der Serveranmeldung
Datenbankberechtigungen
Jeder Datenbankrolle ist ein Satz von Berechtigungen zugewiesen. Der Satz von
Berechtigungen, der festen Datenbankrollen zugewiesen ist, ist unter Berechtigungen der
festen Datenbankrollen (Datenbankmodul) aufgeführt. Im folgenden Beispiel wird ein Skript
zum Anwenden einer Datenbankberechtigung dargestellt.
USE Test1
27
GRANT CREATE TABLE TO [SQLVM03-18158EA\Pat]
Die Seite Datenbankbenutzer in Abbildung 12 kann verwendet werden, um einem Benutzer
Datenbankberechtigungen zu gewähren oder zu verweigern. Auf der Registerkarte Explizit
sind alle Berechtigungen einzeln aufgeführt. Über diese Registerkarte können
Berechtigungen gewährt bzw. verweigert oder das Erteilen einer Berechtigung durch den
Benutzer zugelassen werden. Auf der Registerkarte Effektiv sind die Berechtigungen
aufgeführt, die einem Benutzer basierend auf dessen Rollenmitgliedschaft gewährt werden.
Abbildung 12: Berechtigungen des Datenbankbenutzers
Berechtigungen auf Spaltenebene
Die Sicherheit auf Spaltenebene kann verwendet werden, um zu verhindern, dass ein
Benutzer auf bestimmte Spalten in einer Tabelle zugreift. Verwenden Sie die DENY
(Objektberechtigung), um den Zugriff auf eine Spalte zu verhindern. Im folgenden Beispiel
wird ein Skript zum Verweigern des Zugriffs auf eine Spalte dargestellt.
DENY SELECT ON [CCTable1] ([CCNumber]) TO [SQLVM03-18158EA\Pat]
28
Hinweis:
Eine Abfrage scheitert, wenn sie eine Spalte enthält, auf die ein Benutzer nicht
zugreifen kann. Beispielsweise funktioniert die Anweisung SELECT * nicht für
eine Tabelle, für die dem Benutzer der Zugriff verweigert wurde. Es wird
empfohlen, dass Anwendungen die in einer Abfrage erforderlichen spezifischen
Spalten enthalten und nicht die Anweisung SELECT * zu verwenden.
Die unten angezeigte Tabelleneigenschaftenseite kann verwendet werden, um den Zugriff
auf bestimmte Spalten in einer Tabelle zu blockieren. Das Beispiel in Abbildung 13 zeigt,
dass Pat der Zugriff auf die Spalte mit den Kreditkartennummern verweigert wurde. Dem
Benutzer müssen SELECT-Berechtigungen für die Tabelle gewährt werden, bevor die
Schaltfläche Spaltenberechtigungen aktiviert wird.
Abbildung 13: Gewähren und Verweigern von Berechtigungen für Datenbankspalten
29
Aufgabentrennung
Die Aufgabentrennung (Separation of Duties, SOD), auch als Rollentrennung bezeichnet,
spielt bei der Identitäts- und Berechtigungsverwaltung eine wichtige Rolle. Sie hilft beim
Abwehren von Bedrohungen durch Einzelpersonen und kann verwendet werden, um die
ordnungsgemäße Ausführung von Aufgaben sicherzustellen. Wenn einer Aufgabe
beispielsweise ein separater Autor, Prüfer und Genehmigender zugewiesen ist, kann jede
dieser Personen sicherstellen, dass die anderen im Rahmen der ihnen übertragenen
Aufgaben agieren und dass beim Ausführen einer Aufgabe keine Fehler gemacht werden.
Die Aufgabentrennung verfolgt zwei Hauptziele:


Sicherstellen, dass die Rollen der Benutzer (z. B. Prüfer und Genehmigender) nicht in
Konflikt stehen
Sicherstellen, dass Benutzer mit einer bestimmten Rolle keine Vorgänge außerhalb
dieser Rolle ausführen können
Viele Datencontroller möchten verhindern können, dass Benutzer mit weit reichenden
Berechtigungen auf ihre sensiblen Daten zugreifen. Derzeit kann mit SQL Server nicht
verhindert werden, dass Mitglieder der Rolle sysadmin bestimmte Vorgänge ausführen, die
ggf. mit den Regeln der Aufgabentrennung in Konflikt stehen. Es können jedoch Risiko
mindernde Kontrollen erstellt werden, um das Risiko zu reduzieren, dass ein
Systemadministrator unzulässige Vorgänge ausführt. Als erste Möglichkeit kann das Konto
sa deaktiviert werden. Zweitens können die Mitglieder der Rolle sysadmin auf die absolut
notwendigen Personen beschränkt werden. Drittens kann jeder von einem
Systemadministrator ausgeführte Vorgang überwacht und geprüft werden. Darüber hinaus
kann die richtlinienbasierte Verwaltung verwendet werden, um zu überprüfen, ob jede dieser
Kontrolle aktiviert ist. Beispiele für die Verwendung der richtlinienbasierten Verwaltung zum
Verwalten der Aufgabentrennung finden Sie unter Verwalten der Aufgabentrennung.
Einschränken der Verwendung der Rolle "sysadmin"
Mitglieder der Serverrolle sysadmin in SQL Server sind berechtigt, beliebige Funktionen in
der Datenbank auszuführen. Daher sollte sorgfältig überlegt werden, welche Personen dieser
Rolle als Mitglied hinzugefügt werden. Die Berechtigungen sollten nur einer kleinen Gruppe
von Benutzern erteilt werden. Es sollte zwar mehr als ein Administrator zugewiesen werden,
um für einen Stellvertreter zu sorgen, aber es ist nicht empfehlenswert, die Berechtigungen
zu umfassend zu verteilen.
Deaktivieren des Administratorkontos (sa)
Normalerweise ist das Konto sa nicht zum Verwalten von SQL Server erforderlich und sollte
nicht verwendet werden. Das Konto sa ist keiner speziellen Einzelperson zugeordnet, sodass
nicht einfach festgestellt werden kann, wer das Konto sa verwendet. Mit SQL Server
Management Studio kann das Konto umbenannt werden, um sicherzustellen, dass es nicht
von Anwendungen verwendet wird. Das Konto kann auch deaktiviert werden, damit Benutzer
sich nicht mit dem Konto anmelden können.
30
Verwenden von signierten Prozeduren zum Agieren als Systemadministrator
(Deaktivieren aller sysadmin-Konten)
Das Deaktivieren aller sysadmin-Konten kann ein Problem darstellen, da nur ein
Systemadministrator das sa-Konto erneut aktivieren und/oder bestimmte Befehle wie
DBCC PINTABLE ausführen kann. Diese Einschränkung kann jedoch nur durch Verwenden
von signierten Prozeduren überwunden werden. Eine signierte Prozedur kann unter der Rolle
sysadmin von Datenbankbenutzern ausgeführt werden, die nicht Mitglied der Rolle
sysadmin sind. Eine solche Prozedur kann verwendet werden, um alle sysadmin-Konten zu
aktivieren und zu deaktivieren. Weitere Informationen finden Sie unter Deaktivieren aller
sysadmin-Konten. Diese Prozeduren können auch verwendet werden, um Vorgänge
auszuführen, die normalerweise dem Systemadministrator vorbehalten sind. Auf diese
Weise können diese Aktionen von Benutzern mit eingeschränkten Rechten ausgeführt
werden, ohne ihnen alle Berechtigungen eines Systemadministrators gewähren zu müssen.
Hinweis:
Vermeiden Sie es, einem Anmeldenamen die Berechtigung CONTROL SERVER
zuzuweisen. Diese Berechtigung erlaubt dem Benutzer, viele der für einen
Systemadministrator vorbehaltenen Vorgänge auszuführen. Darüber hinaus ist
der Benutzer in der Lage, die Identität des sa-Kontos anzunehmen, auch wenn
das Konto deaktiviert ist. Wenn Sie einem Benutzer die Berechtigung CONTROL
SERVER gewähren müssen, sollten Sie mit DENY IMPERSONATE auch für
jedes sysadmin-Konto die Berechtigung zum Identitätswechsel verweigern.
Beispiel:
USE master
DENY IMPERSONATE ON LOGIN::Yukonsa TO [SQLVM03-18158EA\Pat];
Beim Setup definierte sysadmin-Konten
In den Tabellen unten werden die Prinzipale beschrieben, die bei Neuinstallationen für die
Rolle sysadmin definiert werden. Bei Upgrades wird die aktuelle Mitgliedschaft der Rolle
sysadmin nicht geändert.
Zuweisen der sysadmin-Rolle beim SQL Server 2008-Setup
Den SQL Server-Diensten werden während der Installation Dienstkonten zugewiesen. Es
wird jedoch empfohlen, diese Konten in Domänenkonten oder lokale Benutzerkonten zu
ändern. So kann verhindert werden, dass andere Anwendungen, die unter denselben
Diensten ausgeführt werden, auf SQL Server-Ressourcen zugreifen. Weitere Informationen
zum Zuweisen von Dienstkonten finden Sie unter Einrichten von Windows-Dienstkonten.
31
Bei Neuinstallationen von SQL Server 2008 werden der Rolle sysadmin standardmäßig die
folgenden drei Prinzipale als Kernsatz zugewiesen.
Konto
Zweck
Dies ist das obligatorische Benutzerkonto für das
sysadmin-Konto bei Ausführung im gemischten Modus.
Das Konto wird standardmäßig deaktiviert, wenn
SQL Server mithilfe des WindowsAuthentifizierungsmodus eingerichtet wird.
Windows-Prinzipal
Dies ist das obligatorische Windows-Konto, das beim
Setup bereitgestellt werden muss. Diese Person agiert
als der sysadmin (Systemadministrator) für die
SQL Server-Instanz.
NT-AUTORITÄT\SYSTEM
Wird von Windows-Diensten wie Microsoft Update,
Windows Update, System Center Configuration Manager
und Windows Cluster Server verwendet.
Tabelle 1: Bei der Installation definierte sysadmin-Rollen
sa
Bei der Installation von SQL Server unter Windows Vista® oder Windows Server 2008
werden der Rolle sysadmin die folgenden Konten hinzugefügt.
Konto
NT-DIENST\MSSQLSERVER
Zweck
Dies ist eine besondere Sicherheits-ID (SID), die
dem SQL Server-Dienst beim Setup zugewiesen
wird. Sie ersetzt nicht das Konto, unter dem der
Dienst ausgeführt wird. Die Einstellung
"NETZWERKDIENST" bleibt bestehen, sofern sie
nicht von der Person geändert wird, die
SQL Server installiert. Die SID wird verwendet,
wenn der Dienst eine Verbindung mit SQL Server
herstellt. Das Konto wird verwendet, wenn der
Dienst eine Verbindung mit einer
Remoteressource herstellt, beispielsweise mit
einer Dateifreigabe, um Protokolle zu speichern.
NT-DIENST\SQLSERVERAGENT
Dies ist eine besondere SID, die dem SQL ServerAgent-Dienst beim Setup zugewiesen wird. Sie
ersetzt nicht das Konto, unter dem der Dienst
ausgeführt wird. Die Einstellung
"NETZWERKDIENST" bleibt bestehen, sofern sie
nicht von der Person geändert wird, die
SQL Server installiert. Die SID wird verwendet,
wenn der Dienst eine Verbindung mit SQL Server
herstellt. Das Konto wird verwendet, wenn der
Dienst eine Verbindung mit einer
Remoteressource herstellt, beispielsweise mit
einer Dateifreigabe, um Protokolle zu speichern.
Tabelle 2: sysadmin-Prinzipale, die unter den Betriebssystemen Windows Vista und
Windows Server 2008 zugewiesen werden
32
Bei der Installation von SQL Server unter anderen Betriebssystemen als Windows Vista oder
Windows Server 2008 werden der Rolle sysadmin die folgenden Konten hinzugefügt.
Konto
NT-AUTORITÄT\NETZWERKDIENST
Zweck
Dieses Konto wird standardmäßig den SQL
Server- und SQL Server-Agent-Diensten
zugewiesen. Dieses Konto wird für den Zugriff
auf SQL Server und die dazugehörigen
Ressourcen verwendet. Es wird empfohlen,
ein Windows-Benutzerkonto zu verwenden.
Hierdurch wird das Risiko begrenzt, dass ein
anderer Dienst, der dieses Konto verwendet,
auf SQL Server zugreifen kann. Beim
Verwenden eines Windows-Kontos besteht
das Risiko, dass der Dienst nicht mehr
verwendet werden kann, wenn das
Kontokennwort geändert wird und diese
Änderung nicht auf der Registerkarte
Anmelden der Diensteigenschaftenseite
widergespiegelt wird.
localhost\SQLServer2005MSSQLUser$
Diese Windows-Gruppe wird verwendet, um
localhost$MSSQLSERVER
Benutzer zu definieren, die Zugriff auf
SQL Server benötigen.
localhost\SQLServer2005SQLAgentUser Diese Windows-Gruppe wird verwendet, um
$localhost$MSSQLSERVER
Benutzer zu definieren, die Zugriff auf den
SQL Server-Agent benötigen.
Tabelle 3: sysadmin-Prinzipale, die früheren Versionen von Windows zugewiesen sind
Hinweis:
In dieser Tabelle stellt "localhost" den Namen des Computers dar.
Zuweisung von Dienst-SIDs unter Windows Vista und Windows Server 2008
Windows Vista und Windows Server 2008 bieten die Möglichkeit, den Diensten eine
ausgeblendete SID zuzuweisen. Beim SQL Server 2008-Setup wird den SQL Server- und
SQL Server-Agent-Diensten eine separate SID zugewiesen. Das Konto, das den Diensten
zugewiesen wird, wird noch benötigt, um den Dienst zu starten und auf externe Ressourcen
zuzugreifen. Wenn die Dienste jedoch auf SQL Server und lokale Ressourcen zugreifen,
beispielsweise Dateien und Registrierungseinträge, werden ihre entsprechenden SIDs
verwendet.
Verwenden der Gruppe "VORDEFINIERT\Administratoren"
Vor der Veröffentlichung von SQL Server 2008 waren die Mitglieder der Gruppe
"VORDEFINIERT\Administratoren" auch Mitglied der Rolle sysadmin in SQL Server. Bei
Installationen unter Windows Vista oder Windows Server 2008 werden die Mitglieder der
Gruppe "Administratoren" jedoch als Standardbenutzer ausgeführt und können daher nicht
auf SQL Server zugreifen. Natürlich könnten diese Benutzer ihre Token auf Administrator
heraufstufen, um auf SQL Server zuzugreifen. Dies ist jedoch nicht empfehlenswert.
SQL Server 2005 SP2 wird mit einem Kontobereitstellungstool ausgeliefert, das
Administratoren das Hinzufügen ihrer Windows-Konten zur Rolle sysadmin erlaubt.
33
In SQL Server 2008 wird die Gruppe "VORDEFINIERT\Administratoren" nicht der Rolle
sysadmin hinzugefügt. Zudem steht das Kontobereitstellungstool nicht zur Verfügung. Beim
Setup kann der Rolle sysadmin jedoch ein Windows-Konto hinzugefügt werden. Nach dem
Setup können dem Konto sysadmin bei Bedarf zusätzliche Windows-Konten hinzugefügt
werden. Es wird empfohlen, der Rolle sysadmin keine Windows-Gruppen hinzuzufügen, da
hierdurch jede Person, die Lese-/Schreibzugriff für die Gruppe besitzt, auf SQL Server
zugreifen kann.
Identitätsverwaltung mit Multi-Tier-Anwendungen
In vielen Anwendungen wird den Benutzern mithilfe eines Kontos, das speziell für die
Anwendung erstellt wurde, Zugriff auf die Datenbank gewährt. Dieser Entwurf verhindert den
direkten Zugriff auf die Datenbank und rationalisiert die Verwaltung. Der Nachteil ist jedoch,
dass nicht verfolgt werden kann, welcher Benutzer bestimmte Vorgänge ausführt. Durch
Verwenden eines Dienstkontos mit der Berechtigung IMPERSONATE wird es Anwendungen
gestattet, den Befehl EXECUTE AS zu verwenden, um dem Benutzer eine bestimmte Rolle
zuzuweisen und dadurch die vom Benutzer ausführbaren Vorgänge zu beschränken. Sie
können das Konto deaktivieren, dessen Identität angenommen wird, um die
Benutzeranmeldung zu verhindern, aber gleichzeitig das Nachverfolgen der Benutzer mit
feinerer Granularität erlauben.
34
Verschlüsseln von Datenbankdaten
Der Schutz sensibler Daten ist bei Datenbankvorgängen ein wichtiger Aspekt. SQL Server
2008 stellt mehrere Möglichkeiten zum Schutz sensibler Daten mithilfe von Verschlüsselung
bereit. In diesem Abschnitt wird die Verwendung der Verschlüsselung in SQL Server
behandelt und erläutert, welche besonderen Erwägungen zu berücksichtigen sind. Weitere
Informationen, einschließlich Skripts zum Verwalten der richtlinienbasierten Verwaltung,
finden Sie unter Verwalten von Verschlüsselungsschlüsseln.
SQL Server-Datenbankverschlüsselung
Ab SQL Server 2005 steht die systemeigene Verschlüsselung für Datenbankanwendungen
zur Verfügung. Davor konnten Anwendungen nur mithilfe der CAPICOM-Funktionen von
Windows eine eigene Verschlüsselung bereitstellen. Weitere Informationen zum Verwenden
der SQL Server-Verschlüsselung finden Sie unter SQL Server-Verschlüsselung.
Auswählen eines Verschlüsselungsalgorithmus
Bei der Auswahl eines Verschlüsselungsalgorithmus wird normalerweise zwischen dem
Schutzgrad und der Leistungsstufe abgewogen. Im Allgemeinen bieten
Verschlüsselungsschlüssel einen stärkeren Schutz, die Ausführung nimmt jedoch mehr Zeit
in Anspruch. Die Ausführung ist bei asymmetrischen Schlüsseln zwar langsamer als bei
symmetrischen Schlüsseln, dafür bieten sie aber einen stärkeren Schutz, und die
Verschlüsselung ist nicht freigegeben. Beim Verwenden eines Zertifikats ist die Sperrung
erlaubt, aber SQL Server unterstützt die Sperrung nicht, es sei denn, das Zertifikat wird lokal
gelöscht. Weitere Informationen zum Auswählen eines Algorithmus finden Sie unter
Auswählen eines Verschlüsselungsalgorithmus.
Verwenden der transparenten Datenverschlüsselung
Mit SQL Server 2008 wurde die transparente Datenverschlüsselung eingeführt, um die
Verschlüsselung von Datenbankdaten zu erlauben, ohne Anwendungen ändern zu müssen.
Bei der transparenten Datenverschlüsselung werden Datendateien, Protokolldateien und
Sicherungen verschlüsselt.
35
Abbildung 14 zeigt die Vorgänge, die beim Implementieren der transparenten
Datenverschlüsselung berücksichtigt werden müssen:




Der private Zertifikatschlüssel muss unbedingt gesichert werden.
Zertifikate und Schlüssel müssen regelmäßig gewechselt (rotiert) werden, so wie dies die
Vorschriften vorsehen.
Verwenden Sie die erweiterbare Schlüsselverwaltung für einen stärkeren Schlüsselschutz
und Aufgabentrennung.
Überwachen Sie den Schlüssel- und Verschlüsselungszugriff.
Abbildung 14: Verwalten von Schlüsseln für die transparente Datenverschlüsselung
Sichern des privaten Schlüssels des Zertifikats
Der Verschlüsselungsschlüssel für eine Datenbank, die mit der transparenten
Datenverschlüsselung verschlüsselt wurde, wird in der Datenbank gespeichert und mit einem
Zertifikat geschützt. Der private Zertifikatschlüssel muss unmittelbar nach der
Zertifikaterstellung und noch vor dessen Verwendung in Verbindung mit der transparenten
Datenverschlüsselung gesichert werden. Wenn das Zertifikat aus einem bestimmten Grund
zerstört wurde, bevor das Zertifikat gesichert werden konnte, können alle mit der transparenten
Datenverschlüsselung geschützten Datenbanksicherungen nicht mehr wiederhergestellt
werden. Das folgende Skript kann zum Sichern eines Zertifikats verwendet werden.
USE master
BACKUP CERTIFICATE [MyServerCert] TO FILE =
'c:\certificates\MyServerCert.crt'
WITH PRIVATE KEY (FILE = 'c:\certificates\MyServerCert.pvk',
ENCRYPTION BY PASSWORD = 'MyPass7779311#');
36
Zertifikatsicherungen sollten an einem sicheren Ort gespeichert werden. Sie können auf
einem Datenträger gespeichert und in einem Safe aufbewahrt oder in eine sekundäre
Datenbank mit eingeschränktem Zugriff importiert werden.
Rotieren von Zertifikaten oder Rotieren von Schlüsseln
Viele Vorschriften sehen vor, dass die Verschlüsselungsschlüssel in Organisationen
regelmäßig gewechselt (rotiert) werden. Die Zertifikate der transparenten
Datenverschlüsselung und die Datenbankverschlüsselungsschlüssel können mithilfe von
Skripts turnusmäßig gewechselt werden. Möglicherweise ist der erste Gedanke, den
Datenbankverschlüsselungsschlüssel zu wechseln. Das Rotieren des Zertifikats erfüllt jedoch
eher den Zweck der Richtlinie. Durch Rotieren von Zertifikaten kann der Schutz aktualisiert
werden, ohne die Datenbank erneut verschlüsseln zu müssen. Zudem kann hierdurch der
Zugriff auf verschlüsselte Daten auf einfache Weise aufgehoben werden. Beim Rotieren des
Datenbankverschlüsselungsschlüssels werden die Daten erneut verschlüsselt, aber hierdurch
wird kein zusätzlicher Schutz bereitgestellt, so wie es die Richtlinie beabsichtigt.
Wenn beispielsweise 100 Datenbanksicherungsbänder mithilfe von 100 verschiedenen
Verschlüsselungsschlüsseln erstellt wurden, kann weiterhin mit einem einzelnen Zertifikat auf
alle Sicherungsbänder zugegriffen werden. Wenn die Zertifikate zwischen den Sicherungen
gewechselt werden, wäre ein Zugriff auf jedes der 100 Zertifikate erforderlich, um die
verschlüsselten Daten von den Bändern abzurufen.
Bei jeder Neuerstellung eines Zertifikats muss es aus Gründen der Redundanz gesichert
werden. Die Sicherung kann mithilfe von Skripts ausgeführt werden. Die gesicherten
Zertifikate sollten sofort in eine sichere Datenbank importiert werden. Anschließend sollte die
Kopie zerstört oder an einem sicheren Ort gespeichert werden. Sie können einen Auftrag
erstellen, um die Schlüssel turnusmäßig zu wechseln. Mithilfe der richtlinienbasierten
Verwaltung kann sichergestellt werden, dass Zertifikate oder Schlüssel in einem bestimmten
Turnus gewechselt werden.
Hinweis:
Um verschlüsselte Sicherungen, Momentaufnahmen oder Protokolleinträge
wiederherzustellen, muss der Zugriff auf das zur Verschlüsselung verwendete
Zertifikat möglich sein. Zu diesem Zweck muss eine Zertifikatkopie erstellt und
geschützt werden, um einen unerwünschten Zugriff auf sensible Daten zu
vermeiden.
Überwachen des Schlüsselzugriffs
Der Zugriff auf Verschlüsselungsschlüssel ist ein sensibler Vorgang. Das Überwachen dieses
Zugriffs kann als Risiko mindernde Kontrolle für PCI-DSS (Payment Card Industry Data
Security Standard) und andere Vorschriften und Verordnungen verwendet werden. Schlüssel
und Zertifikate für die transparente Datenverschlüsselung werden in der Benutzerdatenbank
bzw. in der master-Datenbank gespeichert. Der Zugriff auf diese Objekte kann mithilfe einer
Serverspezifikation überwacht werden, die die Überwachungsaktionstypen
DATABASE_OBJECT_ACCESS_GROUP und DATABASE_OBJECT_CHANGE_GROUP
zum Überwachen von Schlüsselzugriffen bzw. Änderungen umfasst. Diese Aktionen sollten
37
lediglich eine geringfügige Protokollierung in Produktionsdatenbanken auslösen, da nur sehr
wenige Objekte überwacht werden, die in der Produktion selten geändert werden. Im
Folgenden finden Sie eine Liste der Datenbankobjekte:
•
•
•
•
•
•
•
•
•
•
•
Assembly
Asymmetrischer Schlüssel (nur privater Schlüssel)
Zertifikat (nur privater Schlüssel)
Datenbank-Überwachungsspezifikationen (nur Änderungen)
Volltextkatalog
Volltextstoppliste (nur SQL Server 2008)
Partitionsfunktionen (nur Änderungen)
Schema (nur Änderungen)
Service Broker-Objekte
o Vertrag
o Nachrichtentyp
o Remotedienstbindung
o Route
o Dienst
Symmetrischer Schlüssel
Trigger (nur Änderungen)
Überwachen des Verschlüsselungsflags für die Datenbank
Nachdem der Verschlüsselungsschlüssel eingerichtet wurde, um die transparente
Datenverschlüsselung für eine Datenbank zu ermöglichen, muss auch das
Verschlüsselungsflag aktiviert werden. Dieses Flag sollte überwacht werden, um
sicherzustellen, dass der Schutz der Datenbank aufrechterhalten bleibt. Um das
Verschlüsselungsflag für eine Datenbank zu überwachen, sollte der Überwachungsaktionstyp
DATABASE_CHANGE_GROUP einer Serverüberwachungsspezifikation hinzugefügt werden.
Behandeln von spezifischen Szenarien
SQL Server 2008 stellt mehrere Optionen zum Schützen von sensiblen Daten bereit. Die
gewählte Option hängt vom gewünschten Schutzgrad, der Möglichkeit zur
Anwendungsänderung, der Leistung und von anderen Faktoren ab. Bei der Auswahl eines
Schutzmechanismus sollten Sie das Szenario berücksichtigen, für das Sie Schutz
bereitstellen möchten.
Absichern gegen den Diebstahl eines Computers
Das verschlüsselnde Dateisystem (Encrypting File System, EFS) von Windows, die
BitLocker-Laufwerkverschlüsselung von Windows und die transparente
Datenverschlüsselung können gemeinsam oder einzeln verwendet werden, um die in Dateien
gespeicherten Datenbankdaten zu schützen, falls ein Computer gestohlen wird. EFS und
BitLocker™ erlauben allen Personen, die einen Administratorzugriff auf das Computersystem
besitzen, die Datenbankdatei außerhalb von SQL Server anzuzeigen. Mit EFS und BitLocker
können nur Dateien geschützt werden, die sich in einem geschützten System befinden. Das
Verwenden von EFS und BitLocker kann zu einer Beeinträchtigung der Datenbankleistung
38
führen. Wenn eine Datei auf ein ungeschütztes Volume kopiert wird, ist die Verschlüsselung
nicht mehr vorhanden. Die transparente Datenverschlüsselung schützt eine Datei auch dann,
wenn diese in ein anderes System kopiert oder auf Band gesichert wird. Weitere
Informationen zum Verwenden der transparenten Datenverschlüsselung im Vergleich zu
BitLocker oder EFS finden Sie unter Datenbankverschlüsselung in SQL Server 2008
Enterprise Edition.
Verhindern des Zugriffs durch Systemadministratoren und Datenbankbesitzer
Der Systemadministrator und der Datenbankbesitzer können nicht am Anzeigen von
Tabellendaten gehindert werden. Die Mitglieder der Rollen sysadmin
(Systemadministratoren) und db_owner (Datenbankbesitzer) können jedoch deaktiviert
werden, um so das Sicherheitsrisiko zu entschärfen. Gespeicherte Prozeduren können
verwendet werden, um Vorgänge auszuführen, die auf die Rolle sysadmin beschränkt sind.
Weitere Informationen finden Sie unter Einschränken der Verwendung der Rolle "sysadmin".
Wenn es notwendig ist, dem Systemadministrator oder Datenbankbesitzer Zugriff zu
erteilen, können die Aktionen dieser Benutzer mithilfe von SQL Server Audit verfolgt werden.
Weitere Informationen finden Sie unter Verfolgen des sysadmin- und db_owner-Zugriffs.
Schützen einer Spalte in einer Datenbanktabelle
Häufig besteht der Wunsch, eine einzelne Spalte in einer Tabelle zu schützen, die
vertrauliche Daten enthält, beispielsweise Kreditkartennummern. SQL Server 2008 stellt
hierfür mehrere Möglichkeiten bereit. Die Spalte könnte mit einer Kryptografiefunktion
verschlüsselt werden. Weitere Informationen finden Sie unter Vorgehensweise:
Verschlüsseln einer Datenspalte. Dieser Mechanismus erfordert Änderungen an der
Anwendung, verhindert die Suche und Indizierung und wirkt sich negativ auf die Leistung
aus. Spaltendaten können auch mithilfe der Sicherheit auf Spaltenebene geschützt werden,
die weiter oben in diesem Dokument im Abschnitt Berechtigungen auf Spaltenebene
behandelt wurde.
39
Überwachen sensibler Vorgänge
In diesem Abschnitt wird erläutert, wie sensible Vorgänge mithilfe von SQL Server Audit
überwacht werden können. Mit SQL Server Audit können Datenbankereignisse mithilfe von
Überwachungsaktionsgruppen auf einer hohen Ebene oder mithilfe von
Überwachungsaktionen auf einer differenzierten Ebene überwacht werden. Eine Liste der
Überwachungsaktionsgruppen und Überwachungsaktionen finden Sie hier. Skripts zum
Verwalten der Überwachung und zum Erstellen verschiedener Überwachungselemente
finden Sie weiter unten in diesem Abschnitt unter Verwalten der Überwachung.
Anhand eines Beispiels wird das Zentralisieren der Sammlung von Überwachungsprotokollen
mithilfe von System Center Operations Manager sowie mithilfe einer Netzwerkfreigabe
erläutert. Es wird ein Skript bereitgestellt, das veranschaulicht, wie SQL Server Integration
Services (SSIS) und SQL Server Reporting Services (SSRS) (siehe Abbildung 15) zum
Entwickeln von sich wiederholenden Berichten verwendet werden.
Abbildung 15: Zentralisieren von Überwachungsprotokollen und Berichterstellung
SQL Server Database Servers
Process Audit Information
Use SQL Server Integration Services to process SQL Server 2008 audit log data
and store in its own SQL Server database.
SSIS
SQL Server
database
SQL Server
database
Transfer Logs
SQL Audit
File Server
SQL Server
database
SQL Server
database
po
Re
e
rat
ne
e
G
rts
SSRS
Compliance Reports
Von einer höheren Perspektive aus betrachtet basiert die Architektur zum Überwachen
sensibler Vorgänge auf folgenden Schritten: Aktivieren der Überwachung der verschiedenen
Datenbanken und Server und Platzieren dieser Protokolldateien an einem zentralen Ort (dies
40
ist in Abbildung 15 der Protokollordner). Von diesem Ort aus können Sie (z. B. mithilfe von
SQL Server Integration Services) eigene Prozesse entwickeln, um die
Überwachungsprotokolle in aussagekräftige Berichte zu verwandeln.
Sammeln von Protokollen
Das SQL Server Audit-Objekt kann so konfiguriert werden, dass Protokolle in einer Datei
gespeichert werden. Das Senden von Protokollen an eine Remotefreigabe ist das
empfohlene Verfahren zum Speichern von Protokollen. Auf diese Weise werden sie der
Kontrolle des Serveradministrators entzogen und können mit Protokollen von anderen
Servern konsolidiert werden. Dem Ordner, in dem die Protokolle gespeichert werden, muss
vom SQL Server-Dienst Schreibzugriff erteilt werden. Standardmäßig wird der Dienst unter
dem Netzwerkdienstkonto ausgeführt. Beim Verwenden eines Dienstkontos besteht das
Risiko, dass jeder Dienst, der unter dem Konto ausgeführt wird, auf den Ordner mit den
Protokollen zugreifen und die Protokolldateien überschreiben kann. Um dieses Risiko zu
reduzieren, kann ein Benutzerkonto verwendet werden. Wenn das Benutzerkonto jedoch
deaktiviert wird oder das Kennwort geändert und das aktualisierte Kennwort nicht an die
unter diesem Konto ausgeführten Dienste weitergegeben wird, kann der SQL Server-Dienst
nicht gestartet werden.
Übertragen von Protokollen
Um das Risiko des Überschreibens von Protokollen zu minimieren, können die Protokolle aus
der Datei in eine private Datenbank verschoben werden. Sobald sich die Protokolldateien in
der Datenbank befinden, können nur Benutzer mit Datenbankzugriff auf die Protokolle
zugreifen. Möglicherweise halten es einige Prüfer jedoch für bedenklich, dass Protokolle
geändert werden können, nachdem sie in einer Datenbanktabelle gespeichert wurden.
Mithilfe von SSIS kann ein Paket erstellt werden, das die Protokolle aus der Protokolldatei in
eine Datenbanktabelle verschiebt. Das Paket kann in einen Auftrag geladen werden, der
mithilfe des SQL Server-Agents erstellt wird und dazu dient, das Paket regelmäßig
auszuführen. Hierdurch kann das Risiko des Überschreibens von Protokollen in der
Protokolldatei minimiert werden.
Verwenden von Skripts und Tools zum Verwalten der Überwachung
Nachdem Sie die Überwachung für Datenbanken aktiviert haben, steht Ihnen eine Fülle von
Informationen in Form von Überwachungsprotokollen zur Verfügung. In diesen Protokollen
werden in kurzer Zeit viele Informationen gespeichert. Daher sollten Sie gezielt überlegen,
wie Sie Überwachungsprotokolle sinnvoll nutzen können. Dies können Sie am einfachsten
erreichen, indem Sie die Überwachungsdaten in eine SQL Server-Datenbank laden, um in
dieser Datenbank Abfragen auszuführen. Anhand der Ergebnisse dieser Abfragen können
Sie die Vorgänge in der SQL Server-Umgebung besser verstehen.
41
Der grundlegende Datenfluss bei der Verarbeitung der Überwachungsprotokolle wird in
Abbildung 16 veranschaulicht.
Abbildung 16: GRC-Beispiel
Read Logs
Add
Import Id
Manage/
Load
Dimensions
Split Facts
Count Rows
Store File
Information
Load Facts
1) Protokolle lesen: Sie benötigen einen Mechanismus, um
Überwachungsprotokolldateien zu lesen und die Daten zu filtern und je nach
Anforderung zu transformieren.
2) Import-ID hinzufügen: Um feststellen zu können, welche
Überwachungsprotokolldateien verarbeitet wurden, identifizieren Sie im ETL-Prozess
die verarbeiteten Dateien und weisen ihnen eine Import-ID zu. Auf diese Weise
können Sie allen importierten Überwachungsereignissen eine Import-ID zuordnen.
Mithilfe dieser Zuordnung können Sie die Dateien ermitteln, aus denen die jeweilige
Überwachung stammt.
3) Dimensionen verwalten/laden: Es gibt Textbeschreibungen für verschiedene
Überwachungsereignisse sowie zugeordnete Domänencodes (z. B.
Überwachungskategorien und Sicherheitsklasse). Um die Größe der
Überwachungsdatenbank zu reduzieren, verknüpfen Sie die Dimensions-IDs mit der
Überwachungsereignis-Faktentabelle und verwalten eine separate Dimensionstabelle,
die die Dimensions-ID mit dem Dimensionsnamen übersetzt.
4) Fakten teilen/Fakten laden: Dies erfüllt den Zweck, alle Daten zu transformieren,
damit die Überwachungsereignis-Faktentabellen anstelle von Textwerten (wie jeweils
anwendbar) IDs enthalten, um den Speicherbedarf zu minimieren. Die Schritte 3 und
4 bieten für das Unternehmen den Vorteil, dass die Überwachungsberichte bei der
Erstellung nach den angegebenen Kategorien angezeigt werden können.
5) Zeilen zählen/Dateiinformationen speichern: Um den Mechanismus der
Überwachungsverarbeitung zu überwachen, muss sichergestellt werden, dass die
Überwachungsdateien verarbeitet wurden (daher die Aktion "Dateiinformationen
speichern"). Die Zeilen werden gezählt, um einen weiteren Datenüberprüfungsschritt
bereitzustellen, der sicherstellt, dass die Anzahl von Zeilen in der Datenbank mit der
Anzahl von Zeilen in den Überwachungsprotokolldateien übereinstimmt.
Weitere Informationen finden Sie unter Überwachungsprojekt.
42
Überwachen bestimmter Benutzer und Tabellen
SQL Server Audit erlaubt das Überwachen auf mehreren Granularitätsebenen. Da beim
Überwachen aller Datenbankvorgänge eine große Anzahl von Protokollen gesammelt wird,
ist es im Allgemeinen nahezu unmöglich, diese zu verarbeiten. Zudem kann hierdurch der
Speicherplatzbedarf enorm ansteigen und die Netzwerkleistung merklich beeinträchtigt
werden. Um dieses Problem zu beheben, stellt SQL Server Audit ein Verfahren zum
Überwachen bestimmter Ressourcen (z. B. Benutzer, Gruppen oder Tabellen) und
bestimmter Aktionen (SELECT, UPDATE oder EXECUTE) bereit. In den folgenden
Abschnitten werden diese Funktionen ausführlicher beschrieben.
Überwachen bestimmter Benutzer
Wenn Sie garantieren können, dass Ihre Umgebung sicher ist (z. B. können nur Mitglieder
der Rolle sysadmin Schema- und Datenänderungsaufgaben ausführen, und alle anderen
Benutzer können nur Daten lesen), haben Sie die Möglichkeit, nur den Benutzer sysadmin
zu überwachen. Hierbei wird jedoch vorausgesetzt, dass die vorhandenen
Sicherheitsrichtlinien alle zu berücksichtigenden Aspekte abdecken und dass autorisierte
Benutzer keine Fehler machen. Dies ist ein gängiger Ansatz in vielen
Produktionsumgebungen. Wenn die obigen Annahmen zutreffen, müssen Sie ggf. nur die
vom Benutzer sysadmin durchgeführten Aktionen überwachen, sodass er bei einem Verstoß
zur Rechenschaft gezogen werden kann.
Aber in vielen anderen Szenarien müssen Sie viel mehr Benutzer überwachen, da diese
Benutzer Daten in das System einfügen oder Systemdaten aktualisieren oder ändern können.
Im Idealfall ist nur der Benutzer sysadmin berechtigt, die Schemas und Objekte in der
Umgebung zu ändern, aber in diesem Fall müssen Sie dennoch die Benutzer überwachen,
die Datenänderungen vornehmen dürfen.
Letztendlich können Sie auch einfach die Überwachung aktivieren und jeden einzelnen
Benutzer überwachen, wenn Sie es aus geschäftlicher Perspektive für sinnvoll halten. Wenn
Sie sich jedoch für diese umfassende Überwachung entscheiden, füllen sich die
Überwachungsprotokolle in kurzer Zeit, da alle Aktivitäten – auch rechtmäßige –
aufgezeichnet werden. Dieser Ansatz eignet sich beispielsweise für das Gesundheitswesen.
Dort müssen alle Benutzer überwacht werden, die auf eine Datenbank zugreifen, auch wenn
sie nur eine Datenleseanforderung ausführen. Dies ist in den Richtlinien zur HIPAAEinhaltung (Health Information Portability and Accountability Act) vorgeschrieben. Sie können
die Überwachung aller Benutzer auch beibehalten, wenn Sie der Ansicht sind, dass ihre
Sicherheitsrichtlinien nicht alle Möglichkeiten abdecken. So können Sie mögliche
Hackerangriffe auf das System erkennen (z. B. Angriffe durch Einschleusung von SQLBefehlen). Wenn diese detaillierte Überwachung in Ihrem Szenario jedoch nicht erforderlich
ist, kann die Überwachungsprotokolllast reduziert werden, indem nur die Benutzer überwacht
werden, die das Schema der Datenbank (z. B. sysadmin) oder Daten in der Datenbank
ändern können.
43
Überwachen bestimmter Tabellen
Genauso wie es Benutzer gibt, deren Aktionen nicht überwacht werden müssen, gibt es auch
einige Tabellen im System, die nicht überwacht werden müssen. Angenommen, Sie haben
die Sicherheitsberechtigungen so festgelegt, dass nur die Daten in einer kleinen Gruppe von
Tabellen geändert werden können. In diesem Fall ist es sinnvoll, die Anzahl aufgezeichneter
Überwachungsereignissen zu beschränken, indem nur die Tabellen, die geändert werden
können, überwacht werden.
Dann wiederum gibt es einige Szenarien, in denen zwar alle Aktionen überwacht werden
müssen, die Berichterstattung aber nur für die Tabellen erforderlich ist, die Sie als sensibel
ansehen. Auf diese Weise können Sie zwischen Ihren Berichterstattungsanforderungen und
der Anforderung zum Speichern sämtlicher Überwachungsinformationen zur Einhaltung von
Vorschriften differenzieren. Zur Umsetzung dieser Differenzierung verweist die
Verarbeitungspipeline auf eine Konfigurationstabelle oder -datei, in der angegeben ist,
welche Tabellen in die Verarbeitung einbezogen oder von der Verarbeitung ausgeschlossen
werden sollen.
Verfolgen des sysadmin- und db_owner-Zugriffs
Häufig ist es so, dass bei Benutzern mit weit reichenden Berechtigungen ein höherer
Überwachungsbedarf besteht als bei Benutzern mit eingeschränkten Berechtigungen. SQL
Server Audit vereinfacht das Verfolgen von Mitgliedern der Rollen sysadmin und db_owner
auf einer differenzierteren Ebene. Beim Erstellen von Überwachungsaktionen für eine
Datenbank wird durch Zuweisen von "db_owner" als Prinzipalname die Nachverfolgung der
Mitglieder der Datenbankrolle db_owner sowie der Mitglieder der Serverrolle sysadmin
veranlasst, da Mitglieder von sysadmin als dbo (Datenbankbesitzer) zugeordnet werden,
und dieser ist immer Mitglied der Rolle db_owner. Das folgende Skript veranschaulicht dies
anhand eines Beispiels.
USE [Test1]
ALTER DATABASE AUDIT SPECIFICATION [AuditDBO]
ADD (SELECT ON [dbo].[CCTable1] BY [dbo])
Zentralisieren von Protokollen
Wenn Sie nur jeweils einen Server überwachen, macht das Zentralisieren von
Protokolldateien keinen Sinn. In den meisten Fällen arbeiten Sie jedoch mit einer großen
Anzahl von Servern und müssen mit dem Zustrom vieler Überwachungsprotokolle zurecht
kommen. Aus diesem Grund besteht der optimale Ansatz darin, die erstellten
Überwachungsprotokolle an einem zentralen Ort zu speichern. Dies bietet aus Sicht der
Verwaltbarkeit den Vorteil, dass Sie einfach auf einen zentralen Ort zugreifen können, wenn
Sie die Überwachungsprotokolle prüfen möchten, und diese Informationen nicht von jedem
einzelnen Server abrufen müssen. Bei Bedarf können Sie separate Repositorys (Ordner)
verwenden, die auf einer Geschäftslogik basieren. Das Verwenden eines zentralen Orts für
Überwachungsprotokolle vereinfacht jedoch das Speichern und Verwalten der Protokolle.
44
Im Zusammenhang mit dem Zentralisieren von Überwachungsprotokollen sollten Sie auch
die Verarbeitung zentralisieren. Bei einer zentralisierten Verarbeitung verwenden Sie einen
Satz dedizierter Server, die auf den zentralen Ort für die Protokolldateien ausgerichtet und für
die Verarbeitung der Überwachungsprotokolle zuständig sind. Bei diesem Ansatz stören sich
Datenquellenaktionen und Überwachungsaktionen (Verarbeiten und Abfragen) nicht
gegenseitig. Ein gängiger Ansatz ist beispielsweise, die Protokolldateien so zu konfigurieren,
dass sie bei einer Größe von 100 MB geteilt werden. Sie können hierbei auch eine etwas
höhere Dateigröße konfigurieren, damit nicht zu viele Dateien verwaltet werden müssen.
Beachten Sie jedoch, dass die Protokolldateien nicht so groß sein sollten, da in diesem Fall
die Verarbeitung einer einzelnen Datei sehr lange dauert.
Bei einer zentralisierten Verarbeitung können Sie auch Berichte generieren, die es Ihnen
ermöglichen, die Überwachungsinformationen für die gesamte Umgebung von einem
zentralen Ort aus anzuzeigen.
Hinweis:
Der einzige Nachteil beim Zentralisieren der Protokolle ist die mögliche
Leistungsbeeinträchtigung. Wenn Sie viele Ereignisse überwachen müssen
(beispielsweise in HIPPA-Szenarien, wo jeder Benutzer und jede Tabelle
überwacht wird), müssen umfangreiche Datenmengen ausgewertet werden. Das
Überwachungsprotokolldatei verhält sich hierbei ähnlich wie ein
Transaktionsprotokoll, und ein einzelner Dateiserver, der Daten über ein
langsames 100-MB-Netzwerk überträgt, kann möglicherweise nicht Schritt halten,
sodass der Abfragedurchsatz beeinträchtigt wird.
Erstellen von Berichten aus Protokolldateien
In diesem Abschnitt werden die verschiedenen Überwachungsberichte erläutert, damit Sie
die Ereignisse verstehen, die in der gesamten SQL Server-Umgebung auftreten. Im Abschnitt
Nützliche Tipps und Skripts werden verschiedene Möglichkeiten (mit zunehmender
Komplexität) zum Interpretieren der Überwachungsprotokolldateien bereitgestellt. Hierbei
handelt es sich um Beispiele für allgemeine Berichte, die Sie ggf. erstellen können, um das
System besser zu verstehen. Die Berichte sind nach dem Typ der Aktion unterteilt: Server,
Datenbank, Datenbankdefinitionssprache (DDL) und Datenbearbeitungssprache (DML).
45
Übersicht – Serveraktionen
Dieser Bericht gibt ihnen eine tägliche Übersicht über alle Ereignisse, die auftreten, geordnet
nach Serverinstanz, Datenbankprinzipal, Datenbank, Aktionsklasse und Aktion.
Abbildung 17: Bericht über Serveraktionen
Trendanalyse der Serveraktionen
Wenn Sie hier einen Bereich von Datumsangaben hinzufügen, können Sie feststellen, dass
eine große Anzahl von Anmeldungen erfolgreich war. Sie können jedoch auch sehen, dass
einige Massenverwaltungen und Anmeldungen gescheitert sind. Ein weitere Analyse zeigt ein
interessantes Muster bei den gescheiterten Anmeldungen. Wir haben den Bericht
"Serveraktionen - Übersicht" für den Zeitraum vom 19.08.2008 bis 21.08.2008 betrachtet und
uns nur auf die Aktion Fehler bei der Anmeldung konzentriert, wie Sie in Abbildung 18
sehen können.
Abbildung 18: Bericht "Trendanalyse der Serveraktionen"
46
In diesem speziellen Szenario gab es am 21.08.2008 mehr Anmeldefehler als an allen
anderen Tagen. Dies ist ein Beispiel für einen intelligenten Aggregatbericht, der
aussagefähige Informationen bereitstellt. In diesem Fall können anhand des Berichts
detaillierte Informationen darüber abgerufen werden, warum an diesen Tagen Anmeldungen
gescheitert sind.
Ausführen eines Drillthroughs zu den Serveraktionsdetails
Wenn wir zu Abbildung 17 zurückkehren, können wir auch einen Drillthrough zu den Details
dieses Berichts ausführen, um weitere Informationen zu diesen gescheiterten Anmeldungen
zu erhalten. In diesem Beispiel gab es 83 Anmeldefehler. Wenn Sie auf diese Zahl klicken,
werden detaillierte Informationen zu diesen Anmeldefehlern angezeigt.
Abbildung 19: Bericht über Serveraktionsdetails
47
Übersicht – Datenbankaktionen
Ebenso wie Sie einen Bericht über Serveraktionen anzeigen können, können Sie
Überwachungsereignisse nach der Anzahl der ausgeführten Datenbankaktionen anzeigen.
Wie Sie in Abbildung 20 sehen können, gibt es zwei Serverinstanzen, für die am 21.08.2008
drei bzw. vier Datenbankaktionen durchgeführt wurden.
Abbildung 20: Bericht über Datenbankaktionen
Ausführen eines Drillthroughs zu den Datenbankaktionen
Dieser Bericht zeigt, dass für die DataCollectionSPW-Datenbank drei GRANT-Aktionen und
für die master-Datenbank vier CREATE-Aktionen durchgeführt wurden. Wenn Sie einen
Drillthrough zu den Details ausführen (indem Sie auf die Zahl klicken), können Sie schnell
erkennen, dass es sich bei den CREATE-Anweisungen lediglich um RESTORE LABELONLYAnweisungen handelt, die von MYDOMAIN\Sql (Anmeldename) ausgeführt wurden.
Abbildung 21: Bericht über Datenbankaktionsdetails
Hinweis:
Wenn Sie eine Benutzerdatenbank sichern, benötigen Sie CREATEBerechtigungen für die master-Datenbank, um die Sicherungsmedien anzeigen
zu können. "CREATE-Berechtigung" ist eine unzutreffende Bezeichnung, da Sie
die Datenbank ja nicht erstellen, aber gleichwohl ist diese Berechtigung zum
Durchführen einer Sicherung erforderlich. Daher befinden sich in der folgenden
Überwachung RESTORE LABELONLY-Anweisungen.
48
Übersicht – DDL-Aktionen
Um zu verstehen, welche Datendefinitionen in Ihrer Umgebung vorgenommen wurden,
können Sie den Bericht Übersicht – DDL-Aktionen anzeigen, so wie in Abbildung 22
dargestellt. In diesem Fall gab es am 20.08.2008 für die angegebene Serverinstanz 44
DROP TABLE-Anweisungen für die SQLDBADMIN-Datenbank.
Abbildung 22: Bericht über Datenbank-DDL
Ausführen eines Drillthroughs zu den DDL-Aktionen
Um sicherzustellen, dass die DROP TABLE-Anweisungen gültig sind, können Sie einen
Drillthrough zu den einzelnen DDL-Aktionen ausführen. Sie liefern Informationen zu Uhrzeit,
Aktion, Objektname und der verwendeten DROP-Anweisung, sodass Sie die durchgeführten
Aktionen überprüfen können.
Abbildung 23: Bericht über Datenbank-DDL-Details
49
Übersicht – DML-Aktionen
Sie können sogar den Typ der DML-Anweisungen prüfen, die in der gesamten Umgebung
ausgeführt wurden. Dem Bericht Übersicht – DML-Aktionen können Sie entnehmen, dass
am 21.08.2008 vier DELETE-Anweisungen für die SQLDBADMIN-Datenbank durchgeführt
wurden.
Abbildung 24: Bericht über Datenbank-DML
Ausführen eines Drillthroughs zu den DML-Aktionen
Dieser Bericht stellt Details bereit, die Ihnen dabei helfen, die Gültigkeit jeder DML-Aktion
festzustellen. Wenn Sie auf "4" klicken, werden alle DELETE-Anweisungen sowie der
Serverprinzipalname des Benutzers angezeigt, der diese Anweisungen ausgeführt hat.
Abbildung 25: Bericht über Datenbank-DML-Details
50
Verwenden der richtlinienbasierten Verwaltung zum Definieren,
Bereitstellen und Überprüfen von Richtlinien
Bisher wurde in diesem SDK gezeigt, wie Sicherheit, Identität, Verschlüsselung und
Überwachung verwaltet werden, um gesetzliche Vorschriften oder Richtlinien einzuhalten. In
diesem Abschnitt werden Beispiele für die Verwendung der richtlinienbasierten Verwaltung
bereitgestellt, um zu überprüfen, ob jeder dieser Bereiche ordnungsgemäß entsprechend der
Richtlinie konfiguriert wurde.
Struktur der richtlinienbasierten Verwaltung
Die richtlinienbasierte Verwaltung bildet den Computer, die Datenbank und Datenbankobjekte
als hierarchische Struktur von verwalteten Zielen mit geschachtelten Zieltypen ab. Die
richtlinienbasierte Verwaltung erlaubt die Definition von Kategorien, die auf eine Gruppe von
Richtlinien zeigen. Jede Richtlinie umfasst eine einzelne Bedingung, die zum Überprüfen der
Richtlinie verwendet wird. Jede Bedingung enthält einen Ausdruck, der aus
Ausdrucksklauseln besteht. Jede Richtlinie kann auf eine Datenbank oder auf ein
Datenbankobjekt, z. B. Benutzer, Tabelle oder gespeicherte Prozedur, ausgerichtet sein. In
Abbildung 26 sehen Sie ein Diagramm dieser Konzepte. Weitere Informationen zu den
Kategorien, Ausdrücken, Facets, Richtlinien und Zielen der richtlinienbasierten Verwaltung
finden Sie unter Verwalten von Servern mit der richtlinienbasierten Verwaltung.
Sie können bei Bedarf einen eigenen Satz von Richtlinien definieren. Als Einstieg können Sie
den Satz von Richtlinien verwenden, der im Lieferumfang von SQL Server 2008 enthalten ist.
Eine Beschreibung der Richtlinien finden Sie hier.
Abbildung 26: Objekte der richtlinienbasierten Verwaltung und ihre Beziehungen
Category
Audit
Certificate
Policy
Policy
Policy
Condition
Condition
Condition
Expression 1
Expression 2
:
Expression n
Expression 1
Expression 2
:
Expression n
Expression 1
Expression 2
:
Expression n
Table
Target
Database
:
Server
51
Richtlinienbasierte Verwaltung – Beispiel
Um der richtlinienbasierten Verwaltung eine Gruppe datenbankbezogener Richtlinien
zuzuordnen, beginnen Sie mit dem Erstellen einer Kategorie, um den Bereich der
Vorschriften oder Richtlinien darzustellen, die im Unternehmen verwaltet werden sollen.
Erstellen Sie beispielsweise eine Kategorie namens PCI, wenn dies ein Standard ist, der im
Unternehmen befolgt werden soll. Erstellen Sie als Nächstes einen Satz von Richtlinien für
die richtlinienbasierte Verwaltung, um jede der gesetzlichen Richtlinien zu erfüllen, die Sie
automatisieren möchten und können. Definieren Sie die Bedingungen, die zum Überprüfen
der einzelnen Richtlinien erforderlich sind, und wenden Sie diese auf die Datenbanken an,
die dem PCI-Standard unterliegen. Abbildung 27 zeigt, wie die richtlinienbasierte Verwaltung
für PCI konfiguriert werden könnte.
Abbildung 27: Richtlinienbasierte Verwaltung – Beispiel
PCI
PCI DB1
PCI DB2
Access
Policy
Encryption
Policy
Key
Policy
Limit Access
Encrypt Data
Manage Keys
sa disabled
limit DB users
:
audit DB access
encryption enabled
keys rotated
keys copied
:
log key access
PCI DB3
Target
PCI DB4
log flag access
:
PCI DBn
Überwachen der Richtlinien der richtlinienbasierten Verwaltung
Jede Richtlinie der richtlinienbasierten Verwaltung kann überwacht werden, um die
Einhaltung der Richtlinie sicherzustellen. Eine Richtlinie kann auf Grundlage eines Zeitplans
überwacht werden oder nur bei einer Änderung des Ziels, für das die Richtlinie erstellt wurde,
jedoch nicht beides gleichzeitig. Beide Formen der Überwachung sind erforderlich, um
sicherzustellen, dass eine Richtlinie über einen bestimmten Zeitraum erzwungen wurde und
dass sich die Bedingungen zwischen den geplanten Prüfungen nicht geändert haben.
Erstellen Sie hierzu für jede gesetzliche Richtlinie, die durch die richtlinienbasierte
Verwaltung dargestellt werden soll, zwei Gruppen von Richtlinien.
Verwenden der richtlinienbasierten Verwaltung zur Einhaltung gesetzlicher
Bestimmungen
Vom Standpunkt der Kompatibilität aus können Sie mit den Funktionen "Nach Zeitplan" oder
"Bedarfsgesteuert" der richtlinienbasierten Verwaltung regelmäßige Integritätsprüfungen
durchführen, um festzustellen, wer oder was gegen die Richtlinien oder Best Practices
verstößt. Mit der Option Bei Änderung: Verhindern können Sie Benutzer daran hindern, die
52
Änderung tatsächlich vorzunehmen. Wenn Sie die Option Bei Änderung: Nur
protokollieren auswählen, darf die Änderung stattfinden, aber die Aktion wird protokolliert.
Erstellen eines Plans
Wie Sie das Erstellen von Richtlinien planen, hängt grundsätzlich von den
Geschäftsrichtlinien, Best Practices und den IT-Standards ab. Im Folgenden finden Sie einige
Beispiele für Richtlinien:
 Benennungskonventionen: Verwenden bestimmter Benennungskonventionen für
Datenbankobjekte (beispielsweise müssen gespeicherte Prozeduren der
Benutzeroberfläche das Präfix "usp" aufweisen).
 Keine Benutzerobjekte in Systemdatenbanken: Sicherstellen, dass keine
Benutzerobjekte aus Versehen in den master-, msdb- und tempDB-Datenbanken
gespeichert wurden.
 Datenbanksicherung ist aktuell: Aus betrieblichen Überlegungen kann es
notwendig sein, dass stets aktuelle Sicherungen (z. B. der letzten 24 Stunden)
vorhanden sind.
 Standarddatenbankeigenschaften: Mit dieser Richtlinie kann sichergestellt werden,
dass Datenbankeigenschaften wie "Automatische Verkleinerung" und "Automatisch
schließen" deaktiviert sind. Oder es kann sichergestellt werden, dass "Automatische
Vergrößerung" ordnungsgemäß konfiguriert ist, damit die Datenbankgröße nicht
ständig zunimmt und der Speicherplatz knapp wird.
 Dienstkonten überprüfen: Sicherstellen, dass Datenbankdienste, beispielsweise der
SQL Server-Agent, das richtige Dienstkonto verwenden.
 Anmeldestandards: In gemischten Umgebungen erstellen viele Anbieter
Anmeldenamen für ihre Anwendungen (z. B. aus zwei Zeichen bestehende
Anmeldenamen). Sie können auch Richtlinien entwickeln, die auf diesen Typ der
Erstellung prüfen.
 sysadmin-Überprüfung: Sicherstellen, dass der Serverrolle sysadmin die richtigen
Mitglieder zugewiesen sind und dass das sa-Konto deaktiviert ist.
Dies sind einige Beispiele für die Typen von Richtlinien, die Sie erstellen können. Wie Sie
sehen, sind die Möglichkeiten zahlreich und vielfältig. Um die Richtlinienerstellung jedoch
korrekt auszuführen, müssen Sie zunächst IT-Standards und Best Practices entwickeln und
verstehen. Darauf aufbauend müssen Sie die Typen von Richtlinien, die Sie bereitstellen
möchten, kategorisieren und nach Rang ordnen.
53
Kategorie
Rang
Vorgänge
1
Richtlinie
Sicherstellen, dass die
Datenbanksicherung aktuell ist
2
Sicherstellen, dass
Zertifikatsicherungen aktuell
sind
…
…
28
Sicherstellen, dass sich der
Datenordner auf Laufwerk "H:\"
befindet
Benennungskonventionen 1
Sicherstellen, dass der
Datenbankname weniger als
50 Zeichen umfasst
2
Sicherstellen, dass der
Datenbankname keine
Leerzeichen enthält
3
Sicherstellen, dass die
Datenbankrollen …
…
…
40
Sicherstellen, dass die Namen
der gespeicherten Prozeduren
nicht die Zeichenfolge "foo"
enthalten
Tabelle 4: Richtlinienrangfolge nach Kategorie
Ausführungsmodus
Nach Zeitplan
Nach Zeitplan
…
Bedarfsgesteuert
Nach Zeitplan
Nach Zeitplan
Bei Änderung:
Verhindern
…
Bedarfsgesteuert
Entwickeln Sie eine Tabelle mit möglichen und vorhandenen Richtlinien, die Sie bei der
Planung der Richtlinienstrategie heranziehen können. In dieser Tabelle ist aufgeführt, welche
Richtlinien bereits erstellt wurden. Anhand dieser Informationen können Sie unnötige
Richtlinien vermeiden und sicherstellen, dass Richtlinien nicht in Konflikt stehen oder sich
überschneiden. Außerdem hilft Ihnen die Tabelle dabei, neue Richtlinien zu identifizieren und
zu priorisieren.
Welche Richtlinien möchten Sie basierend auf dem Plan erstellen?
Wie oben angegeben, besteht ein Zweck des Richtlinienplans darin, die Priorität der
Richtlinien zu ermitteln. Basierend auf diesem Richtlinienplan können Sie Ihren Plan erstellen
und dann schrittweise neue Richtlinien bereitstellen.
Der Grund für diesen schrittweisen Ansatz ist, dass Sie zunächst die Auswirkung der
Richtlinien auf das System kennen lernen müssen. Wenn Sie zunächst nur mit wenigen
Richtlinien beginnen, ist die Auswirkung auf das System vernachlässigbar. Wenn Sie aber im
Laufe der Zeit Hunderte von Richtlinien entwickeln, die zur gleichen Zeit ausgeführt werden,
treten Ressourcenkonflikte auf. Dabei wollten Sie anhand der Richtlinien jedoch lediglich
prüfen, ob ein Verstoß gegen die Best Practices oder IT-Standards stattgefunden hat. Aus
diesem Grund ist es wichtig, eine Rangfolge für die Richtlinien festzulegen.
54
Bestimmen des Ausführungsmodus für Ihre Richtlinien
Gemäß dem obigen Plan müssen Sie für jede Richtlinie den Typ der Erzwingung festlegen.
Möglicherweise möchten Sie die Richtlinien "nach Zeitplan" ausführen, um regelmäßig auf
Richtlinienverstöße zu prüfen. Beachten Sie jedoch, dass sich diese
Richtlinienüberprüfungen negativ auf die Leistung der Server auswirken. Daher sollten Sie
Richtlinienänderungen immer testen, um zu verstehen, wie die Leistung durch Hinzufügen
von Richtlinien beeinträchtigt werden kann.
Unterscheiden Sie daher zwischen den Richtlinien, die wirklich nach einem Zeitplan
ausgeführt werden müssen, und denen, die je nach Bedarf ausgeführt werden können. Es ist
beispielsweise nicht sinnvoll, regelmäßig zu prüfen, ob Datenbanksicherungen und
Zertifikatschlüsselsicherungen aktuell sind. Sie können aber beispielsweise die
Richtlinienprüfung für den Speicherort des SQL Server-Datenordners bedarfsgesteuert
durchführen (um z. B. sicherzustellen, dass dieser sich auf Laufwerk "H:\" befindet).
Währenddessen ist es möglich, dass ein Benutzer versucht, eine einzelne Datenbankrolle zu
erstellen – in diesem Fall können Sie eine Richtlinie erstellen, die Benutzer daran hindert,
diese Änderung vorzunehmen. Oder wenn Sie die Änderung zulassen möchten, können Sie
anfordern, dass die Änderung zumindest protokolliert wird (mit der Option Bei Änderung Nur protokollieren), damit Sie die vorgenommenen Änderungen nachverfolgen können.
Tabelle 5 zeigt die verschiedenen Ausführungsmodi, die vom Richtlinien-Facet abhängen. In
der Tabelle werden folgende Ausführungsmodi dargestellt: Prüfung "Bei Änderung:
Verhindern" (Check on Change Prevent, CoC: Prevent), Prüfung "Bei Änderung: Nur
protokollieren" (Check on Change Log, CoC: Log) und Prüfung "Nach Zeitplan" (Check on
Schedule, CoS). Weitere Informationen darüber, welche Ausführungen für welche Facets
anwendbar sind, finden Sie unter Richtlinienbasierte Verwaltung für SQL Server: Facets.
Facet-Name
CoC:
Prevent
CoC:
Log
CoS
Anwendungsrolle
Asymmetrischer Schlüssel
Überwachung
Sicherungsmedium
Broker-Priorität
Broker-Dienst
Zertifikat
Anmeldeinformationen
Kryptografieanbieter
Datendatei
Datenbank
DatenbankÜberwachungsspezifikation
DDL-Trigger auf Datenbankebene
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
55
Datenbankwartung
Datenbankoption
Datenbankleistung
Datenbankrolle
Datenbanksicherheit
Standardwert
Endpunkt
Dateigruppe
Volltextkatalog
Volltextindex
Volltext-Stoppliste
Index
Verbundener Server
Protokolldatei
Anmeldung
Anmeldeoptionen
Nachrichtentyp
Mehrteiliger Name
Name
Partitionsfunktion
Partitionsschema
Planhinweisliste
Remotedienstbindung
Ressourcenkontrolle
Ressourcenpool
Regel
Schema
Server
Serverüberwachung
Serverüberwachungsspezifikation
Serverkonfiguration
DDL-Trigger auf Serverebene
Serverinformationen
Serverleistung
Serversicherheit
Servereinstellungen
Serversetup
Dienstvertrag
Dienstwarteschlange
Dienstroute
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
56
Statistik
Gespeicherte Prozedur
X
X
Oberfläche
X
Oberfläche für AS
Oberfläche für RS
Symmetrischer Schlüssel
Synonym
Tabelle
Tabellenoptionen
X
X
Trigger
Benutzer
Benutzerdefiniertes Aggregat
Benutzerdefinierter Datentyp
Benutzerdefinierte Funktion
X
X
Benutzerdefinierter Tabellentyp
Benutzerdefinierter Typ
Benutzeroptionen
X
X
Ansicht
Ansichtsoptionen
X
X
Arbeitsauslastungsgruppe
X
X
XML-Schemaauflistung
Tabelle 5: Facet-Unterstützung – Ausführungstyp
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Verwenden der richtlinienbasierten Verwaltung zum Implementieren von KPIs und KRIs
Leistungskennzahlen (Key Performance Indicators, KPIs) und Risikokennzahlen (Key Risk
Indicators, KRIs) werden von vielen Geschäftsleuten verwendet, um sicherzustellen, dass ihr
Unternehmen ordnungsgemäß geführt wird. Die richtlinienbasierte Verwaltung kann
verwendet werden, um KPIs und KRIs für die SQL Server-Datenbank zu erstellen. Erstellen
Sie zuerst eine Kategorie für die richtlinienbasierte Verwaltung, um die Gruppe von KPIs und
KRIs darzustellen, die Sie erstellen möchten. Erstellen Sie als Nächstes eine Gruppe von
Richtlinien, mit denen sichergestellt werden kann, dass sich die KPIs und KRIs im zulässigen
Bereich befinden. Hilfe beim Erstellen von Richtlinien für die richtlinienbasierte Verwaltung
finden Sie in diesem Lernprogramm.
57
Die richtlinienbasierte Verwaltung stellt Facets zur Verfügung, um Sie beim Erstellen von
KPIs wie Datenbankleistung, Serverleistung, Ressourcenpool und Planhinweisliste zu
unterstützen. Nachdem Sie die Richtlinien erstellt haben, sollten Sie diese wie jeweils
erforderlich überwachen. Sie können auch konfigurieren, dass Sie benachrichtigt werden,
wenn die Werte außerhalb der normalen Betriebsbereiche liegen.
Verwenden der richtlinienbasierten Verwaltung zum Überprüfen der
Überwachungskonfiguration
Die richtlinienbasierte Verwaltung kann verwendet werden, um zu überprüfen, ob die
Überwachung auf den Servern ordnungsgemäß konfiguriert wurde. Anhand dieser Richtlinien
kann geprüft werden, ob Datenbank- und Serverüberwachungsspezifikationen vorhanden
sind und ob diese aktiviert sind.
Hinweis:
Wie oben im Abschnitt Überwachen sensibler Vorgänge angegeben, gibt es
verschiedene Stufen der Sensitivität, und nicht alle Benutzer oder Objekte
müssen überwacht werden. Daher muss im Richtlinienplan berücksichtigt werden,
dass einige Richtlinien auf bestimmte Systeme zutreffen und andere nicht.
Beispielsweise muss die Überwachung für Server, die private persönliche
Informationen enthalten, aktiviert werden, um sicherzustellen, dass alle Aktionen
verfolgt wurden. Aber bei Servern, die allgemeine Informationen bereitstellen,
müssen ggf. nur die sysadmin-spezifischen Aktionen überwacht werden. Im
letzteren Fall wäre es nicht sinnvoll, mit einer Richtlinie sicherzustellen, dass alle
Aktionen verfolgt wurden, da dies keine nützlichen Informationen liefert.
Verwenden der richtlinienbasierten Verwaltung zum Überprüfen der
Verschlüsselungskonfiguration
Eine weitere gute Möglichkeit zum Verfolgen des Systemzustands ist das Erstellen von
Richtlinien, die sicherstellen, dass die Verschlüsselung aktiv ist. Genauso wie bei der
Überwachung treffen die Richtlinien möglicherweise nicht auf alle verfügbaren Server zu. Für
Server mit privaten Informationen ist eine Verschlüsselung erforderlich, und mithilfe von
Richtlinien muss überprüft werden, ob die Verschlüsselung aktiv ist. Aber für Server, die
allgemeine und nicht vertrauliche Daten enthalten, muss weder die Verschlüsselung aktiviert
werden noch sind entsprechende Richtlinien erforderlich. Einige Richtlinienbereiche
umfassen folgende Prüfungen:





Sicherstellen, dass die transparente Datenverschlüsselung für die relevanten
Datenbanken aktiviert wurde (diese Prüfung wird z. B. für Datenbanken ausgeführt,
die nur persönliche Informationen enthalten).
Sicherstellen, dass die Sicherung der Datenbank auch verschlüsselt ist.
Sicherstellen, dass die Verschlüsselungsschlüssel regelmäßig (z. B. monatlich)
gewechselt wurden.
Sicherstellen, dass die Schlüssel gesichert wurden.
Sicherstellen, dass sich die Schlüsselsicherung an zentraler Stelle befindet.
58

Beschränken des Zugriffs auf Verschlüsselungsschlüssel.
Bereitstellen von Richtlinien
Es gibt verschiedene Methoden, um Richtlinien für mehrere Server bereitzustellen. Eine
Methode ist die Verwendung eines zentralen Verwaltungsservers, auf dem alle Richtlinien
gespeichert werden. Diese Richtlinien können dann im Dateiformat nach einem
freigegebenen Speicherort exportiert werden.
Abbildung 28: Exportieren einer Richtlinie
59
Wenn Sie Richtlinien aus SQL Server Management Studio importieren möchten, können Sie
den Viewer "Registrierte Server" verwenden und diese Richtlinien für die gesamte Gruppe
importieren, so wie in Abbildung 29 gezeigt.
Abbildung 29: Importieren einer Richtlinie
Sie können auch Windows PowerShell™-Skripts programmgesteuert verwenden, um
Richtlinien bereitzustellen, so wie in Bereitstellen von Richtlinien für die richtlinienbasierte
Verwaltung mithilfe von PowerShell gezeigt:
60
Erstellen von Berichten zur richtlinienbasierten Verwaltung
Auch bei Verwendung der Berichterstellungsinfrastruktur für Überwachungen wird empfohlen,
einen zentralen Ort zu verwenden, damit Sie die Ausführung und den Zustand aller
Serverrichtlinien prüfen können. Auf diese Weise können Sie den Zustand der
Serverumgebung von einem zentralen Ort aus überwachen.
Abbildung 30: Zentrale Sammlung von Richtlinieninformationen
w
Vie orts
p
Re
SQLAudit
Central Server
Obtain Server
List
Extract Policy
Data
Server 1
to
t Logs
Extrac are
filesh
Server 2
Load Policy Data
Policy Extract
Server n
Wie in Abbildung 30 dargestellt, können Sie den zentralen SQLAudit-Server als Hub zum
Sammeln von Richtlinieninformationen verwenden. Der Prozess (das folgende Skript ist ein
PowerShell-Skript) ruft zunächst eine Liste der Server ab, die auf die Richtliniendaten
zugreifen müssen. Anschließend können die Daten aus den erforderlichen Tabellen extrahiert
und in einer Dateifreigabe gespeichert werden. Diese Daten können dann auf den zentralen
SQLAudit-Server geladen werden, um über diesen Server Berichte anzuzeigen.
61
Anzeigen aller Richtlinien
Wie Sie im Bericht in Abbildung 31 sehen können, können Sie alle Richtlinien anzeigen, die
in allen Serverinstanzen vorhanden sind, einschließlich Ausführungsmodus, Facets,
Richtlinien und Bedingungen.
Abbildung 31: Richtlinienbericht für die richtlinienbasierte Verwaltung
Von hier aus können Sie einen Drilldown zu den Details ausführen, wenn Sie beispielsweise
die "Ausgewertete Richtlinie" der "Testrichtlinie mit vielen Verletzungen" für den
Serverinstanznamen "Caregroup" am 18.06.2008 anzeigen möchten.
Abbildung 32: Detaillierter Richtlinienbericht für die richtlinienbasierte Verwaltung
62
In Abbildung 32 können Sie sehen, dass der Bericht der Richtlinienauswertung nur Fehler
enthält. Dies ist darauf zurückzuführen, dass die richtlinienbasierte Verwaltung
standardmäßig nur Fehlereignisse aufzeichnet. Um sowohl erfolgreiche als auch gescheiterte
Ereignisse (Fehlerereignisse) aufzuzeichnen, legen Sie den Parameter LogOnSuccess der
Richtlinienverwaltungseigenschaften auf TRUE fest, so wie in Abbildung 33 dargestellt. Mit
dem LogOnSuccess-Parameter wird bestimmt, ob die richtlinienbasierte Verwaltung
erfolgreiche Richtlinienauswertungen protokolliert.
Abbildung 33: Richtlinienverwaltungseigenschaften
63
Nützliche Skripts und Tipps
In diesem Abschnitt werden eine Reihe nützlicher Skripts und Tipps bereitgestellt, die Sie bei
der Entwicklung von Kompatibilitätslösungen für kommerzielle Anwendungen oder
Unternehmensanwendungen unterstützen. Jedes dieser Skripts ist im Kompatibilitäts-SDK
enthalten. Gegebenenfalls ist der Name der Datei, die das Skript enthält, im Titel angegeben.
Programmierschnittstellen zu SQL Server
SQL Server stellt mehrere Programmierschnittstellen bereit. Dieser Abschnitt bietet eine
Übersicht über die drei Programmierschnittstellen, die in diesem Abschnitt verwendet
werden: SQL Server Management Objects (SMO), Transact-SQL und Windows PowerShell.
SMO
SQL Server Management Objects (SMO) steht für eine Auflistung von Objekten, die zum
Programmieren aller Aspekte der Microsoft SQL Server-Verwaltung vorgesehen sind. Sie
können SMO verwenden, um benutzerdefinierte SQL Server-Verwaltungsanwendungen zu
erstellen. Das SMO-Objektmodell erweitert und ersetzt das SQL-DMO-Objektmodell (SQL
Distributed Management Objects). Verglichen mit SQL-DMO bietet SMO eine bessere
Leistung, Steuerung und Benutzerfreundlichkeit. SMO unterstützt die meisten SQL-DMOFunktionen und enthält verschiedene neue Klassen zur Unterstützung neuer Features in SQL
Server.
Transact-SQL
Die Sprache Transact-SQL wird traditionell zum Erstellen von Schnittstellen zu SQL Server
verwendet. Bei allen Anwendungen erfolgt die Kommunikation mit einer Instanz von
SQL Server über das Senden von Transact-SQL-Anweisungen an den Server. Dabei spielt
die Benutzeroberfläche der Anwendung keine Rolle. Entwickler, die Datenbankanwendungen
erstellen möchten, sollten sich mit dieser Sprache vertraut machen.
Windows PowerShell
Windows PowerShell ist eine Befehlszeilenshell und Skriptsprache, die IT-Spezialisten eine
bessere Kontrolle und eine Steigerung ihrer Produktivität ermöglicht. Windows PowerShell
bietet eine neue, auf Administratoren ausgerichtete Skriptsprache, über 130 standardmäßige
Befehlszeilentools sowie konsistente Syntaxregeln und Hilfsprogramme für einfache
Systemverwaltung und schnellere Automatisierung. Windows PowerShell ist jetzt im
Lieferumfang von Windows Server 2008 enthalten. Informationen für einen schnellen Einstieg
in das Skripting finden Sie in der Windows PowerShell Quick Reference.
In mehreren Beispielen in diesem Abschnitt werden PowerShell-Skripts verwendet.
Informationen zum Verwenden von PowerShell mit SQL Server finden Sie hier. Sie können
sich auch ein Video mit Tipps und Tricks für SQL Server PowerShell ansehen.
Hinweis:
Die erstmalige Ausführung von PowerShell-Skripts kann schwierig sein. Stellen
Sie zuerst sicher, dass Sie das Hilfsprogramm SQLPS ausführen, um PowerShell
zu starten, und nicht POWERSHELL. Wenn Sie weitere Hilfe benötigen, lesen Sie
die Informationen im Abschnitt Ausführen von Windows PowerShell-Skripts.
64
VBScript
Microsoft Visual Basic® Scripting Edition (VBScript) ermöglicht aktives Skripting in einer
großen Vielzahl von Umgebungen, einschließlich Webclientskripting in Microsoft Internet
Explorer® und Webserverskripting in Microsoft Internetinformationsdienste (IIS). Mit VBScript
können Sie Anwendungen erstellen, die auf SQL Server zugeschnitten sind. Unter Script
Repository: SQL Server finden Sie ein Skriptrepository mit Dutzenden von Beispielen für
SQL Server.
Windows Data Access Components
Windows Data Access Components ist eine Gruppe von Technologien, die Zugriff auf
Informationen im gesamten Unternehmen bieten. Diese Technologien umfassen
Microsoft ActiveX® Data Objects (ADO), OLE DB und Microsoft Open Database Connectivity
(ODBC). Datengesteuerte Client/Server-Anwendungen, die über das Web oder ein LAN
bereitgestellt werden, können diese Komponenten verwenden, um Informationen aus einer
SQL Server-Datenbank auf einfache Weise zu integrieren.
65
Sicherstellen der Sicherheitseinstellungen ("Server Security
Policy.xml")
Im Abschnitt zum Verwenden der Windows-Authentifizierung wird erläutert, wie wichtig es ist,
den Windows-Authentifizierungsmodus zur Serverauthentifizierung zu verwenden. Sie
können dies manuell in SQL Server Management Studio konfigurieren, indem Sie den Modus
auf der Seite Sicherheit unter Servereigenschaften auswählen, so wie in Abbildung 34
gezeigt. Mit der richtlinienbasierten Verwaltung können die meisten Servereinstellungen
überwacht werden. Die Datei "Server Security Policy.xml" enthält ein Beispiel, das die
Vorgehensweise veranschaulicht.
Abbildung 34: Sicherheitseigenschaften für Server
66
Die Windows-Authentifizierung ist ein Beispiel für eine Sicherheitseinstellung, die verwendet
werden kann, um den Zugriff auf sensible Daten zu beschränken. Mit der richtlinienbasierten
Verwaltung können Datenbankadministratoren Richtlinien erstellen, um sicherzustellen, dass
bestimmte Sicherheitseinstellungen und andere Einstellungen ordnungsgemäß konfiguriert
und verwaltet werden. Im Allgemeinen ist das Erstellen einer Richtlinie für die Einstellungen
eines Objekts ganz einfach. Sie müssen lediglich mit der rechten Maustaste auf das Objekt
und dann auf Facet klicken. Sie können hierzu auch auf das Menü Facets zugreifen,
nachdem Sie mit der rechten Maustaste auf das Serverobjekt geklickt haben. Abbildung 35
zeigt ein Beispiel:
Abbildung 35: Auswählen von Facets für das Serverobjekt
67
Im Dialogfeld Facets anzeigen, das in Abbildung 36 dargestellt wird, werden die für das
ausgewählte Objekt verfügbaren Facets und die Einstellungen der Facets angezeigt.
Abbildung 36: Dialogfeld mit Serverfacets für die richtlinienbasierte Verwaltung
Verwalten der Aufgabentrennung ("SOD Policy.xml")
Mit der Richtliniendatei "SOD Policy.xml" wird sichergestellt, dass das sa-Konto umbenannt
und deaktiviert wurde. Es wird überprüft, ob nur bestimmte Benutzer und Dienstkonten der
Rolle sysadmin hinzugefügt wurden. Außerdem wird sichergestellt, dass Benutzer nur einer
Rolle zugewiesen werden. Im weiteren Verlauf dieses Abschnitts wird gezeigt, wie Sie diese
Funktionen manuell ausführen können. Diese Richtlinie enthält zwei Skripts, die die
Flexibilität von Ausdrücken der richtlinienbasierten Verwaltung veranschaulichen.
68
Hinweis:
Wenn Sie Skripts als Teil einer Richtlinienbedingung einfügen, wird im Dialogfeld
Richtlinien auswerten neben der Richtlinie ein Warnsymbol angezeigt. Zudem
wird oben im Dialogfeld eine Warnmeldung angezeigt, so wie in Abbildung 37
gezeigt. Das Einschließen von Skripts verhindert auch, das Skripts automatisch
von SQL Server Management Studio ausgewertet werden. Durch Klicken auf die
Schaltfläche Auswerten wird die Richtlinienauswertung jedoch zugelassen.
Abbildung 37: Richtlinie mit hervorgehobenen Skripts im Dialogfeld Richtlinien
auswerten
Verwenden von Skripts in Bedingungen
Das Verwenden von Skripts ist eine der leistungsstärkeren Möglichkeiten, um eine Bedingung
für die richtlinienbasierte Verwaltung zu konfigurieren. Das folgende Skript wird von der
Bedingung zum Überprüfen von Rollen in der Richtlinie zur Aufgabentrennung verwendet.
IsNull(ExecuteSql('Numeric',
'SELECT COUNT(DISTINCT name)
FROM sys.server_role_members,
sys.server_principals
WHERE principal_id = member_principal_id
AND role_principal_id
IN (SUSER_ID (''sysadmin''),
SUSER_ID (''bulkadmin''),
SUSER_ID (''securityadmin''))
GROUP BY name
HAVING COUNT(member_principal_id)> 1 '), 0)
Die Funktion ExecuteSQL erlaubt das Einbetten einer SELECT-Anweisung in einen
Ausdruck der richtlinienbasierten Verwaltung. Diese SELECT-Anweisung bestimmt, ob ein
Benutzer Mitglied von mehr als einer der aufgelisteten Sicherheitsrollen ist. Wenn dies zutrifft,
wird ein Wert größer als Null zurückgegeben, sodass die Bedingung scheitert. Die Liste der
Rollen kann bei Bedarf geändert werden. Rollennamen sollten in Anführungszeichen gesetzt
69
werden, da die SELECT-Anweisung in Apostrophe eingebettet ist. Die Funktion IsNull wird
verwendet, um eine numerische Rückgabe zu erzwingen, falls das Resultset NULL ist.
Deaktivieren aller sysadmin-Konten ("ManageSA.sql")
Das Deaktivieren aller sysadmin-Konten stellt eine sichere Methode dar, um zu verhindern,
dass privilegierte Benutzer auf Daten und Vorgänge zugreifen, auf die sie nicht zugreifen
sollten. Normalerweise ist es keine gute Idee, alle sysadmin-Konten zu deaktivieren, da nur
ein sysadmin ein Konto erneut aktivieren kann. Falls dies geschieht, könnte ein sysadminKonto erneut aktiviert werden, indem die Datenbank heruntergefahren und im
Einzelbenutzermodus gestartet wird. Der folgende Code veranschaulicht, wie alle sysadminKonten deaktiviert werden können.
USE master
GO
CREATE PROCEDURE sp_DisableSA AS
IF (DB_ID() = 1)
BEGIN
DECLARE @cmd nvarchar(max)
-- SID 0x01 ist immer "sa"
SET @cmd = N'ALTER LOGIN ' + QUOTENAME(SUSER_NAME(0x01)) +
N' DISABLE'
EXEC ( @cmd )
END
ELSE
BEGIN
RAISERROR ('sp_DisableSA is only valid when hosted in master DB',
-- Meldungstext.
16, -- Schweregrad.
1 -- Status.
);
END
GO
CREATE PROCEDURE sp_EnableSA AS
IF (DB_ID() = 1)
BEGIN
DECLARE @cmd nvarchar(max)
-- SID 0x01 ist immer "sa"
SET @cmd = N'ALTER LOGIN ' + QUOTENAME(SUSER_NAME(0x01)) +
N' ENABLE'
EXEC ( @cmd )
END
ELSE
BEGIN
RAISERROR ('sp_EnableSA is only valid when hosted in master DB',
-- Meldungstext.
16, -- Schweregrad.
1 -- Status.
);
END
GO
70
-- Zertifikat zum Signieren der gespeicherten Prozedur erstellen
CREATE CERTIFICATE SACert WITH SUBJECT = 'For signing stored
procedures'
GO
-- Anmeldung zum Ausführen der gespeicherten Prozedur zulassen
GRANT EXECUTE ON sp_DisableSA TO [SQLVM03-18158EA\Pat];
-- Gespeicherte Prozedur signieren
ADD SIGNATURE TO sp_DisableSA BY CERTIFICATE SACert;
-- Zertifikatbasierte Anmeldung erstellen
CREATE LOGIN [CertLogin] FROM CERTIFICATE SACert;
-- Anmeldung der sysadmin-Rolle hinzufügen, damit das sa-Konto
-- von der gespeicherten Prozedur deaktiviert werden kann
EXEC sp_addsrvrolemember [CertLogin], N'sysadmin';
-- Privaten Schlüssel entfernen, damit die gespeicherte Prozedur
nicht erneut signiert werden kann
ALTER CERTIFICATE [SACert] REMOVE PRIVATE KEY;
-- Serverüberwachungsspezifikation ändern, um die Nutzung der
-- gespeicherten Prozedur bei Bedarf nachzuverfolgen. Sicherstellen,
dass die Überwachungsspezifikation
-- deaktiviert ist, bevor der ALTER-Befehl ausgeführt wird.
ALTER SERVER AUDIT SPECIFICATION [Audit Login Changes]
WITH (STATE = OFF)
GO
ALTER SERVER AUDIT SPECIFICATION [Audit Login Changes]
ADD (SERVER_PRINCIPAL_CHANGE_GROUP)
GO
ALTER SERVER AUDIT SPECIFICATION [Audit Login Changes]
WITH (STATE = ON)
GO
Überprüfen des sa-Kontos ("ValidateSA.sql")
Die Bedingung zum Überprüfen von Rollen kann verwendet werden, um zu überprüfen, ob
das sa-Konto umbenannt und deaktiviert wurde. Das folgende Skript veranschaulicht die
manuelle Durchführung dieser Aufgabe.
IF (SELECT COUNT(*)
FROM sys.server_principals
WHERE = principal_id 1
AND is_disabled = 1
AND name != 'sa') = 1
PRINT 'Compliant'
ELSE
PRINT 'Non-compliant'
71
Überprüfen der sysadmin-Rollenmitgliedschaft ("ValidateSysadmins.sql")
Mit der Bedingung zum Überprüfen von Rollen in der Richtliniendatei "SOD Policy.xml" kann
überprüft werden, ob nur die dafür vorgesehenen Benutzer Mitglied der Rolle sysadmin sind.
Das folgende Skript veranschaulicht die manuelle Durchführung dieser Aufgabe.
DECLARE
DECLARE
DECLARE
DECLARE
SET
SET
SET
SET
@Admin1
@Admin2
@Admin3
@Admin4
@Admin1
@Admin2
@Admin3
@Admin4
=
=
=
=
sysname
sysname
sysname
sysname
@@SERVERNAME + '\Pat'
'NT AUTHORITY\SYSTEM'
'NT AUTHORITY\NETWORK SERVICE'
'sa'
IF EXISTS (SELECT name
FROM sys.server_role_members A,
sys.server_principals B
WHERE A.member_principal_id = B.principal_id
AND role_principal_id = SUSER_ID('sysadmin')
AND name NOT IN (@Admin1, @Admin2,
@Admin3, @Admin4))
PRINT 'Non-compliant'
ELSE
PRINT 'Compliant'
Erzwingen der Rollentrennung ("SOD Policy.xml")
Diese Skripts überprüfen, ob ein Benutzer in mehr als einer Rolle vorhanden ist, und listen
diese Benutzer zusammen mit dem Namen der Rolle auf. Hierbei behandelt ein Satz die
Serverrollen und der andere die Datenbankrollen.
Beachten Sie, dass von SQL Server nicht einfach überwacht werden kann, wer Mitglied der
Windows-Sicherheitsgruppen ist. Jede Organisation sollte eine Richtlinie zum Verwalten der
Sicherheitsgruppenmitgliedschaft erstellen. Wenn Gruppen verwendet werden, kann von
SQL Server nicht festgestellt werden, ob eine Einzelperson aufgrund von
Gruppenmitgliedschaften mehreren SQL Server-Rollen zugewiesen ist.
72
Überwachen von Serverrollen ("ValidateServerRoles.sql")
Das Dialogfeld Anmeldungseigenschaften kann verwendet werden, um die Serverrollen
eines Benutzers anzuzeigen und zu ermitteln, ob der Benutzer Mitglied in mehr als einer
kritischen Rolle ist, so wie in Abbildung 38 gezeigt.
Abbildung 38: Dialogfeld Anmeldungseigenschaften
Die richtlinienbasierte Richtliniendatei "SOD Policy.xml" erlaubt die Überwachung von
Serverrollen, um sicherzustellen, dass ein Benutzer maximal einer Rolle zugewiesen ist,
ohne dass Sie hierzu die Rollen der einzelnen Benutzer manuell anzeigen müssen. Das
folgende Skript führt dieselbe Funktion aus. Wenn eine Anzahl größer als null zurückgegeben
wird, ist ein Benutzer Mitglied von mehreren aufgelisteten Rollen.
SELECT COUNT(*)Count
FROM sys.server_role_members, sys.server_principals
WHERE principal_id = member_principal_id
AND role_principal_id
IN (SUSER_ID('sysadmin'), SUSER_ID ('bulkadmin'),
SUSER_ID ('securityadmin'))
GROUP BY member_principal_id
HAVING COUNT(member_principal_id)> 1
73
Auflisten von Benutzern in mehreren Rollen ("ValidateServerRoles.sql")
Wenn Benutzer Mitglied mehrerer Rollen sind, listen diese Skripts den Namen der Benutzer
zusammen mit den Serverrollen auf, denen die Benutzer angehören. In diesem Beispiel
enthält das Skript nur drei Serverrollen. Die Anzahl der Rollen und die Rollenauswahl können
geändert werden, da sie sich nicht auf die Funktionsweise des Skripts auswirken.
SELECT A.Name, B.NAME Role
FROM sys.server_principals A,
sys.server_principals B,
sys.server_role_members C
WHERE A.name IN (SELECT Name
FROM sys.server_role_members,
sys.server_principals
WHERE principal_id = member_principal_id
AND role_principal_id
IN (SUSER_ID('sysadmin'),
SUSER_ID ('bulkadmin'),
SUSER_ID ('securityadmin'))
GROUP BY member_principal_id, name
HAVING COUNT(member_principal_id)> 1
)
AND A.principal_id = C.member_principal_id
AND B.principal_id = C.role_principal_id
ORDER BY Name
74
Überwachen von Datenbankrollen ("ValidateDatabaseRoles.sql")
Das Dialogfeld Datenbankbenutzer kann verwendet werden, um die Datenbankrollen eines
Benutzers anzuzeigen und zu ermitteln, ob der Benutzer Mitglied in mehr als einer kritischen
Rolle ist, so wie in Abbildung 39 gezeigt.
Abbildung 39: Datenbankrollenmitgliedschaft des Benutzers
Dieses Skript listet die Benutzer nach Name auf und gibt an, zu wie vielen der aufgelisteten
Datenbankrollen der Benutzer gehört. Das Skript sollte ein NULL-Resultset zurückgeben,
wenn kein Benutzer in mehr als einer Rolle vorhanden ist. In diesem Beispiel enthält das
Skript nur drei Datenbankrollen. Die Anzahl der Rollen und die Rollenauswahl können
geändert werden, da sie sich nicht auf die Funktionsweise des Skripts auswirken.
SELECT COUNT(member_principal_id) Count, Name
FROM sys.database_role_members,
sys.database_principals
WHERE principal_id = member_principal_id
AND role_principal_id
IN (DATABASE_PRINCIPAL_ID('db_securityadmin'),
DATABASE_PRINCIPAL_ID('db_backupoperator'),
DATABASE_PRINCIPAL_ID('db_datawriter'))
GROUP BY member_principal_id, Name
75
HAVING COUNT(member_principal_id)> 1
ORDER BY Name
Wenn Benutzer Mitglied mehrerer Rollen sind, listen diese Skripts den Namen der Benutzer
zusammen mit den Datenbankrollen auf, denen die Benutzer angehören. In diesem Beispiel
enthält das Skript nur drei Datenbankrollen. Die Anzahl der Rollen und die Rollenauswahl
können geändert werden, da sie sich nicht auf die Funktionsweise des Skripts auswirken.
SELECT A.Name, B.Name Role
FROM sys.database_principals A,
sys.database_principals B,
sys.database_role_members C
WHERE A.name IN
(SELECT Name
FROM sys.database_role_members,
sys.database_principals
WHERE principal_id = member_principal_id
AND role_principal_id
IN (DATABASE_PRINCIPAL_ID('db_securityadmin'),
DATABASE_PRINCIPAL_ID('db_backupoperator'),
DATABASE_PRINCIPAL_ID('db_datawriter'))
GROUP BY member_principal_id, name
HAVING COUNT(member_principal_id)> 1
)
AND A.principal_id = C.member_principal_id
AND B.principal_id = C.role_principal_id
ORDER BY Name
Verwalten von Verschlüsselungsschlüsseln
Datenbankadministratoren verwenden die Verschlüsselung oft, um sensible Daten zu schützen,
und behandeln erst im Nachhinein die ordnungsgemäße Verwaltung von
Verschlüsselungsschlüsseln. Zudem stellt SQL Server keine umfassenden Tools bereit, um das
Verwalten von Verschlüsselungsschlüsseln zu vereinfachen. Dieser Abschnitt enthält Anleitungen
zum Verwalten von Schlüsseln sowie Skripts, um Sie bei diesem Prozess zu unterstützen.
Überwachen des Zugriffs auf Verschlüsselungsschlüssel
("AuditCryptoActions.sql")
SQL Server Audit ermöglicht das Überwachen des Zugriffs auf Verschlüsselungsschlüssel
sowie der Verschlüsselungseinstellung für Datenbanken. Durch Überwachen der Ereignisse
DATABASE_OBJECT_ACCESS_GROUP und DATABASE_OBJECT_CHANGE_GROUP
mit einer Serverüberwachungsspezifikation kann sichergestellt werden, dass jeder Zugriff auf
die Datenbankverschlüsselungsschlüssel protokolliert wird. Durch Überwachen des
Ereignisses DATABASE_CHANGE_GROUP mithilfe einer DatenbankÜberwachungsspezifikation wird sichergestellt, dass alle Änderungen am
Verschlüsselungsflag für die Datenbank protokolliert werden.
Wenn eine Serverüberwachungsspezifikation geändert wird, um alle Datenbankobjekte
hinsichtlich Änderungen und Zugriff zu überwachen, werden dadurch nicht viele Ereignisse
protokolliert. Dies ist darauf zurückzuführen, dass nur wenige Datenbankobjekte vorhanden
76
sind, auf die nicht häufig zugegriffen wird bzw. die in stabilen Datenbanken nicht häufig
geändert werden. Unter Überwachen des Schlüsselzugriffs finden Sie eine Liste von Objekten.
Anzeigen von Zertifikaten und Schlüsseln ("ViewKeys.sql")
Zertifikate für die transparente Datenverschlüsselung müssen in der master-Datenbank
mithilfe eines Skripts erstellt werden, beispielsweise mit dem folgenden Skript. Der
Hauptschlüssel muss nur erstellt werden, wenn zuvor noch kein Hauptschlüssel erstellt
wurde. Der Hauptschlüssel ist zum Schützen des Zertifikats erforderlich.
USE master;
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = 'UseStrongPassword1!';
GO
CREATE CERTIFICATE MyServerCert
WITH SUBJECT = 'My DEK Certificate for Sensitive Data'
Nachdem ein Zertifikat erstellt wurde, kann es angezeigt werden, indem eine Abfrage für die
Zertifikattabelle in der master-Datenbank ausgeführt wird, so wie im Folgenden gezeigt.
USE master
SELECT name, certificate_id, start_date, thumbprint,
pvt_key_last_backup_date
FROM sys.certificates
Tabelle 6 zeigt einige wichtige Spalten aus der Zertifikattabelle. Die Spalte start_date sollte
verwendet werden, um festzustellen, wann das Zertifikat erneut erstellt werden soll. Anhand
der Spalte thumbprint kann bestimmt werden, welche Datenbanken mit dem Zertifikat
verknüpft sind. Sie ist der Spalte encryptor_thumbprint zugeordnet, die weiter unten in
diesem Abschnitt beschrieben wird. In der Spalte pvt_key_last_backup_date wird
angezeigt, wann das Zertifikat zuletzt gesichert wurde. Wenn der Wert in der Spalte NULL ist,
wurde das Zertifikat nie gesichert. Die Sicherung ist wichtig, denn falls das Zertifikat jemals
zerstört wird, können Objekte, die mit dem Zertifikat geschützt wurden (z. B.
Sicherungsbänder), nicht mehr wiederhergestellt werden.
name
NewServerCert
DEKCert_258
DEKCert_260
DEKCert_261
start_date
2008-07-20 19:43:04.000
2008-07-23 04:21:40.000
2008-07-23 04:51:55.000
2008-07-25 05:11:26.000
thumbprint
pvt_key_last_backup_date
0xBF372D91C333B1E…
NULL
0x99CF8887C56CEC9… 2008-07-23 04:50:36.553
0x8BFD5885501314B…
2008-07-23 04:51:56.490
0xC1B737DAFDCFAC… 2008-07-25 05:11:28.800
Tabelle 6: Spalten aus der Zertifikattabelle
Bevor die transparente Datenverschlüsselung für eine Datenbank aktiviert werden kann,
müssen mithilfe eines Skripts Verschlüsselungsschlüssel für die transparente
Datenverschlüsselung erstellt werden, beispielsweise mit dem folgenden Skript. Damit die
Erstellung der Verschlüsselungsschlüssel erfolgreich ist, muss zuvor ein Zertifikat erstellt
worden sein.
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
77
ENCRYPTION BY SERVER CERTIFICATE DEKCert_258
GO
Nachdem der Schlüssel erstellt wurde, kann er angezeigt werden, indem mithilfe der
dynamischen Verwaltungssicht eine Abfrage durchgeführt wird, so wie unten gezeigt.
SELECT database_id, create_date, regenerate_date,
encryptor_thumbprint
FROM sys.dm_database_encryption_keys
Tabelle 7 zeigt einige wichtige Spalten aus der Sicht. In der Spalte database_id ist die
Datenbank angegeben, für die der Schlüssel erstellt wurde. Die ID "2" steht für tempdb
(temporäre Datenbank). In der Spalte regenerate_date ist angegeben, wann der Schlüssel
zuletzt generiert wurde. Wenn der Schlüssel zum ersten Mal erstellt wird, entspricht dieser
Wert dem Wert in der Spalte create_date. Diese Spalte sollte verwendet werden, um zu
bestimmen, wann der Schlüssel erneut erstellt werden soll. Wie im Abschnitt Wechseln von
Zertifikaten oder Wechseln von Schlüsseln erläutert, ist es besser, das Zertifikat anstelle des
Verschlüsselungsschlüssels zu wechseln. Anhand der Spalte encryptor_thumbprint kann
bestimmt werden, welches Zertifikat zum Schützen des Schlüssels verwendet wird.
database_id
2
7
8
9
create_date
2008-08-20 17:46:28.110
2008-07-01 20:27:03.983
2008-07-01 20:27:04.137
2008-07-01 20:27:32.667
regenerate_date
2008-08-20 17:46:28.110
2008-08-07 16:14:36.013
2008-08-07 16:14:36.103
2008-08-07 16:14:36.213
encryptor_thumbprint
0
0xC1B737DAFDCFAC9C…
0xC1B737DAFDCFAC9C…
0xC1B737DAFDCFAC9C…
Tabelle 7: Spalten aus der Sicht "sys.dm_database_encryption_keys"
Wechseln von Zertifikaten ("RotateCerts.sql")
Mit dem folgenden Skript wird jedes Zertifikat in der aktuellen Datenbank erneut generiert.
Das Skript sollte nur für die master-Datenbank ausgeführt werden. Nur Zertifikate, die einen
Monat alt sind und zum Schützen eines Datenbankverschlüsselungsschlüssels verwendet
wurden, werden neu generiert. Die DATUMSDIFFERENZ-Funktion kann geändert werden,
um die Häufigkeit der Generierung zu ändern. Die ID des rotierten Zertifikats wird im Namen
des neuen Zertifikats verwendet, um Konflikte zu vermeiden. Nachdem das neue Zertifikat
generiert wurde, wird es verwendet, um jeden Datenbankverschlüsselungsschlüssel zu
schützen, der vom vorherigen Zertifikat geschützt wurde. Dieses Skript kann mithilfe des
SQL Server-Agents als geplanter Auftrag verwendet werden.
Hinweis:
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
Der private Schlüssel für jedes neu erstellte Zertifikat muss sobald wie möglich
mit einem sicheren Verfahren gesichert werden. Geschieht dies nicht, können
verschlüsselte Daten möglicherweise nicht wiederhergestellt werden, falls der
ursprüngliche private Schlüssel verloren geht.
@Thumbprint
@CertID
@CertName
@DB_ID
@cmd
varbinary(32)
int
sysname
int
nvarchar(max)
-- Das INSENSITIVE-Schlüsselwort verwenden, um zu verhindern, dass
-- während dieses Skripts erstellte neue Zertifikate verarbeitet werden.
78
DECLARE Certificate_Cursor INSENSITIVE CURSOR FOR
SELECT [thumbprint], [certificate_id]
FROM sys.certificates
WHERE (DATEDIFF(MONTH, [start_date], GETDATE()) > 0 )
AND [thumbprint]
IN (SELECT DISTINCT encryptor_thumbprint
FROM sys.dm_database_encryption_keys)
OPEN Certificate_Cursor;
FETCH NEXT FROM Certificate_Cursor INTO @Thumbprint, @CertID;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CertName = 'DEKCert' + '_' + LTRIM(STR(@CertID));
SET @cmd = N'CREATE CERTIFICATE ' + QUOTENAME(@CertName) +
N' WITH SUBJECT = ''DEK Certificate'''
EXEC( @cmd )
DECLARE Database_Cursor CURSOR FOR
SELECT [database_id]
FROM sys.dm_database_encryption_keys
WHERE [encryptor_thumbprint] = @Thumbprint
OPEN Database_Cursor;
FETCH NEXT FROM Database_Cursor INTO @DB_ID;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cmd = N'USE ' + QUOTENAME(DB_NAME(@DB_ID)) + ';' +
N'ALTER DATABASE ENCRYPTION KEY ' +
N'ENCRYPTION BY SERVER CERTIFICATE ' +
QUOTENAME(@CertName)
EXEC (@cmd);
FETCH NEXT FROM Database_Cursor INTO @DB_ID;
END
CLOSE Database_Cursor;
DEALLOCATE Database_Cursor;
FETCH NEXT FROM Certificate_Cursor INTO @Thumbprint, @CertID;
END
CLOSE Certificate_Cursor;
DEALLOCATE Certificate_Cursor;
Hinweis:
Dieses Skript scheitert, wenn es mehr als zweimal ausgeführt wird, ohne dass
das Protokoll gesichert wurde.
Sichern des privaten Zertifikatschlüssels ("BackupCerts.sql")
Dieses Skript sucht nach jedem Zertifikat, das zum Schützen eines
Datenbankverschlüsselungsschlüssels verwendet wird und nicht gesichert wurde (die Spalte
pvt_key_last_backup_date ist NULL), und sichert das Zertifikat in einer Datei im
Verzeichnis "C:\certificates". Als Dateiname wird der Name des Zertifikats mit der
Dateierweiterung ".crt" verwendet. Der private Schlüssel wird im gleichen Verzeichnis wie die
Dateierweiterung ".pvt" gesichert. Nachdem das Zertifikat gesichert wurde, sollte der private
79
Zertifikatschlüssel sofort an einem sicheren Ort verwahrt oder in einer Datenbank gespeichert
werden. Die Dateikopie sollte zerstört werden.
Hinweis:
Die Sicherung eines Zertifikats sollte nicht mit einem Skript wie dem folgenden
automatisiert werden, es sei denn, die Kennworterstellung erfolgt auf sichere
Weise. Wenn das Kennwort in einem Skript verfügbar gemacht wird, wird der
private Schlüssel dem Risiko eines unberechtigten Zugriffs ausgesetzt. Die Datei
sollte an einem sicheren Ort gespeichert oder gelöscht werden, nachdem sie in
eine sekundäre Datenbank importiert wurde. Kennwörter sollten nicht
wiederverwendet werden.
DECLARE @CertName
DECLARE @cmd
sysname
nvarchar(max)
DECLARE Cert_Cursor CURSOR FOR
SELECT [name]
FROM sys.certificates
WHERE [pvt_key_last_backup_date] IS NULL AND [thumbprint] IN
(SELECT DISTINCT [encryptor_thumbprint]
FROM sys.dm_database_encryption_keys)
OPEN Cert_Cursor;
FETCH NEXT FROM Cert_Cursor INTO @CertName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cmd =
N'BACKUP CERTIFICATE ' + QUOTENAME(@CertName) +
N' TO FILE = ''c:\certificates\' + @CertName +
N'.crt'' WITH PRIVATE KEY ( FILE = ''c:\certificates\' +
@CertName +
N'.pvk'', ENCRYPTION BY PASSWORD = ''MyPass7779311#'');'
EXEC ( @cmd )
FETCH NEXT FROM Cert_Cursor INTO @CertName;
END
CLOSE Cert_Cursor;
DEALLOCATE Cert_Cursor;
Sicherstellen der Zertifikatrotation und -sicherung
("CertRotationPolicy.xml")
Mithilfe der richtlinienbasierten Verwaltung kann sichergestellt werden, dass Zertifikate und
Schlüssel gemäß Richtlinie in einem bestimmten Turnus gewechselt (rotiert) werden. Zudem
wird sichergestellt, dass die privaten Zertifikatschlüssel gesichert werden. Die Richtlinie der
richtlinienbasierten Verwaltung in der Datei "CetRotationPolicy.xml" enthält eine Bedingung
mit drei Skriptausdrücken, mit der sichergestellt werden kann, dass Zertifikate und Schlüssel
einmal wöchentlich rotiert werden und dass jeder private Zertifikatschlüssel gesichert wird.
80
Verwalten der Überwachung
Nachdem mithilfe von SQL Server Audit Überwachungsprotokolle gesammelt wurden,
müssen Sie diese Protokolle ggf. verarbeiten, um forensische Analysen oder Trendanalysen
durchzuführen. In diesem Abschnitt wird erläutert, wie Sie aus den erfassten Protokollen
einen größeren Nutzen ziehen können.
Übertragen von SQL Server Audit-Protokollen an eine Tabelle
("StoreAuditLogs.sql")
Protokolle aus mehreren Systemen können in einer zentralen Dateifreigabe gesammelt
werden, so wie in Abbildung 40 gezeigt. Um das Erstellen von Berichten aus den
Protokollen zu vereinfachen, müssen diese in eine Datenbanktabelle verschoben werden.
SQL Server Integration Services (SSIS) kann verwendet werden, um ein Paket zu erstellen,
das nach Zeitplan ausgeführt werden kann. Die Protokolle können entweder manuell oder mit
einem Skript verschoben werden. Nachdem die Protokolle in eine Tabelle verschoben
wurden, kann die Tabelle in Microsoft Excel® geöffnet werden, um Diagramme zu erstellen
und Trendanalysen durchzuführen. Diese Mechanismen werden im folgenden Abschnitt
beschrieben.
Abbildung 40: Übertragen von Überwachungsprotokollen an eine Datenbanktabelle
SQL Servers
Process Audit Information
Use SSIS to process SQL Server Audit log data and store in its own SQL Server
database.
SSIS
SQL Server
database
SQL Server
database
Transfer Logs
SQL Server Audit
File Server
SQL Server
database
SQL Server
database
Dieses Skript verschiebt die Ereignisse aus der SQL Server Audit-Protokolldatei in eine
Datenbanktabelle, um die Berichterstattung zu vereinfachen. Durch diese Verschiebung wird
auch verhindert, dass der Systemadministrator eines Servers, über den Ereignisse gesendet
werden, die Datei überschreibt. Hierbei müssen zwei Dinge beachtet werden:

SQL Server Audit speichert nur die Codes für die Vorgänge und Objekttypen in der
Protokolldatei. Dieses Skript verknüpft daher die Aktions- und Objekttabellen, um die
Beschreibungen einzuschließen, und speichert sie dann in der Datenbanktabelle.
81

Der Name der zuletzt gelesenen Datei und der Offset in der Datei werden in lokale
Variablen geladen und beim Lesen von Daten verwendet, damit dieselben Protokolle
nicht zweimal geladen werden.
USE Test1
GO
DECLARE
@data_path nvarchar(256),
@offset
int
SET @data_path = NULL
SET @offset = NULL
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[AuditLog]')
AND type in (N'U'))
CREATE TABLE [dbo].[AuditLog](
[event_time] [datetime2](7) NULL,
[sequence_number] [int] NULL,
[action_id] [varchar](4) NULL,
[action_name] [nvarchar](128) NULL,
[succeeded] [bit] NULL,
[permission_bitmask] [bigint] NULL,
[is_column_permission] [bit] NULL,
[session_id] [smallint] NULL,
[server_principal_id] [int] NULL,
[database_principal_id] [int] NULL,
[target_server_principal_id] [int] NULL,
[target_database_principal_id] [int] NULL,
[object_id] [int] NULL,
[class_type] [varchar](2) NULL,
[class_type_desc] [nvarchar](35) NULL,
[session_server_principal_name] [nvarchar](128) NULL,
[server_principal_name] [nvarchar](128) NULL,
[server_principal_sid] [binary](85) NULL,
[database_principal_name] [nvarchar](128) NULL,
[target_server_principal_name] [nvarchar](128) NULL,
[target_server_principal_sid] [binary](85) NULL,
[target_database_principal_name] [nvarchar](128) NULL,
[server_instance_name] [nvarchar](128) NULL,
[database_name] [nvarchar](128) NULL,
[schema_name] [nvarchar](128) NULL,
[object_name] [nvarchar](128) NULL,
[statement] [nvarchar](2000) NULL,
[additional_information] [nvarchar](2000) NULL,
[file_name] [nvarchar](260) NULL,
[audit_file_offset] [bigint] NULL
) ON [PRIMARY]
-- Zeit und Offset des letzten Protokolleintrags abrufen
SELECT @data_path = file_name, @offset = audit_file_offset
FROM AUDITLOG
WHERE event_time = (select MAX(event_time)FROM AUDITLOG)
INSERT INTO [Test1].[dbo].[AuditLog]
([action_name]
82
,[class_type_desc]
,[event_time]
,[sequence_number]
,[action_id]
,[succeeded]
,[permission_bitmask]
,[is_column_permission]
,[session_id]
,[server_principal_id]
,[database_principal_id]
,[target_server_principal_id]
,[target_database_principal_id]
,[object_id]
,[class_type]
,[session_server_principal_name]
,[server_principal_name]
,[server_principal_sid]
,[database_principal_name]
,[target_server_principal_name]
,[target_server_principal_sid]
,[target_database_principal_name]
,[server_instance_name]
,[database_name]
,[schema_name]
,[object_name]
,[statement]
,[additional_information]
,[file_name]
,[audit_file_offset])
SELECT name, class_type_desc, C.*
FROM sys.dm_audit_actions A, sys.dm_audit_class_type_map B,
sys.fn_get_audit_file('C:\logs\*', @data_path, @offset) C
WHERE A.action_id = C.action_id
AND B.class_type = C.class_type
83
Verwenden von SSIS zum Verschieben von Protokollen in eine
Datenbanktabelle ("LoadLogsPackage.dtsx")
Wie im vorherigen Abschnitt erläutert und in Abbildung 40 gezeigt, kann SQL Server
Integration Services (SSIS) verwendet werden, um Daten zu übertragen und um während
des Übertragungsprozesses Daten zu transformieren. Abbildung 41 zeigt die Tasks aus
einem SSIS-Projekt zum Verschieben der Daten aus einer SQL Server Audit-Datei in eine
Datenbanktabelle. Der erste Task erstellt die Überwachungstabelle, wenn diese nicht
vorhanden ist. Der zweite Task führt die Übertragung durch.
Abbildung 41: Zwei SSIS-Tasks zum Sammeln von Überwachungsprotokollen
84
Abbildung 42 zeigt die Details des Übertragungstasks. Die Protokollrohdaten werden aus
der SQL Server Audit-Datei gelesen. Die Datei wird mit der Aktionstabelle kombiniert, um den
Aktionsnamen abzurufen. Der Datenstrom wird dann mit der Klassentabelle kombiniert, um
die Klassentypbeschreibung abzurufen. Die endgültigen Daten werden dann in die
Überwachungstabelle eingefügt.
Abbildung 42: Tasks zum Sammeln von Überwachungsdaten und Speichern der
Daten in einer einzelnen Tabelle
85
SSIS speichert die Ausgabe in einem Paket, das mithilfe des SQL Server-Agents in einen
Aufgabenschritt geladen werden kann, so wie in Abbildung 43 gezeigt. Auf diese Weise
kann die Datenübertragung automatisiert werden. Durch Verschieben der Daten aus einer
Protokolldatei in eine lokale Datenbank wird der Zugriff auf Daten durch Administratoren
erleichtert. Besprechen Sie dies mit den Prüfern, da einige möglicherweise darüber besorgt
sein könnten, dass Protokolle einfacher geändert werden können. Die Datei
"CreateAuditJob.sql" erstellt einen Überwachungsauftrag, der mithilfe der Paketdatei
"LoadLogsPackage.dtsx", die sich im Verzeichnis "C:\" befindet, alle fünf Minuten ausgeführt
wird.
Abbildung 43: In SQL Server-Agent geladenes SSIS-Paket
86
Zugreifen auf SQL Server Audit-Ereignisse mithilfe von Excel
("AuditReport.xlsx")
Nachdem die Daten in einer Datenbanktabelle gespeichert wurden, können sie mithilfe von
Excel in eine Tabellenkalkulation importiert werden. Gleiches gilt für SQL Server AuditProtokolle. Excel stellt einen bekannten Mechanismus zum Analysieren von Daten in einem
Tabellenformat bereit. Abbildung 44 zeigt eine Ansicht der im vorherigen Abschnitt
beschriebenen SQL Server Audit-Tabelle, nachdem diese mithilfe des Menübands "Daten" in
Excel importiert wurde. Filter können verwendet werden, um die Ansicht auf einen Bereich
von Daten, Aktionen, Objekten und Benutzern zu beschränken.
Abbildung 44: In Excel geladene SQL Server Audit-Protokolle
87
Mit dem Menüband Einfügen in Excel kann aus den Daten eine dynamische PivotTable®Sicht erstellt werden. Abbildung 45 zeigt ein Beispiel einer PivotTable, die aus den Daten
der Tabellenkalkulation mit den Überwachungsinformationen erstellt wurde. In die PivotTable
wurden Felder für Aktion, Klassentyp und Serverprinzipalname eingefügt. Für die PivotTable
wurde ein Balkendiagramm erstellt, das die Anzahl von Aktionen, die für bestimmte Objekte
ausgeführt wurden, geordnet nach Typ anzeigt. Anhand der PivotTable-Feldliste kann
bestimmt werden, welche Felder Teil des Diagramms sind und wie sie verwendet werden.
Abbildung 45: Aus SQL Server Audit-Protokollen generierte PivotTable
88
Abrufen einer IP-Adresse aus einem Überwachungsprotokoll
Wenn Sie Überwachungsprotokolle anzeigen, können Sie anhand des Felds
"server_principal_name" die ID des Benutzers bestimmen, der den protokollierten Vorgang
ausgeführt hat. Wenn die Datenbankverbindung jedoch über ein SQL Server-Konto und nicht
über ein Windows-Konto hergestellt wird, stellt das Feld "server_principal_name" keine
nützlichen Informationen bereit, mit denen die Person, die den Vorgang ausgeführt hat, auf
einfache Weise ermittelt werden kann. Die Protokolle stellen jedoch Informationen bereit, die
Aufschluss über die mögliche Identität des Benutzers geben. Jeder Protokolleintrag enthält
eine Sitzungs-ID (session_id). Dieses Feld ist der ID zugeordnet, die dem Benutzer bei der
Anmeldung zugewiesen wird. In dem aktuellen Anmeldedatensatz (gekennzeichnet durch die
Aktions-ID "LGIS"), der dieselbe ID aufweist, enthält das Feld "additional_information" die IPAdresse des Computers, der eine Verbindung mit der Datenbank hergestellt hat. Anhand der
Protokolle dieses Computers kann festgestellt werden, wer den Computer verwendet hat, als
die Verbindung hergestellt wurde. Das folgende Skript kann verwendet werden, um die IPAdresse aus dem Feld "server_principal_name" abzurufen.
SELECT event_time, statement,
CAST(additional_information AS XML).value('declare namespace
z="http://schemas.microsoft.com/sqlserver/2008/sqlaudit_data";
(//z:address)[1]', 'nvarchar(300)')
FROM sys.fn_get_audit_file('C:\logs\*',Null, Null)
WHERE action_id = 'LGIS'
ORDER BY event_time DESC
89
Überwachungsprojekt
Dieses Projekt wurde im Rahmen einer Zusammenarbeit zwischen Caregroup Healthcare
(Ayad Shammout), Microsoft Consulting Services (Andy Roberts) und SQL Customer
Advisory Team (Denny Lee) erstellt. Ziel der Zusammenarbeit war die Erstellung einer
Arbeitsvorlage eines End-to-End-Überwachungsprojekts, das Überwachungsprotokolle
abruft, Daten transformiert, lädt und aggregiert und Berichte erstellt. Weitere Informationen
finden Sie im (noch nicht veröffentlichten) Audit Project Technical Spotlight.
Abbildung 46: Überwachungsprojektmappen-Workflow
Process Audit Information
Use SSIS to process SQL Server Audit Information
SQL Server Audit Data
SSIS
SQL Audit
SQL 2008
Ge
ne
ra
te
Re
po
Transfer
File Server
rts
Logs
SQL Server
2008
SQL Server
2008
SQL Server 2008
Security Reports
SSRS 2008
Security Analysis
Compliance
Reports
Security Information
Erwerb der Lösung
Entzippen Sie die Datei "SQLAudit.zip". Die ZIP-Datei sollten folgende Dateien enthalten:
 SQLAuditRepositoryDatabase.sql – die SQL-Datei, die Ihre SQLAudit-Datenbank
erstellt

LoadLogsPackage.dtsx – ein SSIS-Paket, das die Überwachungsdaten abruft,
extrahiert, transformiert und lädt und die Überwachungsprotokolle archiviert

SQLAuditReports – eine SSRS-Lösung (SQL Server Reporting Services), die Sie auf
dem Server bereitstellen können, um Überwachungsberichte anzuzeigen
90
Erstellen der SQLAudit-Datenbank
Diese Datenbank ist das Repository der Überwachungsdaten.
1. Öffnen Sie die Datei "SQLAuditRepositoryDatabase.sql" in SQL Server Management
Studio, und aktivieren Sie den SQLCMD-Modus (wählen Sie im Menü Abfrage den
SQLCMD-Modus aus). Wenn der SQLCMD-Modus aktiviert ist, sind die :setvar-Zeilen
grau hervorgehoben.
2. Definieren Sie die folgenden Variablen.
Variable
Beschreibung
Kommentare
DataDirectory
SQL DB-Datenordner
(z. B. "H:\sqldata\")
LogDirectory
Stellen Sie sicher, dass die Pfade mit einem
umgekehrten Schrägstrich enden ("\").
Stellen Sie sicher, dass die Pfade mit einem
umgekehrten Schrägstrich enden ("\").
SQL DB-Protokollordner
(z. B. "H:\sqllog\")
DatabaseName Name der Datenbank
(z. B. SQLAudit)
Keine.
3. Führen Sie das Skript aus, um die Datenbank zu erstellen.
Installieren Sie das LoadLogsPackageSSIS-Paket.
Sie erstellen die zum Ausführen des SSIS-Pakets erforderlichen Konfigurationsdateien.
1. Doppelklicken Sie auf SQLAuditLoader.SSISDeploymentManifest. Wenn mit dem
Paket kein Programm verknüpft ist, navigieren Sie zu "C:\Programme\Microsoft SQL
Server\100\DTS\Binn\dtsinstall.exe", um es im Paketinstallations-Assistenten zu
öffnen. Weitere Informationen zum Installieren von Paketen finden Sie unter
http://msdn.microsoft.com/de-de/library/ms365321(SQL.100).aspx
2. Klicken Sie auf Weiter, klicken Sie auf Bereitstellung im Dateisystem, und klicken
Sie dann auf Weiter. Wählen Sie einen Installationsordner aus, beispielsweise
C:\Programme\Microsoft SQL Server\100\DTS\Packages\SQLAuditLoader, klicken
Sie auf Weiter, und klicken Sie dann auf Weiter.
3. Konfigurieren Sie folgende Paketeigenschaften.
Parameter
Beispielwert
SSIS-Protokollanbieter für
SQL Server
SqlAuditLogRepository
SqlAuditLogRepository
Data Source=.;Initial
Catalog=$DBName$;Provider=SQLNCLI10.1;Integra
ted Security=SSPI;Auto Translate=False;Application
Name=SSIS-Package-{21C9032A-E45A-41F2BA67-9EF35FCD18C3}SqlAuditLogRepository;
Geben Sie den Namen der
SQLAudit-Datenbank an (z. B.
SQLAudit).
91
User:auditLogArchivePath
Pfad, unter dem die verarbeiteten
Überwachungsprotokolle archiviert
werden.
User:LogFilePath
Ort der Überwachungsprotokolle
D:\audit\logs\archive
D:\Audit\logs
Diese Werte werden in der Datei LoadLogsPackageConfig.dtsConfig gespeichert.
Sie können die Werte manuell ändern, wenn Sie nach der Installation des SSISPakets Änderungen vornehmen müssen.
Hinweis:
Diese Version des Überwachungsprojekts setzt voraus, dass ein lokales
Dateiverzeichnis vorhanden ist, um die Überwachungsprotokolle
abzurufen.
4. Klicken Sie auf Weiter, und klicken Sie dann auf Fertig stellen.
Ausführen des SSIS-Pakets
Bei der Paketausführung wird angenommen, dass sich im Ordner "D:\audit\logs"
Protokolldateien befinden (so wie oben angegeben). Nach der Verarbeitung werden die
Protokolldateien in den Ordner "D:\audit\logs\archive" verschoben.
1. Wechseln Sie über eine Eingabeaufforderung zum SQLAuditLoader-Verzeichnis (z. B.
"C:\Programme\Microsoft SQL Server\100\DTS\Packages\SQLAuditLoader").
2. Führen Sie den folgenden Befehl aus:
dtexec /ConfigFile LoadLogsPackageConfig.dtsConfig /File
LoadLogsPackage.dtsx
Hinweis:
Stellen Sie sicher, dass Sie die SQL Server 2008-Version von DTExec ausführen.
Wenn Sie DTExec auf Servern mit mehreren Instanzen von SQL Server 2005 und
SQL Server 2008 ausführen, wird ggf. standardmäßig die SQL Server 2005Version (9.00.xxxx) von DTExec und nicht die SQL Server 2008-Version
(10.00.xxxx) verwendet. Um dies zu vermeiden, können Sie einen
vollqualifizierten DTExec-Pfad verwenden (z. B. C:\Programme\Microsoft SQL
Server\100\DTS\Binn\dtexec.exe).
Da viele Überwachungsprotokolldateien vorhanden sind, wird empfohlen, dieses SSISPaket regelmäßig auszuführen (z. B. alle 15 Minuten), um sicherzustellen, dass die Daten
zeitgerecht geladen werden.
Generieren von Aggregatberichten
Beim Ausführen des SSIS-Pakets werden die aud.AuditLog_[EventType]-Tabellen in der
SQLAudit-Datenbank mithilfe der Überwachungsprotokolle aufgefüllt. Da jedoch sehr viele
92
Überwachungsereignisse vorhanden sind, ist es von Vorteil, Aggregatberichte (d. h.
Zusammenfassungsberichte) zu erstellen, die eine Zusammenfassungsansicht aller
Überwachungen bereitstellen.
 Hierzu stellen Sie in SQL Server Management Studio eine Verbindung mit der
SQLAudit-Datenbank her und führen dann folgende Befehle aus.
exec
exec
exec
exec
aud.rspAggServerActions @EventDate = '08/22/2008'
aud.rspAggDatabaseActions @EventDate = '08/22/2008'
aud.rspAggDMLActions @EventDate = '08/22/2008'
aud.rspAggDDLActions @EventDate = '08/22/2008'
Hierdurch werden die aud.rptAgg[AuditEvent]Actions-Tabellen mit den Statistiken
über Zusammenfassungen aufgefüllt.
 Es wird vorgeschlagen, diese gespeicherten Prozeduren jede Nacht auszuführen
(z. B. mithilfe des SQL Server-Agents), um diese täglichen Informationen auf dem
neuesten Stand zu halten. Das folgende Skript veranschaulicht beispielsweise eine
Aufgabe, die jede Nacht ausgeführt wird:
-- @LastDay-Variable deklarieren, um sie auf das Datum des letzten
Tages festzulegen
-- Der Auftrag wird nach Mitternacht ausgeführt, um die Daten für den
letzten Tag zu aggregieren
Declare @LastDay char(11)
select @LastDay = Convert(char(11), getdate()-1 , 1)
Select @LastDay
Exec
Exec
Exec
Exec
aud.rspAggServerActions @LastDay
aud.rspAggDatabaseActions @LastDay
aud.rspAggDDLActions @LastDay
aud.rspAggDMLActions @LastDay
Auf welcher Partition befinden sich die Daten?
Das SQL-Skript zum Erstellen der Überwachungsdatenbank (SQLAudit) erstellt automatisch
zwölf monatliche Dateigruppen, beginnend mit dem Monat, in dem Sie das Skript ausgeführt
haben. Außerdem wird mit dem Partitionsschema und den Partitionsfunktionen sichergestellt,
dass die aud.AuditLog_%-Tabellen nach Monat partitioniert und mit den monatlichen
Datengruppen korreliert werden. Verwenden Sie das folgende Skript, um anzuzeigen, welche
Datenzeilen sich in welchen Tabellenpartitionen befinden.
select partition_id, OBJECT_NAME(object_id), object_id, index_id,
partition_number, partition_id, rows as [RowCount], x.value
from sys.partitions
left outer join (
select boundary_id, value
from sys.partition_range_values
where function_id = (
select function_id
from sys.partition_functions
where [name] = 'monthly_partition_function'
)
) x
on x.boundary_id = partition_number - 1
where OBJECT_NAME(object_id) like 'AuditLog%' and index_id = 1
order by OBJECT_NAME(object_id), partition_number
Anzeigen von Berichten
93
Wie oben im Abschnitt "Überwachen sensibler Vorgänge" erwähnt, gibt es eine Reihe von
Berichten, die von den Überwachungsprotokollen generiert werden können. Sie können diese
Berichte anzeigen, indem Sie die SQLAuditReports-Reporting Services-Lösung bereitstellen.
1. Öffnen Sie die SQLAuditReports-Reporting Services-Lösung im Microsoft Visual
Studio®-Bereitstellungssystem.
2. Legen Sie die Bereitstellungseigenschaft "TargetServerURL" auf Ihren Server fest,
d. h. ändern Sie http://campschurmann/ in den Namen Ihres Servers.
Abbildung 47: SQLAuditingReports-Eigenschaftenseite
3. Stellen Sie sicher, dass die freigegebene Datenquelle "SQLAudit.rds" auf Ihre eigene
SQLAudit-Datenbank zeigt (und nicht auf die Version der SQLAudit-Datenbank eines
anderen Servers).
4. Stellen Sie die Berichte bereit (über "Erstellen > Bereitstellen"). Sie können die
Berichte unter folgendem Pfad anzeigen: Fehler! Hyperlink-Referenz ungültig.
Bekannte Probleme

Es kann vorkommen, dass in den Überwachungsprotokollen nicht der Name der
Serverinstanz aufgezeichnet wird, d. h. in den Überwachungsprotokollen ist das Feld
für den Serverinstanznamen leer. Um dies zu umgehen, durchsucht das SSIS-Paket
das gesamte Überwachungsprotokoll, ermittelt den Serverinstanznamen und weist
diesen Namen dem gesamten Protokoll zu (da ein Überwachungsprotokoll nur von
einem Server stammt). Es gibt jedoch auch Situationen, in denen nicht einmal dies
möglich ist, da die gesamte Datei keinen Serverinstanznamen enthält. Sie können
diesem Fall vorbeugen, indem Sie die Überwachungsprotokolle gemäß der
Benennungskonvention einrichten.
94
SQLAudit$%Server$InstanceName%_%GUID%.sqlaudit
[aud].[fn_GetServerInstanceName] analysiert den Namen der Überwachungsdatei,
ruft den hervorgehobenen Serverinstanznamen (%Server$InstanceName%) ab und
verwendet diesen Namen, sofern er nicht bereits vorhanden ist. Um die Protokolldatei
gemäß dieser Benennungskonvention zu benennen, ändern Sie bei der Erstellung der
Serverüberwachung den Namen der Überwachung unter Verwendung des
SQLAudit$Server$InstanceName-Formats.
Verwalten der Richtlinien der richtlinienbasierten Verwaltung
Die richtlinienbasierte Verwaltung ist eine gute Möglichkeit, die Datenbankverwaltung zu
automatisieren. Die Verwaltung mehrerer Server und die skriptbasierte Verwaltung mithilfe
der richtlinienbasierten Verwaltung sind keine einfachen Aufgaben. Dieser Abschnitt enthält
Anleitungen und Skripts zum Erweitern der Funktionen der richtlinienbasierten Verwaltung.
Erstellen einer Richtlinie mithilfe von PowerShell
Der Blog von Sethu Srinivasan ist eine hervorragende Ressource, um das Erstellen einer
Richtlinie mithilfe von PowerShell (und nicht manuell über SQL Server Management Studio)
zu erlernen. Sie können über den folgenden Link auf den Blog zugreifen.
http://blogs.msdn.com/sethus/archive/2008/06/16/sql-2008-powershell-script-for-creating-apolicy-and-saving-to-file.aspx
Der Microsoft.SqlServer.Management.Dmf-Namespace enthält Klassen, die Objekte der
richtlinienbasierten Verwaltung von SQL Server darstellen.
Weitere Informationen finden Sie unter http://msdn.microsoft.com/dede/library/microsoft.sqlserver.management.dmf.aspx.
Bereitstellen von Richtlinien der richtlinienbasierten Verwaltung mit
PowerShell ("DeployPBMPolicies.ps1")
Das folgende PowerShell-Skript kann verwendet werden, um Skripts der richtlinienbasierten
Verwaltung in einer anderen Datenbankinstanz bereitzustellen:
# Richtlinien von einem Server exportieren
$policydir = "C:\Policies\"
del C:\Policies\*
$sourceserver = "<Machine>\<Instance>"
$conn = new-object
Microsoft.SQlServer.Management.Sdk.Sfc.SqlStoreConnection("server=$so
urceserver;Trusted_Connection=true");
$polstore = new-object
Microsoft.SqlServer.Management.DMF.PolicyStore($conn);
$fileprefix = "ExportedPolicy_"
$policycount = 0
#Temporäre Problemumgehung bis ein Fehler behoben wird.
#$sourcepolicycount = $polstore.Policies.Count;
foreach ($policy in $polstore.Policies)
95
{
$policycount++;
$StringWriter = New-Object System.IO.StringWriter;
$XmlWriter = New-Object System.XMl.XmlTextWriter $StringWriter;
#$polstore.ExportPolicy($polstore.Policies[$policy.Key],
$XmlWriter);
$policy.serialize($XmlWriter);
$XmlWriter.Flush();
$StringWriter.Flush();
$outputfile = $policydir + ("{0}.xml" -f (Encode-SqlName
$policy.Name));
$StringWriter.ToString() | out-file $outputfile;
}
if ($policycount -gt 0)
{
Write-Host $policycount "of" $sourcepolicycount "policies have
been exported to" $policydir -foregroundcolor "green"
}
else
{
write-host "No policies were exported" -foregroundcolor "red"
}
# Richtlinien auf mehrere Server importieren
$policylocation = "C:\Policies"
$serversfile = "C:\Servers.txt"
$servercount = 0
$servers = Get-Content $serversfile
foreach ($server in $servers) {
$servercount++;
$conn = new-object
Microsoft.SQlServer.Management.Sdk.Sfc.SqlStoreConnection("server='$s
erver';Trusted_Connection=true");
$polstore = new-object
Microsoft.SqlServer.Management.DMF.PolicyStore($conn);
foreach ($fileobject in get-childitem $policylocation){
$file = $fileobject.FullName
$reader = [System.Xml.XmlReader]::Create((convert-path
$file));
$output = $polstore.ImportPolicy($reader, 0, $true,
$true);
}
}
if ($servercount -gt 0)
{
Write-Host "Policies have been imported to" $servercount
"servers." -foregroundcolor "green"
}
else
{
write-host "No policies were imported" -foregroundcolor "red"
}
96
Übertragen von Richtlinienzustandsprüfungen in eine Datenbanktabelle
Unten wird eine Gruppe von PowerShell- und SQL-Skripts angezeigt, die
Richtlinieninformationen von mehreren Servern extrahiert und lädt und diese Informationen
an einem zentralen Ort einfügt, von dem aus Sie die Informationen anzeigen können.
Hinweis:
Bei der folgenden Übertragung einer Richtlinienzustandsprüfung findet eine
direkte Datenbanktabellenübertragung der Richtliniendaten aus der msdbDatenbank in die zentrale Datenbank statt. Eine potenziell bessere Möglichkeit für
diese Aufgabe stellt PBMTalk von Dan Jones bereit, der auch in diesem SDK
enthalten ist. Weitere Informationen finden Sie im PMTalk-Ordner, der eine
PowerPoint-Präsentation, ein richtlinienbasiertes Klassendiagramm sowie Code
für die richtlinienbasierte Verwaltung enthält, um die Daten der richtlinienbasierten
Verwaltung zu exportieren.
Erwerb der Lösung
Entzippen Sie die Datei "Policy.zip" in einem Ordner Ihrer Wahl (z. B. "D:\audit\code\Policy").
Aktualisieren der SQLAudit-Datenbank
Verwenden Sie diese Datenbank als zentralen Server. Um die erforderlichen Richtliniendaten
hinzuzufügen, installieren Sie "PolicyLoad.sql" auf dem zentralen Server, auf dem Sie alle
Berichte prüfen möchten, beispielsweise auf dem Server mit der SQLAuditÜberwachungsdatenbank. Auf diese Weise enthält Ihre zentrale SQLAudit-Datenbank jetzt
alle Richtlinien- und Überwachungsdaten.
Füllen Sie in der zentralen SQLAudit-Datenbank die Tabelle pol.ServerList mit allen Servern
auf, aus denen Sie Richtlinieninformationen extrahieren möchten. Beispiel:
insert into pol.ServerList values ('campschurmann', 1)
insert into pol.ServerList values ('emmonsroute', 1)
insert into pol.ServerList values ('emmonsglacier', 0)
wobei "1" aktiviert und "0" deaktiviert ist.
Ausführen des PowerShell-Skripts
Wie unter Verwenden der richtlinienbasierten Verwaltung zum Definieren, Bereitstellen und
Überprüfen von Richtlinien erläutert, erfüllt dieses Skript den Zweck, die oben angegebene
pol.ServerList-Tabelle zu lesen und alle in dieser Tabelle aufgelisteten Server zu
durchlaufen, die Richtliniendaten zu extrahieren und dann die Daten auf einen zentralen
Server zu laden. Kopieren Sie das PowerShell-Skript "PolicyExLoad.ps1" auf den zentralen
Server, z. B. "D:\audit\code\Policy".
Stellen Sie sicher, dass dieser Ordner auch einen Archivordner enthält (z. B.
"D:\audit\code\Policy\archive").
Dies ist ein PowerShell-Skript, das mithilfe von SQL Server-Snap-Ins sicherstellt, dass Sie
"sqlps" ausgeführt haben, bevor Sie die normale Eingabeaufforderung öffnen (und nicht das
PowerShell-Befehlsfenster).
97
Über die Befehlszeile können Sie folgenden Befehl ausführen.
.\PolicyExLoad.ps1 "[SQLCentral]" "[Datenbank]" "[Datum]" "[Ordner]"
SQLCentral: Die Serverinstanz, die die zentrale Datenbank (d. h. die SQLAuditDatenbank) enthält.
Datenbank: In den meisten Fällen die SQLAudit-Datenbank.
Datum: Das letzte Datum (d. h. ein Tag), an dem die Richtlinien ausgeführt wurden.
Wenn Sie alle Richtlinieninformationen abrufen möchten, verwenden Sie
Anführungszeichen ("") anstelle eines Datums.
Ordner: Das zentrale Repository für Richtlinienprotokolldateien; wie oben erwähnt,
sollte dieser Ordner auch einen Archivordner enthalten.
Von hier stellt das Skript eine Verbindung mit jedem Server her, extrahiert die
Richtliniendaten und schreibt diese dann als CSV-Datei auf eine Protokollfreigabe. Beachten
Sie, dass es zwei Typen von Richtliniendaten gibt:
 Richtliniendimensionstabellen: Diese Tabellen enthalten die Grundkonstrukte der
Richtlinien (Richtlinienname, Bedingungen, Kategorien usw.). Wenn eine Richtlinie
geändert oder gelöscht wird, werden diese Informationen in den entsprechenden
msdb-Tabellen in den Richtliniendaten auf den Remoteservern aktualisiert. Das
folgende Skript ruft den Richtliniennamen, die Bedingungen und die
Kategorieinformationen aus folgenden Tabellen ab:
o syspolicy_policies
o syspolicy_conditions
o syspolicy_policy_categories
 Richtlinienfaktentabellen: Da diese Tabellen den Ausführungsverlauf und Details
zum Richtlinienzustand enthalten, werden die Daten in diesen Tabellen nicht
aktualisiert (nur neue Ereignisse werden eingefügt). Das folgende Skript ruft
Ausführungsverlauf, Details zum Ausführungsverlauf und Richtlinienzustand aus
folgenden Tabellen ab:
o syspolicy_policy_execution_history
o syspolicy_policy_execution_history_details
o syspolicy_system_health_state
Das Extrahierungsskript erstellt dann CSV-Dateien für jede Tabelle mit der folgenden
Benennungskonvention:
ServerName_[Richtlinientabelle]_jjjjMMdd_hhmmss.csv
98
Das PowerShell-Skript greift dann auf die gespeicherte Prozedur
[pol].[uspImportPolicyData] zu, die zusätzliche Geschäftslogik zum Importieren aller CSVDateien in die entsprechende Tabelle enthält.

Wenn die Datei für eine Richtliniendimensionstabelle bestimmt ist, werden die Daten
zuerst in eine Stagingtabelle eingefügt. Dann werden alle mit den Serverinstanzen
verknüpften Daten in der Stagingtabelle aus der Richtlinientabelle entfernt. Der Grund
dafür ist, dass die Richtlinieninformationen (z. B. Name des Erstellers, verwendete
Facets und Bedingungen oder aktualisierter Text) stets aktuell sein sollen. Dann wird
die Stagingtabelle zum Auffüllen der Richtlinientabelle verwendet.

Wenn die Datei für eine Richtlinienfaktentabelle bestimmt ist, wird sie einfach in die
entsprechende Faktentabelle hochgeladen. Da die Richtlinienfaktentabellen über
eindeutige Indizes verfügen, wird sichergestellt, dass keine Duplikate in das System
gelangen. Auch wenn Sie mehrere Richtlinienfaktendateien haben, die mehrmals
ausgeführt wurden, können diese auch weiterhin ausgeführt werden. Die Datenbank
stellt sicher, dass keine doppelten Daten eingefügt werden.

Nachdem die Datei importiert wurde, wird sie in das Verzeichnis <Ordner\Archiv>
importiert, damit sie nicht erneut verarbeitet wird.
99
Anzeigen einiger Richtlinienberichte
Installieren Sie das SQL-Skript "PolicyReports.sql" auf dem zentralen Server und in der
Datenbank (wo "PolicyLoad.sql" installiert wurde).
So wie in Verwenden der richtlinienbasierten Verwaltung zum Definieren, Bereitstellen und
Überprüfen von Richtlinien erläutert, gibt es eine Reihe von Berichten, die von den
Überwachungsprotokollen generiert werden können. Sie können diese Berichte anzeigen,
indem Sie die [Richtlinienberichte - PBM]-Reporting Services-Lösung bereitstellen.
 Öffnen Sie die [Richtlinienberichte - PBM]-Reporting Services-Lösung in Visual
Studio.
 Legen Sie die Bereitstellungseigenschaft "TargetServerURL" auf Ihren Server fest,
d. h. ändern Sie http://campschurmann/ in den Namen Ihres Servers.
Abbildung 48: Eigenschaftenseite der [Richtlinienberichte – PBM]-Reporting
Services-Lösung
 Stellen Sie sicher, dass die freigegebene Datenquelle "SQLAudit.rds" auf Ihre eigene
SQLAudit-Datenbank zeigt (und nicht auf die Version der SQLAudit-Datenbank eines
anderen Servers).
 Stellen Sie die Berichte bereit (Über "Erstellen" > "Bereitstellen"). Sie können die
Berichte unter folgendem Pfad anzeigen: Fehler! Hyperlink-Referenz ungültig.
100
Zusammenfassung
Microsoft und das SQL Server-Team setzen sich für die Bereitstellung einer Technologie ein,
die Kunden und Partner dabei unterstützt, ihre Kompatibilitätsanforderungen zwecks
Einhaltung von Vorschriften zu erfüllen. SQL Server 2008 stellt die Technologie und
Funktionen bereit, auf die Organisationen sich stützen, um den wachsenden
Herausforderungen bei der Verwaltung von Daten und der Bereitstellung von aussagefähigen
Einblicken für Benutzer gerecht zu werden. Mit maßgeblichen Weiterentwicklungen in
Schlüsselbereichen stellt SQL Server 2008 eine Plattform für die agile Entwicklung von
Kompatibilitätslösungen bereit.
Dieses Whitepaper bietet nur eine Übersicht über die kompatibilitätsbezogenen Features und
Funktionen in SQL Server 2008. Wir planen, die kompatibilitätsbezogenen Funktionen in
zukünftigen Versionen zu erweitern. Weitere Informationen zur Kompatibilität finden Sie unter
http://www.microsoft.com/sql.
Weitere Informationen:
http://www.microsoft.com/sqlserver/: SQL Server-Website
http://technet.microsoft.com/de-de/sqlserver/: SQL Server TechCenter
http://msdn.microsoft.com/de-de/sqlserver/: SQL Server DevCenter
http://www.microsoft.com/sqlserver/2008/en/us/wp-sql-2008-security.aspx: SQL Server
Security White Paper
http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1626&SiteID=1: SQL Server
Security Forum
http://blogs.msdn.com/sqlsecurity/: SQL Server Security Blog
http://blogs.msdn.com/sqlpbm/: SQL Server Policy-Based Management Blog
101
War dieses Whitepaper hilfreich? Senden Sie uns Ihr Feedback. Nennen Sie uns anhand einer
Skala von 1 (schlecht) bis 5 (sehr gut) die Bewertung dieses Whitepapers und die Gründe für
Ihre Bewertung. Beispiel:


Vergeben Sie eine gute Bewertung auf Grund der guten Beispiele, hervorragenden
Screenshots, klaren Formulierungen oder aus einem anderen Grund?
Vergeben Sie eine weniger gute Bewertung auf Grund schlechter Beispiele, ungenauer
Screenshots oder unklarer Formulierungen?
Dieses Feedback trägt zur Verbesserung der Qualität von uns veröffentlichter Whitepapers bei.
Feedback senden
Herunterladen