Sicherheitsüberlegungen
Es wird empfohlen, zur Absicherung der auf Sync Framework basierenden Datenbankanwendungen die im Folgenden beschriebenen Schritte zu unternehmen. Weitere Informationen zur Datenbanksicherheit finden Sie in den Onlinedokumentationen zu SQL Server Compact und SQL Server.
Arbeiten Sie nach dem Prinzip der niedrigstmöglichen Berechtigung. Gewähren Sie für das Ausführen einer bestimmten Aufgabe nur die Berechtigungen, die dazu wirklich erforderlich sind. So sollten Sie z. B. keine INSERT-Berechtigungen für Serverdatenbanktabellen gewähren, die mittels Nur-Download-Synchronisierungen synchronisiert werden. Für Synchronisierungsvorgänge sind die folgenden Berechtigungen erforderlich:
EXECUTE-Berechtigungen für alle gespeicherten Prozeduren, die Sync Framework zum Lesen und Schreiben in Metadatentabellen und Basistabellen verwendet.
Die Berechtigungen SELECT, INSERT, UPDATE und DELETE für Metadatentabellen und alle Basistabellen, die während einer Synchronisierungssitzung aktualisiert werden.
Wenn Sie SQL Server-Datenbanken bereitstellen, die SqlSyncProvider verwenden, achten Sie auf die folgenden Berechtigungsanforderungen für die Bereitstellung:
CREATE TABLE-Berechtigungen für die Erstellung der Metadatentabellen
scope_info
undscope_config
sowie der Nachverfolgungstabellen, die für jede Basistabelle erstellt werden.ALTER TABLE zum Hinzufügen von Triggern zu den Basistabellen.
CREATE PROCEDURE-Berechtigungen zum Erstellen der Prozeduren, die Sync Framework erfordert.
Die Berechtigungen SELECT und INSERT für die Tabellen
scope_info
undscope_config
.SELECT-Berechtigungen für Basistabellen.
Sync Framework überprüft nicht die Inhalte der Bereiche, die den Satz zu synchronisierender Tabellen (mit optionalen Filtern) definieren. Binden Sie eine Logik in Ihre Anwendungen ein, mit der sichergestellt wird, dass der gesendete Bereich mit den für diesen Bereich erwarteten Tabellen übereinstimmt und die erwarteten Filter angewendet wurden.
Konfigurieren Sie Server und Serverdatenbanken so, dass sie so wenig wie möglich Angriffsfläche bieten. Wenn Sie z. B. im Rahmen einer n-Ebenen-Architektur einen IIS-Server verwenden, dürfen Sie den FTP-Dienst nur dann aktivieren, wenn dieser von einer anderen Anwendung gebraucht wird, die den Server verwendet.
Sichern Sie sicherheitsrelevante Daten auf Speichermedien und bei der Übertragung durch Verschlüsselung oder Kennwörter ab. Sync Framework stellt keine Verschlüsselung für Verbindungen bereit. Die Verschlüsselung kann auf der Transportebene durch verschiedene Technologien erreicht werden. Dazu gehören u. a. die allgemein als Industriestandard anerkannten Technologien Windows Communication Foundation (WCF), Virtual Private Networks (VPN), Secure Sockets Layer (SSL) und Internet Protocol Security (IPsec). Wir empfehlen, für die während der Synchronisierung hergestellten Verbindungen eine der genannten Verschlüsselungsmethoden zu verwenden. Weitere Informationen zur Verschlüsselung finden Sie in der Dokumentation zu Windows und SQL Server Compact sowie in der Dokumentation zur jeweiligen Server- oder Peerdatenbank.
Verwenden Sie für Abfragen der Serverdatenbanken statt Inline-SQL gespeicherte Prozeduren. Gespeicherte Prozeduren sichern Anwendungen auf folgende Art und Weise:
Durch die Verwendung gespeicherter Prozeduren können Administratoren einen bekannten Satz von Einstiegspunkten für die Datenbank definieren. Die Benutzer erhalten dann Zugriff auf die gespeicherten Prozeduren, nicht aber auf die zugrunde liegenden Tabellen.
Die Verwendung von gespeicherten Prozeduren fördert auch die Verwendung von Parametern anstelle dynamisch erstellter Abfragen. Auf diese Weise werden Angriffe durch Einschleusung von SQL-Befehlen erschwert.
Wenn eine Anwendung gefährdet ist, ist die Logik des Datenzugriffs nicht unbedingt gefährdet.
Validieren Sie die während der Synchronisierung gesendeten Daten. Verwenden Sie die während der Synchronisierung ausgelösten Ereignisse, um die Änderungen zu validieren, bevor sie für die Zieldatenbank übernommen werden. Weitere Informationen zu Ereignissen finden Sie unter Vorgehensweise: Arbeiten mit Ereignissen und Programmgeschäftslogik.
Richten Sie zwischen lokalen Assemblys und Remoteassemblys in n-Ebenen-Architekturen Vertrauensstellungen ein. In n-Ebenen-Szenarien sollten lokale Assemblys und Remoteassemblys über gegenseitige Vertrauensstellungen verfügen. Die Mechanismen zum Einrichten einer Vertrauensbeziehung liegen außerhalb des Aufgabenbereichs der Sync Framework-API, und die Vertrauensstellung muss von der Anwendung eingerichtet werden.
Folgen Sie diesen Richtlinien, wenn Sie Windows Communication Foundation (WCF) für n-Ebenen-Anwendungen verwenden:
Legen Sie die entsprechenden Berechtigungen auf dem WCF-Namespace fest, den der Dienst verwendet. Erstellen Sie einen neuen Namespace, oder stellen Sie sicher, dass für den Standardnamespace die richtigen Berechtigungen festgelegt sind.
Führen Sie den WCF-Dienst unter einem dedizierten Konto mit nur den Privilegien aus, die für den Zugriff auf an Synchronisierungen beteiligten Datenbanken und auf alle Spooldateien notwendig sind, die bei Synchronisierungsänderungen im Batchmodus verwendet werden.
Verwenden Sie einen dedizierten Anwendungspool, damit der WCF-Dienst Synchronisierungsvorgänge von allen anderen Diensten isoliert, die auf dem Server der mittleren Ebene ausgeführt werden.
Verwenden Sie die WCF-Einschränkung, um Denial-of-Service-Angriffe (DOS) gegen den Webdienst zu verhindern. Durch Einschränkungen können die Ressourcen kontrolliert werden, die ein Benutzer des Diensts belegen kann.
Ersetzen Sie die WCF URL-Standardreservierung durch eine eingeschränkte Reservierung. Weitere Informationen finden Sie in diesem Microsoft-Artikel.
Weitere Informationen finden Sie in der WCF-Dokumentation.
Beachten Sie bei der Verwendung der Ablaufverfolgung, dass Ablaufverfolgungsdateien Informationen über Server- und Clientcomputer sowie Anwendungs- und Anmeldedaten enthalten können. (Kennwörter werden nicht in die Ablaufverfolgungsdatei geschrieben.) Wenn die ausführliche Ablaufverfolgung aktiviert ist, wird jede in der Datenbank geänderte Zeile in die Ablaufverfolgungsdatei geschrieben. Sie können die Ablaufverfolgungsdatei schützen, indem Sie die entsprechenden Zugriffssteuerungslisten verwenden. Weitere Informationen zur Ablaufverfolgung finden Sie unter Vorgehensweise: Ablaufverfolgung des Synchronisierungsvorgangs.
Legen Sie für die Client- und Serversynchronisierung nach Möglichkeit explizit die ClientId-Eigenschaft in der Clientanwendung fest. Wenn diese Eigenschaft nicht eingerichtet ist, wird von Sync Framework eine ID zugewiesen. In diesem Fall muss die Clientanwendung auf die folgende Registrierungsstruktur auf dem Server zugreifen können: HK_CURRENT_USER\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5. Für den Zugriff auf die Registrierungsstruktur sind Administratorrechte erforderlich. Davon wird jedoch abgeraten.
Berücksichtigen Sie diese Probleme, wenn Sie Filter für Tabellen definieren, die synchronisiert werden:
Sync Framework überprüft nicht die SQL-Zeichenfolgen, die für Bereichsfilter angegeben sind. Entwickler sollten sich an bewährte Methoden zum Schutz vor bösartigen Zeichenfolgen halten. Weitere Informationen finden Sie in diesem MSDN-Artikel.
Verlassen Sie sich bei der Sicherheit nicht auf das Filtern. Die Möglichkeit, Daten nach einem Client oder einer Benutzer-ID zu filtern, ist keine Sicherheitsfunktion. Mit anderen Worten: Durch diese Herangehensweise wird nicht verhindert, dass ein Client oder Peer Daten liest, die zu einem anderen Client oder Peer gehören. Diese Art der Filterung eignet sich nur zum Partitionieren von Daten und zur Verringerung der Datenmenge, die synchronisiert wird.
Siehe auch
Konzepte
Überlegungen zum Entwurf und zur Bereitstellung von Anwendungen