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)