Entwerfen von SQL Server

Werbung
165
K A P I T E L
5
Entwerfen von SQL ServerEndpunkten
Der Entwurf eines soliden Sicherheitssystems erfordert die Implementierung einer umfassenden Strategie. Diese Strategie wird häufig als „Verteidigung in der Tiefe“ bezeichnet. Endpunkte wurden mit Microsoft SQL Server 2005 als eine erste Sicherheitsbarriere für alle
Verbindungen vorgestellt. Dieses Kapitel behandelt die Konfiguration von Endpunkten und
erklärt, wie diese Funktionalität verwendet werden kann, um unbefugten Datenzugriff zu
verhindern.
In diesem Kapitel abgedeckte Prüfungsziele:
Planen der SQL Server-Sicherheit auf Dienstebene
Entwerfen einer Endpunktstrategie für sichere HTTP-Verbindungen
Lektionen in diesem Kapitel:
Lektion 1: Übersicht über Endpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Lektion 2: TCP-Endpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Lektion 3: HTTP-Endpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Bevor Sie beginnen
Damit Sie die Lektionen in diesem Kapitel durcharbeiten können, müssen Sie eine Instanz von
SQL Server und die Beispieldatenbank für AdventureWorks installiert haben.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
166
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Lektion 1: Übersicht über Endpunkte
Endpunkte kontrollieren, wie auf eine Instanz von SQL Server und mit welchen Kommunikationsmethoden zugegriffen werden kann. Ähnlich wie Firewalls im Netzwerk stellen Endpunkte eine Sicherheitsebene zwischen den Anwendungen und Ihrer SQL Server-Instanz dar.
Diese Lektion vermittelt einen grundlegenden Überblick über die Architektur von Endpunkten
in SQL Server 2005.
Am Ende dieser Lektion werden Sie in der Lage sein, die folgenden Aufgaben
auszuführen:
Verstehen von Endpunkten, die in Sicherheitsinstanzen verwendet werden
Veranschlagte Zeit für die Lektion: 15 Minuten
Endpunktarten und Nutzlasten
Ein Endpunkt hat zwei grundlegende Bestandteile: ein Transportprotokoll und die Nutzlast.
Endpunkte können für zwei verschiedene Transportprotokolle erstellt werden: TCP und
HTTP. Endpunkte verfügen darüber hinaus über eine Nutzlast, die die Grundkategorie des
zulässigen Datenverkehrs definiert. Die Nutzlast kann mit den Werten SOAP, TSQL,
SERVICE_BROKER und DATABASE_MIRRORING angegeben werden.
Tabelle 5.1 listet die gültigen Kombinationen von Endpunkttransporten und Endpunktnutzlasten auf.
Tabelle 5.1 Transportprotokolle und Nutzlasten für Endpunkte
Transport
Nutzdaten
TCP
TSQL
TCP
SERVICE_BROKER
TCP
DATABASE_MIRRORING
HTTP
SOAP
Anhand der Kombination von Endpunkttransport und Nutzlast kann SQL Server den zulässigen Datenverkehr bereits filtern, bevor die eigentlichen Befehle die SQL Server-Instanz erreichen. Nehmen Sie beispielsweise an, dass Sie einen TCP-Endpunkt mit einer Nutzlast von
TSQL definiert haben. Würde eine Anwendung versuchen, HTTP-, SERVICE_BROKERoder DATABASE_MIRRORING-Daten über diesen Endpunkt zu senden, würde die Verbindung zurückgewiesen, ohne dass die Anforderung authentifiziert werden muss.
Dieser Prozess ist mit der Funktionsweise von Firewalls im Netzwerk vergleichbar. Netzwerkadministratoren konfigurieren Firewalls, um Datenverkehr nur über bestimmte TCP- und
UDP-Ports zuzulassen. Jeder Versuch, Anforderungen über blockierte Ports zu senden, wird
an der Firewall zurückgewiesen. Endpunkte funktionieren auf gleiche Art und Weise. Nicht
ordnungsgemäß formatierte Anforderungen werden anhand der Endpunktdefinition abgelehnt.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 1: Übersicht über Endpunkte
167
Endpunktzugriff
Selbst wenn der an den Endpunkt gerichtete Datenverkehr dem erforderlichen Transport und
der richtigen Nutzlast entspricht, wird die Verbindung nur dann zugelassen, wenn der Zugriff
auf den Endpunkt gewährt wurde. Der Zugriff auf einen Endpunkt wird auf zwei Ebenen kontrolliert.
Die erste Ebene der Zugangssicherheit wird vom Status des Endpunktes bestimmt. Ein Endpunkt kann einen von drei Zuständen innehaben: Gestartet (STARTED), Beendet (STOPPED)
und Deaktiviert (DISABLED). Die drei möglichen Endpunktzustände haben die folgenden
Auswirkungen:
STARTED Der Endpunkt ist aktiv, akzeptiert Verbindungen und antwortet auf Anwendungsanforderungen.
STOPPED Der Endpunkt reagiert auf eingehende Verbindungen, liefert aber einen
Verbindungsfehler an die Anwendung zurück.
DISABLED Der Endpunkt ist inaktiv und reagiert nicht auf eingehende Verbindungsversuche.
Die zweite Ebene der Zugangssicherheit bilden die für den Endpunkt konfigurierten Verbindungsberechtigungen. Um eine Verbindung zu einem Endpunkt herstellen zu können, müssen
Anwendungen über ein in SQL Server erstelltes Anmeldekonto verfügen, dem die CONNECTBerechtigung für den Endpunkt gewährt wurde.
All dieser Aufwand mag Ihnen etwas übertrieben erscheinen, nur um eine Verbindung zu einer
SQL Server-Instanz vor der Benutzerauthentifizierung zu erstellen. In früheren Versionen von
SQL Server konnten jegliche Anwendungen SQL Server-Verbindungen herstellen und beliebige Anforderungen übermitteln. Es wurden keine Versuche unternommen, die Gültigkeit der
von den Anwendungen übermittelten Anforderungen sicherzustellen. Dementsprechend war
es viel einfacher, einen Server anzugreifen. Noch bevor die Anforderungen das Datenbankmodul erreichen, gewährleistet SQL Server 2005, dass nur gültige Anforderungen von berechtigten Benutzern übermittelt werden. Administratoren steht außerdem quasi ein Hauptschalter
zur Verfügung, um sofort jeglichen Zugang zu SQL Server zu unterbinden, wenn sie meinen,
dass der Server ein Angriffsziel geworden ist. Sie brauchen lediglich den Status des Endpunktes auf Deaktiviert zu setzen.
Schnelltest
1. Was sind die beiden Bestandteile eines Endpunkts?
2. Welche drei Endpunktzustände gibt es und was ist der Unterschied zwischen diesen?
3. Welche Berechtigung muss gewährt werden, bevor ein Endpunkt eine Verbindungsanforderung akzeptiert?
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
168
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Antworten zum Schnelltest
1. Für Endpunkte muss das Transportprotokoll und die Nutzlast definiert werden. Als
Transport kann TCP oder HTTP dienen. Die Nutzlast kann TSQL,
SERVICE_BROKER, DATABASE_MIRRORING oder SOAP sein.
2. Die drei Endpunktzustände sind Gestartet (STARTED), Beendet (STOPPED) und
Deaktiviert (DISABLED). Ein Endpunkt im Zustand Gestartet akzeptiert und antwortet
auf eingehende Verbindungen. Ein Endpunkt im Zustand Beendet akzeptiert Verbindungsanforderungen, liefert jedoch eine Fehlermeldung zurück. Ein Endpunkt ist
Deaktiviert, wenn dieser nicht auf Anforderungen reagiert.
3. Um Verbindungen aufbauen zu können, muss dem verwendeten Anmeldekonto die
CONNECT-Berechtigung für den Endpunkt gewährt werden.
Übung: Kontrollieren vorhandener Endpunkte
In dieser Übung verwenden Sie dynamische Verwaltungssichten (Dynamic Management
Views, DMV), um Informationen über die in Ihrer Umgebung konfigurierten Endpunkte
zusammenzustellen.
1. Starten Sie Microsoft SQL Server Management Studio (SSMS) und stellen Sie eine Verbindung zu Ihrer SQL Server-Instanz her. Öffnen Sie ein neues Abfragefenster und führen
Sie folgende Befehle aus:
SELECT
SELECT
SELECT
SELECT
SELECT
*
*
*
*
*
FROM
FROM
FROM
FROM
FROM
sys.endpoints
sys.tcp_endpoints
sys.http_endpoints
sys.database_mirroring_endpoints
sys.service_broker_endpoints
2. Untersuchen Sie die Ergebnisse hinsichtlich der Informationen, die von der jeweiligen
dynamischen Verwaltungssicht zurückgegeben werden.
Zusammenfassung der Lektion
SQL Server-Endpunkte verhalten sich ähnlich wie Firewalls, indem sie sämtlichen Datenverkehr unterbinden, der nicht den zulässigen Formaten entspricht.
Jeder Endpunkt ist einem Transportprotokoll zugeordnet, das entweder als TCP oder als
HTTP definiert werden kann.
Der zweite Bestandteil von Endpunkten wird als Nutzlast bezeichnet und als TSQL,
DATABASE_MIRRORING, SERVICE_BROKER oder SOAP definiert.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 1: Übersicht über Endpunkte
169
Lernzielkontrolle
Sie können die folgenden Fragen verwenden, um Ihre Kenntnisse zu den in Lektion 1 „Übersicht über Endpunkte“ vermittelten Informationen zu testen. Die Fragen sind auch auf der
Begleit-CD verfügbar (in englischer Sprache), wenn Sie diese in elektronischer Form verwenden wollen.
Hinweis Antworten
Die Antworten zu den folgenden Fragen sowie Erklärungen, warum die jeweiligen Antworten
richtig oder falsch sind, finden Sie im Abschnitt „Antworten“ am Ende dieses Buches.
1. Sie sind der Datenbankadministrator der Firma A. Datum Corporation. Ihre Benutzer
klagen darüber, dass sie mit ihren Anwendungen keine Verbindung zu SQL Server herstellen können. Sie haben alle Anwendungseinstellungen überprüft. Darüber hinaus
können Sie auf Ihrer Arbeitsstation mit SQL Server Management Studio auf den Server
zugreifen. Allerdings erhalten die Anwendungen weiterhin eine Fehlermeldung, die
besagt, dass der Zugriff verweigert wurde. Was könnte die Ursache des Problems sein?
A. Der Status des TCP-Endpunktes für TSQL ist deaktiviert (DISABLED).
B. Der Status des TCP-Endpunktes für TSQL ist beendet (STOPPED).
C. Remoteverbindungen sind nicht aktiviert.
D. Die Benutzer verfügen nicht über die CONNECT-Berechtigung für den Zugriff auf
den Endpunkt.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
170
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Lektion 2: TCP-Endpunkte
TCP-Endpunkte können für drei verschiedene Nutzlasten konfiguriert werden: TSQL, DATABASE _MIRRORING und SERVICE_BROKER. Diese Lektion beschreibt die Konfigurationsunterschiede zwischen diesen Nutzlasten.
Am Ende dieser Lektion werden Sie in der Lage sein, die folgenden Aufgaben
auszuführen:
Konfigurieren von TCP-Endpunkten zur Unterstützung von Datenbankanwendungen
Veranschlagte Zeit für die Lektion: 30 Minuten
TCP-Protokollparameter
TCP-Endpunkte werden zur Überwachung von bestimmten IP-Adressen und Portnummern
konfiguriert. Die folgenden beiden Parameter können für alle TCP-Endpunkte universell angegeben werden:
LISTENER_PORT
LISTENER_IP
Der LISTENER_PORT-Parameter ist erforderlich. Der TCP- oder TSQL-Endpunkt, der für
jede SQL Server-Instanz während der Installation angelegt wird, ist bereits für Port 1433 oder
die alternative Portnummer der Instanz konfiguriert.
Empfohlene Vorgehensweisen Portnummern
Da es sich bei Port 5022 um die Standardportnummer eines DATABASE_MIRRORING-Endpunktes handelt und Port 1433 der Standardport eines TSQL-Endpunktes ist, sollten Sie eine
andere Portnummer angeben. Wenn Sie die Standardportnummern vermeiden, können Sie
potentielle Angriffe vereiteln oder zumindest erschweren, denn die Angreifer müssen nun
zunächst einen Portscanner verwenden und können nicht einfach eine Verbindung zu Port
1433 oder 5022 herstellen, um einen DoS-Angriff (Denial of Service, DoS) oder einen anderen
Hackerangriff auszuführen.
Der LISTENER_IP-Parameter ist ein optionales Argument. Dieser Parameter kann für einige
Arten von Anwendungen die Sicherheit effektiv erhöhen. Sie können eine bestimmte IPAdresse angeben, die der Endpunkt überwachen soll. Die Standardeinstellung ist ALL. Mit
anderen Worten, der Endpunkt überwacht alle gültigen IP-Adressen auf eingehende Verbindungen. Wenn in Ihrer konkreten Situation allerdings alle Verbindungsanforderungen von
einer einzelnen Quelle stammen, können Sie das LISTENER_IP-Argument angeben. Wenn
Sie eine IP-Adresse angeben, überwacht der Endpunkt nur noch die angegebene Adresse auf
eingehende Verbindungsanforderungen.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 2: TCP-Endpunkte
!
171
Prüfungstipp Abgesehen von den allgemeinen TCP-Einstellungen verfügen TSQL-Endpunkte über keine zusätzlichen Konfigurationsoptionen.
Konfigurationsparameter für Datenbankspiegelung
und Service Broker
Endpunkte für Datenbankspiegelung und Service Broker bieten Optionen, mit denen Sie die
Authentifizierungsmethoden und Verschlüsselungseinstellungen festlegen können. Sie können
entweder die Microsoft Windows-basierte Authentifizierung oder Zertifikate verwenden. Mit
den Optionen NTLM, KERBEROS und NEGOTIATE können Sie die Microsoft Windowsbasierte Authentifizierung angeben. Mit der NEGOTIATE-Option werden die Instanzen veranlasst, die Authentifizierungsmethode dynamisch zu wählen. Sie können die zertifikatsbasierte
Authentifizierung unter Verwendung eines Zertifikats von einer anerkannten Autorität oder
durch Generieren Ihres eigenen Windows-Zertifikats konfigurieren.
Empfohlene Vorgehensweisen Authentifizierung
Wenn sich alle Datenbankspiegelungs- und Service Broker-Instanzen innerhalb einer einzelnen Domäne oder in Domänen mit Vertrauensstellungen befinden, sollten Sie die WindowsAuthentifizierung verwenden. Wenn Instanzen Domänen ohne Vertrauensstellungen umfassen, sollten Sie die zertifikatsbasierte Authentifizierung verwenden.
Sämtliche Kommunikation zwischen Endpunkten kann verschlüsselt werden. Sie können
angeben, welcher Verschlüsselungsalgorithmus für die Kommunikation zu verwenden ist.
Der Standardalgorithmus ist RC4, aber Sie können auch den viel leistungsfähigeren AESAlgorithmus (AES, Advanced Encryption Standard) angeben.
Empfohlene Vorgehensweisen Verschlüsselung
Verwenden Sie RC4 für minimale Verschlüsselungsstärke und beste Leistung. Verwenden Sie
AES, wenn Sie starke Verschlüsselung benötigen, beachten Sie allerdings, dass dieser Algorithmus einen höheren Verarbeitungsaufwand mit sich bringt, was die Leistung beeinflusst.
Spezifische Argumente für Datenbankspiegelung
Datenbankspiegelungsendpunkte umfassen einen dritten Parameter, der mit der Datenbankspiegelungssitzung in Zusammenhang steht.
!
Prüfungstipp Pro SQL Server-Instanz können Sie nur einen TCP-Endpunkt mit einer Nutzlast
von DATABASE_MIRRORING angeben.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
172
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Sie können für den Endpunkt PARTNER, WITNESS oder ALL angeben. Ein Endpunkt, der
als PARTNER definiert wurde, kann nur von einer Prinzipal- oder Spiegelserverinstanz verwendet werden. Ein Endpunkt, der als WITNESS definiert wurde, kann nur von einer Zeugenserverinstanz verwendet werden. Ein Endpunkt, der als WITNESS definiert wurde, unterstützt
alle Serverrollen.
Hinweis Endpunkte und Express Edition
Wenn Sie einen Datenbankspiegelungsendpunkt auf einem Server mit SQL Server 2005
Express Edition erstellen, können Sie nur die Rolle WITNESS angeben.
Das folgende Transact-SQL-Beispiel zeigt, wie ein Datenbankspiegelungsendpunkt erstellt
werden kann:
CREATE ENDPOINT [Spiegelung]
AS TCP (LISTENER_PORT = 5022)
FOR DATA_MIRRORING (ROLE = PARTNER, ENCRYPTION = REQUIRED);
ALTER ENDPOINT [Spiegelung] STATE = STARTED;
Dieser Code erstellt einen Endpunkt, um Datenbankspiegelungssitzungen über Port 5022 zu
unterstützen und Verbindungsanforderungen an allen gültigen IP-Adressen zu akzeptieren.
Die Option ROLE = PARTNER gibt an, dass der Endpunkt auf dieser SQL-Server-Instanz nur
Prinzipal- und Spiegeldatenbanken unter Verwendung des RC4-Verschlüsselungsalgorithmus
unterstützt.
Spezifische Argumente für Service Broker
Zusätzlich zur Authentifizierungsmethode und Verschlüsselung verfügen Service Broker-Endpunkte über Parameter, die die Nachrichtenweiterleitung betreffen.
Die MESSAGE_FORWARDING-Option ermöglicht die Weiterleitung von Nachrichten, die
für eine andere Broker-Instanz bestimmt sind, an eine angegebene Weiterleitungsadresse.
Mögliche Optionen sind Aktiviert (ENABLED) und Deaktiviert (DISABLED). Wenn die
MESSAGE_FORWARDING-Option aktiviert ist (ENABLED), können Sie außerdem mit dem
Parameter MESSAGE_FORWARDING_SIZE angeben, wie viel Speicherplatz in MB maximal dem Endpunkt zum Speichern von weiterzuleitenden Nachrichten zur Verfügung steht.
Eine vollständige Diskussion zum Thema Service Broker geht zwar über den Umfang dieses
Abschnitts hinaus, ein kurzer Überblick ist aber dennoch notwendig, um die Zusammenhänge
zu erklären. Service Broker-Instanzen verarbeiten Nachrichten durch Ausführen von gespeicherten Prozeduren, um die Arbeit auf asynchrone Art und Weise auszuführen. Entsprechend
der Konfiguration der Broker-Instanz werden Nachrichten in einem bestimmten Format verarbeitet. Es ist jedoch möglich, mehrere Broker-Instanzen in eine Umgebung zu konfigurieren
und mit jeder dieser Instanzen ein anderes Nachrichtenformat zu verwenden. Mit Hilfe der
Nachrichtenweiterleitung können Administratoren die Last auf einfache Weise über mehrere
Broker-Instanzen hinweg verteilen, ohne Änderungen an den Anwendungen vornehmen zu
müssen.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 2: TCP-Endpunkte
173
Hinweis Verschlüsselung
Quelle und den Ziel des Datenverkehrs beeinflussen die Verschlüsselung der Kommunikation
zwischen den Endpunkten. Wenn die Kommunikation ausschließlich innerhalb der SQL
Server-Instanz erfolgt, wird der Datenverkehr nicht verschlüsselt, um unnötigen Kommunikationsaufwand zu vermeiden. Dies ist insbesondere für Service Broker wichtig, die viele
Nachrichten über die Warteschlangen innerhalb einer einzelnen Instanz austauschen. Der
Datenverkehr wird nur verschlüsselt, wenn die Daten an ein Ziel außerhalb der SQL ServerInstanz gesendet werden.
Schnelltest
1. Welche Arten der Authentifizierung sind für Service Broker- und Datenbankspiegelungsendpunkte verfügbar?
2. Was sind die beiden allgemeinen Bestandteile eines TCP-Endpunkts?
Antworten zum Schnelltest
1. NTML- oder Kerberos-Authentifizierung kann angegeben werden. Sie können auch die
Option NEGOTIATE angeben, mit der die zwischen Anwendung und Endpunkt zu verwendende Authentifizierungsmethode ausgehandelt werden kann.
2. Sie müssen einen Port angeben, den der Endpunkt überwachen soll. Sie können wahlweise eine IP-Adresse konfigurieren, um den Endpunkt in Bezug auf den akzeptierten
Datenverkehr auf die angegebene IP-Adresse zu beschränken.
Für diese Lektion gibt es keine Übung. In der vorherigen Übung haben Sie bereits die TCPEndpunkte kontrolliert, die in der Standardkonfiguration existieren. In Kapitel 9 „Datenbankspiegelung“ werden Sie TCP-Endpunkte mit einer Nutzlast von DATABASE_MIRRORING
erstellen.
Zusammenfassung der Lektion
TSQL-Endpunkte werden während der Installation zur Überwachung der für die Instanz
angegebenen Portnummer konfiguriert.
Service Broker- und Datenbankspiegelungsendpunkte können Authentifizierungsmethoden verwenden und für das Verschlüsseln des Datenverkehrs auf der Grundlage eines
von Ihnen angegebenen Algorithmus konfiguriert werden.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
174
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Lernzielkontrolle
Sie können die folgenden Fragen verwenden, um Ihre Kenntnisse zu den in Lektion 2 „TCPEndpunkte“ vermittelten Informationen zu testen. Die Fragen sind auch auf der Begleit-CD
verfügbar (in englischer Sprache), wenn Sie diese in elektronischer Form verwenden wollen.
Hinweis Antworten
Die Antworten zu den folgenden Fragen sowie Erklärungen, warum die jeweiligen Antworten
richtig oder falsch sind, finden Sie im Abschnitt „Antworten“ am Ende dieses Buches.
1. Sie haben eine Datenbankspiegelungssitzung innerhalb Ihrer Umgebung konfiguriert. Die
Prinzipal- und Spiegelendpunkte wurden erfolgreich mit einer Rolleneinstellung (ROLE)
von PARTNER erstellt und dann gestartet. Sie haben bestätigt, dass Sie auf jeden Endpunkt zugreifen und sich authentifizieren können. Allerdings schlägt die Konfiguration
der Datenbankspiegelung fehl. Was könnte die Ursache des Problems sein?
A. Der Authentifizierungsmodus wurde auf NTML festgelegt.
B. Der Authentifizierungsmodus wurde auf NEGOTIATE festgelegt.
C. Die Endpunkte verwenden unterschiedliche Verschlüsselungseinstellungen.
D. Die Verschlüsselungseinstellung der Endpunkte wurde auf AES festgelegt.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 3: HTTP-Endpunkte
175
Lektion 3: HTTP-Endpunkte
In den heutigen verteilten und oft globalen IT-Umgebungen besteht ein hoher Bedarf an
serviceorientierten Anwendungen. Die Architektur, mit der serviceorientierte Anwendungen
unterstützt werden können, basiert auf Webdiensten, die Anforderungen und Antworten in
einem plattformunabhängigen Format namens SOAP (Simple Object Access Protocol) versenden und verarbeiten können. SOAP verwendet XML als Codierungsschema für Anforderungsund Antwortparameter sowie HTTP als Transportmechanismus.
Innerhalb der neuen Technologie zur Verwaltung von SQL Server-Verbindungen anhand
von Endpunkten unterstützt SQL Server 2005 HTTP-Endpunkte, die es Entwicklern gestatten,
gespeicherte Prozeduren und Funktionen innerhalb einer Datenbank als Methoden zu veröffentlichen, die von beliebigen Anwendungen unter Zuhilfenahme des SOAP-Protokolls
aufgerufen werden können. Diese Lektion behandelt wichtige Sicherheitsüberlegungen für die
Implementierung von HTTP-Endpunkten. Darüber hinaus wird gezeigt, wie Sie diese Endpunkte erstellen und sichern können, damit Webdienste Anforderungen an Ihre Datenbank auf
sichere Weise übermitteln können.
Am Ende dieser Lektion werden Sie in der Lage sein, die folgenden Aufgaben
auszuführen:
Entwerfen einer Endpunktstrategie für sichere HTTP-Verbindungen
Veranschlagte Zeit für die Lektion: 30 Minuten
Praxistipp
SQL Server 2000 unterstützte die Möglichkeit des direkten Zugriffs auf SQL Server-Daten
über HTTP. Allerdings war die Implementierung ungeordnet und unsicher.
HTTP-Endpunkte stellen ein Mittel dar, mit dem webbasierte Anwendungen gespeicherte
Prozeduren oder Funktionen direkt aufrufen können. In der Tat muss der Anwendungsentwickler noch nicht einmal wissen, dass die Daten von SQL Server zurückgegeben werden.
Ein großes Finanzdienstleistungsunternehmen, für das wir gearbeitet haben, konnte vor
kurzem die Aktualisierung von SQL Server 2000 auf SQL Server 2005 abschließen. Für das
Entwicklungsteam war dabei insbesondere die Möglichkeit der Verwendung von Endpunkten interessant. Die vorherige Version ihrer Datenbankanwendung enthielt Dutzende von
Bestandteilen, deren einziger Zweck es war, eine Verbindung zur Datenbank herzustellen,
gespeicherte Prozeduraufrufe auszuführen und die Ergebnisse wieder zu verpacken, um
diese an die Kunden zurückzusenden. Die Kunden konnten auf ihre Daten mit Hilfe von
Browsern zugreifen, wobei die im Hause in Form von Webdiensten entwickelten Komponenten vom Front-End-Code aufgerufen wurden.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
176
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Mit der Aktualisierung auf SQL Server 2005 konnte dieses Unternehmen alle diese benutzerdefinierten Bestandteile durch HTTP-Endpunkte ersetzen. Nun verwendet die FrontEnd-Anwendung gespeicherte Prozeduren, die in Form von Webmethoden veröffentlich
wurden, um die Ergebnisse an die Kunden zurückzugeben. Dies hatte unmittelbare Auswirkungen auf die Leistungsfähigkeit und Skalierbarkeit der Anwendung. Durch Eliminieren
der benutzerdefinierten Middle-Tier-Bestandteile konnten den Kunden neue Funktionen in
einem Bruchteil der Zeit zur Verfügung gestellt werden.
HTTP-Endpunktsicherheit
Zusätzlich zur Angabe des HTTP-Protokolls mit einer SOAP-Nutzlast, die die Endpunkte
darauf beschränkt, nur gültige SOAP-Anforderungen zu akzeptieren, bieten HTTP-Endpunkte
eine zusätzliche Sicherheitsebene.
Die allgemeine Syntax für HTTP-Endpunkte lautet wie folgt:
CREATE ENDPOINT Endpunkt_Name [ AUTHORIZATION Anmeldung ]
STATE = { STARTED | STOPPED | DISABLED }
AS HTTP (
PATH = 'url'
, AUTHENTICATION =( { BASIC | DIGEST | INTEGRATED | NTLM | KERBEROS }
[ ,...n ] )
, PORTS = ( { CLEAR | SSL} [ ,... n ] )
[ SITE = {'*' | '+' | 'webSite' },]
[, CLEAR_PORT = freierPort ]
[, SSL_PORT = SSLPort ]
[, AUTH_REALM = { 'realm' | NONE } ]
[, DEFAULT_LOGON_DOMAIN = { 'Domäne' | NONE } ]
[, COMPRESSION = { ENABLED | DISABLED } ]
)
FOR SOAP(
[ { WEBMETHOD [ 'Namespace' .] 'Alias_Methode'
( NAME = 'Datenbank.Besitzer.Name'
[ , SCHEMA = { NONE | STANDARD | DEFAULT } ]
[ , FORMAT = { ALL_RESULTS | ROWSETS_ONLY | NONE} ]
)
} [ ,...n ] ]
[ BATCHES = { ENABLED | DISABLED } ]
[ , WSDL = { NONE | DEFAULT | 'sp_Name' } ]
[ , SESSIONS = { ENABLED | DISABLED } ]
[ , LOGIN_TYPE = { MIXED | WINDOWS } ]
[ , SESSION_TIMEOUT = timeoutIntervall | NEVER ]
[ , DATABASE = { 'Datenbank_Name' | DEFAULT }
[ , NAMESPACE = { 'Namespace' | DEFAULT } ]
[ , SCHEMA = { NONE | STANDARD } ]
[ , CHARACTER_SET = { SQL | XML }]
[ , HEADER_LIMIT = int ]
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 3: HTTP-Endpunkte
177
Authentifizierungsmethode
Sie können entweder die Windows-Authentifizierung oder Zertifikate als Authentifizierungsmethode für die Endpunktverbindung verwenden. Durch Auswahl der Option NTLM, KERBEROS oder NEGOTIATE können Sie die Microsoft Windows-basierte Authentifizierung
konfigurieren. Mit der NEGOTIATE-Option werden die Instanzen veranlasst, die Authentifizierungsmethode dynamisch zu wählen. Für die zertifikatsbasierte Authentifizierung können
Sie ein Zertifikat von einer anerkannten Autorität verwenden oder Sie generieren Ihr eigenes
Windows-Zertifikat.
Verschlüsselung
Die Endpunkte unterstützen auch Verschlüsselungsoptionen. Die PORTS-Klausel ermöglicht
Ihnen festzulegen, ob die Kommunikation im Klartext erfolgen oder SSL (Secure Sockets
Layer) aktiviert werden soll. Wenn Sie die Option CLEAR angeben, sendet und empfängt der
Endpunkt HTTP-Datenverkehr. Wenn Sie stattdessen die Option SSL angeben, muss die Kommunikation über HTTPS erfolgen.
Anmeldungstyp
Innerhalb der SOAP-Nutzlast kontrolliert der Parameter LOGIN_TYPE, welche Arten von
Konten verwendet werden können, um Verbindungen mit dem Endpunkt aufzubauen. Wenn
Sie diese Option auf WINDOWS festlegen, ermöglichen Sie die Authentifizierung unter
Verwendung von Windows-Konten. Wenn Sie diese Option stattdessen auf MIXED festlegen,
können Verbindungen unter Verwendung von Windows-Kontoinformationen oder SQL Server-Anmeldungen erfolgen.
Angeben von Webmethoden
Damit ein HTTP-Endpunkt sinnvoll verwendet werden kann, muss die SOAP-Nutzlast mindestens auf eine Webmethode verweisen. Webmethoden bieten Webdiensten einfachen Zugriff auf
gespeicherte Prozeduren und Funktionen in Form von veröffentlichten Methoden. Im WEBMETHOD-Teil der sprachspezifischen Parameter der SOAP-Nutzlast können Sie bestimmte
gespeicherte Prozeduren und Funktionen den Webmethoden zuordnen, die Sie mit dem Endpunkt veröffentlichen wollen.
Das allgemeine Format des WEBMETHOD-Teils der SOAP-Nutzlast lautet wie folgt:
[ {
(
[
[
)
WEBMETHOD [ 'Namespace' .] 'Alias_Methode'
NAME = 'Datenbank.Besitzer.Name'
, SCHEMA = { NONE | STANDARD | DEFAULT } ]
, FORMAT = { ALL_RESULTS | ROWSETS_ONLY | NONE} ]
Die Argumente Namespace und Alias_Methode definieren den Namen der Webmethode,
die mit dem HTTP-Endpunkt veröffentlich wird. Der Name muss für die SQL Server-Instanz
eindeutig sein.
Verwenden Sie die NAME-Klausel, um den vollständig qualifizierten Namen der gespeicherten Prozedur oder Funktion anzugeben, die Sie der Webmethode zuordnen wollen.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
178
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Empfohlene Vorgehensweisen Objektsicherheit
Der Name der Methode (Methode_Alias), die mit dem Endpunkt veröffentlicht werden soll,
sollte nicht dem tatsächlichen Namen der gespeicherten Prozedur oder Funktion entsprechen.
Die Verwendung von anderen Namen hindert Hacker daran, die über den HTTP-Endpunkt
veröffentlichten Methoden aufzulisten und diese Namen dann für direkte Zugriffsversuche auf
die zugrunde liegenden gespeicherten Prozeduren oder Funktionen zu verwenden.
Die SCHEMA-Option definiert, ob eine Inline-XSD-Definition (XML Schema Definition,
XSD) für das Argument WEBMETHOD in der SOAP-Antwort zurückgegeben werden soll.
Die FORMAT-Option kontrolliert, wie Ergebnisse in der SOAP-Antwort zurückgegeben werden. Sie können wählen, ob das generierte Resultset zusammen mit Warnungen und Fehlermeldungen mit oder ohne Zeilenanzahl zurückgegeben werden soll. Sie brauchen das SOAP-Paket
nicht selbst zu formulieren. Der Endpunkt erledigt das Verpacken der Daten in SOAP-Pakete.
Angeben von WSDL-Unterstützung, Schemas und Namespaces
Jeder HTTP-Endpunkt umfasst eine Klausel für die SOAP-Nutzlast zur Angabe der WSDLUnterstützung (Web Services Description Language, WSDL). Wenn Sie NONE angeben,
bietet der Endpunkt keine WSDL-Unterstützung. Wenn Sie DEFAULT angeben, verwendet
der Endpunkt Standard-WSDL-Konventionen für die Webdienstbeschreibungssprache.
Weitere Informationen Webdienstbeschreibungssprache
Eine Diskussion von WSDL geht über den Umfang dieses Kapitels hinaus. Für weitere Information über WSDL und WSDL-Unterstützung lesen Sie in der SQL Server 2005-Onlinedokumentation den Artikel „Standard-WSDL“ unter http://msdn2.microsoft.com/de-de/
library/ms190983.aspx.
Als Bestandteil der SOAP-Nutzlastkonfiguration können Sie ein SCHEMA für den HTTPEndpunkt definieren. HTTP-Endpunkte verwenden eine standardmäßige SCHEMA-Option,
die von einer im Parameter WEBMETHOD angegebenen Methode außer Kraft gesetzt werden
kann. Wenn Sie für die SCHEMA-Option NONE angeben, wird im SOAP-Paket keine InlineXSD-Definition zurückgegeben. Wenn Sie stattdessen STANDARD angeben, wird zusammen
mit dem Resultset eine Inline-XSD-Definition zurückgegeben.
Hinweis Laden von Resultsets
Wenn Sie ein Resultset aus einem SOAP-Paket in ein DataSet-Objekt laden wollen, benötigen
Sie eine XML-Schemadefinition (XML Schema Definition, XSD).
Darüber hinaus können Sie im Bereich für die SOAP-Nutzlast einen expliziten Namespace für
den HTTP-Endpunkt angeben. Der Standardnamespace ist der Namespace der im Parameter
WEBMETHOD angegebenen Webmethode. Diese Option kann in der WEBMETHOD-Definition überschrieben werden. Wenn Sie für diese Option den Standardwert DEFAULT verwenden (was normalerweise der Fall ist) oder diese Option nicht angeben, wird der Namespace
http://tempuri.org angenommen.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 3: HTTP-Endpunkte
179
Zusätzliche Parameter für die SOAP-Nutzlast
Sie können für die SOAP-Nutzlast mehrere weitere Parameter angeben, um das Verhalten des
Endpunktes festzulegen. Neben den bereits behandelten Optionen können Sie die folgenden
Parameter für die SOAP-Nutzlast angeben:
[
[
[
[
[
[
BATCHES = { ENABLED | DISABLED } ]
, SESSIONS = { ENABLED | DISABLED } ]
, SESSION_TIMEOUT = timeoutIntervall | NEVER ]
, DATABASE = { 'Datenbank_Name' | DEFAULT } ]
, CHARACTER_SET = { SQL | XML }]
, HEADER_LIMIT = int ]
Die Option BATCHES gibt an, ob eine Verbindung Ad-hoc-SQL-Abfragen an den Endpunkt
richten darf. Wenn Sie diesen Parameter aktivieren, kann die Datenbankverbindung beliebige
Ad-hoc-SQL-Abfragen übermitteln. Die Befehle, die Sie über eine Verbindung erfolgreich
ausführen können, werden von den Sicherheitsberechtigungen innerhalb der Datenbank
kontrolliert.
Empfohlene Vorgehensweisen Aktivieren von Ad-hoc-SQL-Abfragen
Sie sollten die Option BATCHES stets deaktivieren. Wenn Sie Ad-hoc-SQL-Abfragen über
Verbindungen zu einem Endpunkt zulassen, öffnen Sie Hackern Tür und Tor zu Ihrer Datenbank. Wenn Sie gespeicherte Prozeduren oder Funktionen über einen HTTP-Endpunkt veröffentlichen, sollten Sie die WEBMETHOD-Klausel verwenden, um die zulässigen Prozeduren und Funktionen genau festzulegen.
Wenn Sie die SESSIONS-Unterstützung aktivieren, werden mehrere SOAP-Anforderungen/Antworten in einer einzelnen SOAP-Sitzung verwaltet. Anwendungen haben so die Möglichkeit,
mehrere Anforderungen während einer einzelnen SOAP-Sitzung an den Endpunkt zu senden.
Wenn Sie für den Parameter DATABASE einen Wert angeben, ändern Sie den Datenbankkontext der Verbindung zum HTTP-Endpunkt. Geben Sie keine Datenbank an, wird die für das
Anmeldekonto definierte Standarddatenbank verwendet.
Weitere Informationen SOAP-Nutzlastparameter
Für weitere Information über mögliche SOAP-Nutzlastoptionen für Endpunkte lesen Sie in der
SQL Server 2005-Onlinedokumentation den Artikel „CREATE ENDPOINT (Transact-SQL)
“ unter http://msdn2.microsoft.com/de-de/library/ms181591.aspx.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
180
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Schnelltest
1. Sie haben einen HTTP-Endpunkt erstellt und alle zur Verfügung stehenden Sicherheitsoptionen angegeben. Sie haben sich vergewissert, dass Ihre Anwendung über alle
Sicherheitsberechtigungen verfügt, dass Ihrer Anwendung der Zugang zur Datenbank
gewährt ist und dass die Anwendung die passenden Aufrufe an den HTTP-Endpunkt
sendet. Jedoch erhalten Sie weiterhin Zugangsfehler. Was könnte die Ursache dieses
Problems sein?
2. Welchen Parameter sollten Sie für die SOAP-Nutzlast angeben, damit der Endpunkt
sinnvoll verwendet werden kann?
3. Welcher Parameter sollte aus Gründen der Sicherheit nie aktiviert werden?
Antworten zum Schnelltest
1. Obwohl Sie den Endpunkt erstellt und bestätigt haben, dass alle Optionen aktiviert und
mit Ihrer Anwendung kompatibel sind, müssen Sie noch einen zusätzlichen Schritt ausführen. Sie müssen der von Ihnen verwendeten Anmeldung die CONNECT-Berechtigung gewähren, um eine Verbindung zum Endpunkt herstellen zu können.
2. Der WEBMETHOD-Parameter gibt die Prozedur oder Funktion an, die vom Endpunkt
veröffentlicht wird. Dieser Parameter sollte für HTTP-Endpunkte immer angegeben
werden, um die ausführbaren Befehle zu beschränken.
3. Der BATCHES-Parameter konfiguriert den Endpunkt zur Ausführung von Ad-hoc-SQLAbfragen über eingehende Verbindungen. Sie sollten diesen Parameter deaktivieren, um
die potentielle Gefährdung Ihrer Datenbank durch Webdienstaufrufe einzugrenzen.
Erstellen eines Endpunktes
In dieser Übung erstellen Sie einen HTTP-Endpunkt, der die integrierte Sicherheit sowie SSL
erfordert. Der Endpunkt veröffentlicht die gespeicherte Prozedur uspGetBillOfMaterials aus
der AdventureWorks-Datenbank in Form einer Webmethode.
1. Starten Sie SQL Server Management Studio, stellen Sie eine Verbindung zu Ihrer SQL
Server-Instanz her und öffnen Sie ein neues Abfragefenster.
2. Geben Sie den folgenden Befehl zur Erstellung eines Endpunktes ein, legen Sie den Typ
des Endpunktes als HTTP fest, verwenden Sie die integrierte Authentifizierung und konfigurieren Sie die PORTS-Einstellung für SSL. Die Anweisung definiert darüber hinaus die
Nutzlast als SOAP und verwendet den WEBMETHOD-Parameter, um die gespeicherte
Prozedur uspGetBillOfMaterials als Webmethode zu veröffentlichen:
CREATE ENDPOINT sql_endpunkt
STATE = STARTED
AS HTTP(
PATH = '/sql',
AUTHENTICATION = (INTEGRATED),
PORTS = ( SSL ),
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 3: HTTP-Endpunkte
181
SITE = 'SERVER'
)
FOR SOAP (
WEBMETHOD 'MaterialRechnungen'
(name='AdventureWorks.dbo.uspGetBillOfMaterials'),
WSDL = DEFAULT,
= STANDARD,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://tempUri.org/'
);
GO
Hinweis Fehler bei der Erstellung des HTTP-Endpunktes
Je nach Betriebssystem und auf dem Computer installierten Anwendungen könnten bei der
Ausführung des Befehls Fehlermeldungen auftreten. Um dieses Problem zu lösen, lesen Sie
den MSDN-Artikel „Richtlinien und Einschränkungen für die Verwendung der systemeigenen
XML-Webdienste“ unter http://msdn2.microsoft.com/de-de/library/ms189092.aspx.
Zusammenfassung der Lektion
Über HTTP-Endpunkte können Sie gespeicherte Prozeduren und Funktionen für den
Anwendungszugriff veröffentlichen. Im Prinzip können Sie eine SQL Server-Instanz in
einen Webdienst verwandeln, den die Anwendungen verwenden können.
Der wichtigste Parameter innerhalb der SOAP-Nutzlastdefinition ist der WEBMETHODParameter. WEBMETHOD gibt die Prozedur oder Funktion an, die vom Endpunkt veröffentlicht wird.
Lernzielkontrolle
Sie können die folgenden Fragen verwenden, um Ihre Kenntnisse zu den in Lektion 3 „HTTPEndpunkte“ vermittelten Informationen zu testen. Die Fragen sind auch auf der Begleit-CD
verfügbar (in englischer Sprache), wenn Sie diese in elektronischer Form verwenden wollen.
Hinweis Antworten
Die Antworten zu den folgenden Fragen sowie Erklärungen, warum die jeweiligen Antworten
richtig oder falsch sind, finden Sie im Abschnitt „Antworten“ am Ende dieses Buches.
1. HTTP-Endpunkte sind auf welche der folgenden Elemente beschränkt? (Wählen Sie alle
zutreffenden Antworten aus.)
A. SOAP-Nutzlast
B. HTTP- oder HTTPS-Datenverkehr
C. TSQL-Nutzlast
D. Windows-Authentifizierung
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
182
Kapitel 5
Entwerfen von SQL Server-Endpunkten
2. Sie arbeiten in einer Hochsicherheitsumgebung und müssen HTTP-Endpunkte aktivieren,
um den Anforderungen einer neuen Anwendung zu genügen. Sie müssen sicherstellen,
dass nur die in Ihrer Domäne authentifizierten Mitarbeiter Anforderungen an den Endpunkt senden können und dass die an die Clientcomputer zurückgegebenen Daten nicht
abgehört werden können, selbst wenn sich jemand Zugang zu Ihrem Netzwerk verschafft
hat. Welchen Optionen müssen Sie aktiveren, um diesen Erfordernissen zu entsprechen?
(Wählen Sie alle zutreffenden Antworten aus.)
A. LOGIN_TYPE = MIXED
B. LOGIN_TYPE = WINDOWS
C. PORTS(CLEAR)
D. PORTS(SSL)
3. Welcher der folgenden Befehle ermöglicht es einem Webdienst, die gespeicherte Prozedur
uspGetBillOfMaterials aus der AdventureWorks-Datenbank anzurufen? Dabei muss die
Datenverschlüsselung gewährleistet sein. Das Resultset wird in ein DataSet-Objekt geladen.
A.
CREATE ENDPOINT sql_endpunkt
STATE = STARTED
AS HTTP(
PATH = '/sql',
AUTHENTICATION = (INTEGRATED ),
PORTS = ( SSL ),
SITE = 'SERVER'
)
FOR SOAP (
WEBMETHOD 'MaterialRechnungen'
(name='AdventureWorks.dbo.uspGetBillOfMaterials'),
WSDL = DEFAULT,
SCHEMA = STANDARD,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://tempUri.org/'
);
GO
B.
CREATE ENDPOINT sql_endpunkt
STATE = STARTED
AS HTTP(
PATH = '/sql',
AUTHENTICATION = (INTEGRATED ),
PORTS = ( SSL ),
SITE = 'SERVER'
)
FOR SOAP (
WEBMETHOD 'MaterialRechnungen'
(name='AdventureWorks.dbo.uspGetBillOfMaterials',
SCHEMA = STANDARD),
WSDL = DEFAULT,
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 3: HTTP-Endpunkte
183
SCHEMA = STANDARD,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://tempUri.org/'
);
C.
CREATE ENDPOINT sql_endpunkt
STATE = STARTED
AS HTTP(
PATH = '/sql',
AUTHENTICATION = (INTEGRATED ),
PORTS = ( SSL ),
SITE = 'SERVER'
)
FOR SOAP (
WEBMETHOD 'MaterialRechnungen'
(name='AdventureWorks.dbo.uspGetBillOfMaterials'),
WSDL = DEFAULT,
SCHEMA = STANDARD,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://tempUri.org/'
);
D.
CREATE ENDPOINT sql_endpunkt
STATE = DISABLED
AS HTTP(
PATH = '/sql',
AUTHENTICATION = (INTEGRATED ),
PORTS = ( SSL ),
SITE = 'SERVER'
)
FOR SOAP (
WEBMETHOD 'MaterialRechnungen'
(name='AdventureWorks.dbo.uspGetBillOfMaterials'),
WSDL = DEFAULT,
SCHEMA = STANDARD,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://tempUri.org/'
);
Zusammenfassung des Kapitels
Endpunkte stellen eine erste Sicherheitsstufe innerhalb von SQL Server dar. Durch Implementierung einer Barriere, ähnlich einem Firewall, stellen Endpunkte sicher, dass nur gültige
Verbindungen mit gültigem Datenverkehr Ihre SQL Server-Instanz erreichen können.
Endpunkte können für das TCP- oder das HTTP-Protokoll erstellt werden. Die Nutzlast
von TCP-Endpunkten kann auf TSQL, DATABASE_MIRRORING oder SERVICE_BROKER festgelegt werden. HTTP-Endpunkte können über SOAP-Nutzlasten verfügen.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
184
Kapitel 5
Entwerfen von SQL Server-Endpunkten
HTTP-Endpunkte ermöglichen die Veröffentlichung und Verwendung von gespeicherten
Prozeduren und Funktionen in Form von Webdiensten. Im Prinzip verhält sich Ihr SQLServer bei Verwendung von HTTP-Endpunkten wie ein registrierter Webdienst.
Schlüsselbegriffe
Kennen Sie die Bedeutung der folgenden wichtigen Begriffe? Sie können Ihre Antworten
überprüfen, wenn Sie die Begriffe im Glossar am Ende dieses Buches nachschlagen.
HTTP-Endpunkt
SOAP (Simple Object Access Protocol)
TCP-Endpunkt
Webdienst
Webdienstbeschreibungssprache (Web Services Description Language, WSDL)
Fallstudie: Planen der SQL Server-Sicherheit
In folgender Fallstudie werden Sie die erworbenen Kenntnisse zur Konfiguration von SQL
Server-Endpunkten anwenden. Sie können die Antworten auf die folgenden Fragen im
Abschnitt „Antworten“ am Ende dieses Buches finden.
Hintergrund
Firmenüberblick
Coho Vineyard wurde 1960 in der Moselregion von Trier, im Bundesland Rheinland-Pfalz, als
lokale Weinkellerei in Familienbesitz gegründet. Seit 1980 ist die Weinkellerei in starkem
Wachstum begriffen. Aufgrund des Erfolgs begannen die Eigentümer, andere Weinkellereien
in der Region aufzukaufen. Heute gehören zu Coho Vineyard insgesamt 12 Weinkellereien in
der Moselregion mit 250 Angestellten. 25 Angestellte arbeiten im zentralen Büro. In diesem
Büro befinden sich auch die für das Unternehmen wichtigen Server.
Geplante Änderungen
Bis jetzt hat jede der zu Coho Vineyard gehörenden 12 Weinkellereien eine separate Website
jeweils lokal betrieben. Coho Vineyard will die Webpräsenz dieser Weinkellereien konsolidieren, so dass Besucher im Web die Produkte aller 12 Weinkellereien von einer zentralen Website beziehen können.
Das neue zentralisierte Büronetzwerk sollte auch die von den 12 Weinkellereien hochgeladenen finanziellen Informationen speichern.
Problembeschreibung
Wegen des dezentralen Aufbaus des Unternehmens war es bisher schwierig, Geschäftsinformationen zu konsolidieren, beispielsweise Finanzdaten und Marketinginformationen. Darüber
hinaus existiert trotz der Anzahl von Mitarbeitern im Unternehmen kein zentrales E-Mail-System für die Angestellten.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 3: HTTP-Endpunkte
185
Bestehende Datenumgebung
Datenbanken
Zum gegenwärtigen Zeitpunkt verwaltet jede Weinkellerei eine eigene Microsoft AccessDatenbank, in der alle Geschäftsinformation gespeichert sind. Am Ende jedes Quartals werden
diese Informationen zum zentralen Büro gebracht und in die in Tabelle 5.2 aufgeführten
Datenbanken übertragen.
Tabelle 5.2 Datenbanken von Coho Vineyard
Datenbank
Größe
Kunde
180 MB
Buchhaltung
500 MB
Personalabteilung
100 MB
Lagerhaltung
250 MB
Marketing
80 MB
Datenbankserver
Ein einzelner Server mit dem Namen DBSRV1 verwaltet alle Datenbanken im zentralen Büro.
Auf dem Server wird SQL Server 2005 unter Windows 2000 Server ausgeführt.
Bestehende Infrastruktur
Netzwerkinfrastruktur
Im zentralen Büro von Coho Vineyard umfasst die Computerumgebung ein Perimeternetzwerk
und ein internes Netzwerk, wie in Abbildung 5.1 gezeigt.
DC1
DB1
FPS1
ISA1
Clientcomputer
Internes Network
IIS1
EXCH1
Firewall
WSUS1
Perimeternetzwerk
Abbildung 5.1 Das Netzwerk von Coho Vineyard
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
186
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Active Directory-Infrastruktur
Das Netzwerk von Coho Vineyard umfasst eine einzelne Active Directory-Domäne namens
cohovineyard.com. Innerhalb dieser Domäne verfügt jede Weinkellerei über eine eigene Organisationseinheit (Organizational Unit, OU). Aufgrund von internen Besonderheiten verfügen
die Benutzer nur über Zugriff auf die Ressourcen in der eigenen OU, nicht aber auf die Ressourcen in anderen Organisationseinheiten. Deshalb ist die Anmeldung an der Domäne nicht
immer ausreichend, um Zugang zu den Ressourcen zu erhalten.
Geschäftsanforderungen
Allgemeine Anforderungen
Die Kunden müssen in der Lage sein, die Produkte aller Weinkellereien über die Website von
Coho Vineyard beziehen zu können. Die Angestellten in den Weinkellereien müssen unter
Verwendung einer Webanwendung Daten eingeben. Die Daten müssen unmittelbar auf dem
Datenbankserver im zentralen Büro gespeichert werden. Außerdem muss den Benutzern ein
funktionstüchtiges E-Mail-Konto in der Domäne cohovineyard.com zur Verfügung gestellt
werden. Dieser E-Mail-Server muss sich im zentralen Büro befinden.
Da der Konsolidierungsprozess eine erhebliche Zeit in Anspruch nehmen wird, hat die Firmenleitung beschlossen, die Datenbanken in jeder Weinkellerei auf SQL Server 2005 zu aktualisieren. In der Zwischenzeit verwenden die Anwendungen innerhalb jeder Weinkellerei weiterhin
die jeweils lokale Datenbank. Die Mitarbeiter im zentralen Büro müssen in der Lage sein,
Abfragen der Datenbanken in allen Weinkellereien auszuführen. Die Website muss den Kunden
eine zusammengefasste Ansicht des Inventars anzeigen, und zwar noch bevor die Datenbanken
im zentralen Büro konsolidiert wurden.
Technische Anforderungen
Sicherheit
Die Komplexitätsanforderungen für Kennworte müssen für alle Angestellten in der Domäne
cohovineyard.com durchgesetzt werden. Das maximale Kennwortalter muss auf 30 Tage festgelegt werden. Zusätzlich zu den Benutzerkonten sind diese Einschränkungen für alle SQL
Server-Anmeldungen durchzusetzen.
Aller Datenverkehr zu und von DBSRV1 muss verschlüsselt werden. Darüber hinaus ist auch
aller Datenverkehr zwischen den Weinkellereien und dem zentralem Büro zu verschlüsseln.
Die SQL Server-Konfiguration muss die Angriffsoberfläche des Servers reduzieren, dabei aber
immer noch allen Geschäfts- und technischen Erfordernissen entsprechen.
Alle Clientcomputer im zentralen Büro müssen automatisch mit dem Microsoft UpdateOnlinedienst aktualisiert werden.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Lektion 3: HTTP-Endpunkte
187
Fragen
1. Wie können Sie mit minimalem Entwicklungsaufwand und den am besten geeigneten
Sicherheitsfunktionen die Anforderung erfüllen, Kunden auf der Website eine zusammengefasste Ansicht des Inventars anzuzeigen?
A. Sie replizieren die Inventardaten zum zentralen Büro.
B. Sie veröffentlichen die Inventardaten mit Hilfe eines HTTP-Endpunktes.
C. Sie veröffentlichen die Inventardaten mit Hilfe eines TCP-Endpunktes.
D. Sie verwenden Service Broker, um die Inventardaten von jeder Weinkellerei zu beziehen.
2. Wie können die Benutzer im zentralen Büro die Inventardaten in den Datenbanken der
einzelnen Weinkellereien abfragen bzw. aktualisieren?
A. Sie erstellen einen HTTP-Endpunkt und aktivieren diesen für die Benutzer im zentralen
Büro.
B. Sie erstellen für die Benutzer im zentralen Büro ein Zertifikat zur Authentifizierung des
Datenbankzugriffs in allen Weinkellereien.
C. Sie erstellen mit den Optionen SSL und BATCHES einen HTTP-Endpunkt und aktivieren diesen für die Benutzer im zentralen Büro.
D. Sie erstellen einen HTTP-Endpunkt mit der PORTS-Einstellung CLEAR.
3. Welche ist die beste Möglichkeit, um den Benutzern im zentralen Büro mit dem geringsten administrativen Aufwand den Zugriff auf die Daten in den Datenbanken der Weinkellereien zu ermöglichen, ohne hierzu einen HTTP-Endpunkt für Ad-hoc-SQL-Abfragen
öffnen zu müssen?
A. Sie erstellen in der Domäne eine Windows-Gruppe, fügen diese Gruppe zu jeder Datenbank der Weinkellereien hinzu und gewähren dieser Gruppe die entsprechenden Datenbankberechtigungen.
B. Sie erstellen auf jedem Server eine lokale Windows-Gruppe, fügen diese Gruppe zu
jeder Datenbank der Weinkellereien hinzu und gewähren dieser Gruppe die entsprechenden Datenbankberechtigungen.
C. Sie fügen die Windows-Benutzerkonten aller Mitarbeiter zu allen Datenbanken hinzu
und gewähren die entsprechenden Datenbankberechtigungen.
D. Sie erstellen in jeder Datenbank für jeden Benutzer eine SQL Server-Anmeldung und
gewähren die entsprechenden Datenbankberechtigungen.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
188
Kapitel 5
Entwerfen von SQL Server-Endpunkten
Empfohlene Vorgehensweisen
Um die in diesem Kapitel behandelten Prüfungsschwerpunkte erfolgreich zu beherrschen,
sollten Sie die folgenden Übungsaufgaben durcharbeiten.
Übungsaufgabe 1 Erstellen Sie einen HTTP-Endpunkt, der alle gespeicherten Prozeduren aus der AdventureWorks-Datenbank als Webmethoden veröffentlicht.
Übungsaufgabe 2 Erstellen Sie mit Microsoft Visual Studio eine Anwendung, die Aufrufe an den HTTP-Endpunkt sendet und die Ergebnisse der Anrufe in einem Rastersteuerelement darstellt, das mit einem DataSet-Objekt verknüpft ist.
Übungstest zum Examen
Die Übungstests auf der Begleit-CD (in englischer Sprache) zu diesem Buch bieten viele Auswahlmöglichkeiten.. Zum Beispiel können Sie sich auf genau einen Prüfungsschwerpunkt
konzentrieren oder Sie testen sich in Bezug auf alle Inhalte, die für das Examen 70-443 wichtig
sind. Sie können den Test so einrichten, dass dieser die Examensprüfung realistisch simuliert,
oder Sie verwenden den Studienmodus, um die richtigen Antworten sowie Erklärungen nach
Beantwortung jeder Frage anzuzeigen.
Weitere Informationen Übungstests
Für Details zum Thema verfügbare Übungstestoptionen siehe den Abschnitt „Durchführen
von Übungstests“ in der Einführung zu diesem Buch.
J.C. Mackin, Mike Hotek: Entwerfen einer Datenbankserver-Infrastruktur mit Microsoft SQL Server 2005 - Original Microsoft Training für Examen 70-443. Microsoft Press 2007 (ISBN 978-3-86645-901-4)
Herunterladen