Zertifikate und Service Broker
In diesem Thema wird beschrieben, wie SQL Server Zertifikate für die Remotesicherheit von Service Broker verwendet. Die Remotesicherheit von Service Broker betrifft Vorgänge, an denen mehr als eine Instanz von SQL Server beteiligt ist, wenn bei diesen Vorgängen entweder die Dialogsicherheit oder die Transportsicherheit verwendet wird.
Übersicht
Bei der Remotesicherheit von Service Broker wird ein Vorgang von außerhalb einer Instanz einem SQL Server-Datenbankprinzipal zugeordnet. Der Vorgang wird dann im Sicherheitskontext dieses Datenbankprinzipals ausgeführt, wobei normale SQL Server-Berechtigungsüberprüfungen stattfinden. Wenn beispielsweise eine Nachricht für eine Konversation eingeht, bei der die Dialogsicherheit verwendet wird, identifiziert Service Broker anhand der Informationen in der Nachricht einen Datenbankprinzipal für die Remoteseite der Konversation. SQL Server überprüft dann, ob der Prinzipal berechtigt ist, eine Verbindung mit der Datenbank herzustellen, die den Zieldienst hostet, und ob er berechtigt ist, eine Nachricht an den Zieldienst zu senden.
SQL Server verwendet Zertifikate, um die Identität einer Remotedatenbank zu überprüfen und den lokalen Datenbankprinzipal für den Vorgang zu identifizieren. Daher stellt die Installation eines Zertifikats in SQL Server eine Vertrauenserklärung gegenüber der Datenbank dar, die den privaten Schlüssel für das Zertifikat enthält. Aus diesem Grund sollten Sie die installierten Zertifikate und die erstellten Remotedienstbindungen sorgfältig verwalten.
Sicherheitshinweis |
---|
Installieren Sie nur Zertifikate aus vertrauenswürdigen Quellen. Geben Sie private Schlüssel nicht weiter. |
Zum Überprüfen der Identität eines Remoteservers muss SQL Server Informationen empfangen, die mit dem öffentlichen Schlüssel in einem Zertifikat entschlüsselt werden können, das einem lokalen Datenbankprinzipal gehört. Wenn SQL Server die Informationen erfolgreich entschlüsseln kann, enthält die Remotedatenbank den privaten Schlüssel, der dem öffentlichen Schlüssel im lokalen Zertifikat entspricht. Sobald SQL Server die Identität einer Remotedatenbank überprüft hat, kann die Remotedatenbank über die Berechtigungen des lokalen Datenbankprinzipals verfügen.
Hinsichtlich der Transportsicherheit muss jede Datenbank der anderen Datenbank vertrauen. Für die Transportsicherheit können entweder Zertifikate oder die Windows-Authentifizierung verwendet werden. Weitere Informationen zur Transportsicherheit finden Sie unter Service Broker-Transportsicherheit.
Hinsichtlich der Dialogsicherheit muss der Initiator des Dialogs dem Ziel vertrauen, und er muss in der Lage sein, die Identität des Ziels zu überprüfen. Allerdings kann das Ziel Verbindungen von Initiatoren zulassen, die keine Identifikationsinformationen bereitstellen. In diesem Fall verwenden die Initiatoren die Rolle public in der Datenbank, die als Host für den Zieldienst dient. Bei der Dialogsicherheit werden immer Zertifikate verwendet. Weitere Informationen zur Dialogsicherheit finden Sie unter Service Broker-Dialogsicherheit.
SQL Server stellt keine automatisierten Methoden zur Konfiguration der Service Broker-Sicherheit mithilfe von Zertifikaten bereit.
Zertifikatanforderungen
Ein Zertifikat muss die folgenden Anforderungen erfüllen, damit es für die Service Broker-Sicherheit verwendet werden kann:
Der Schlüsselmodulus muss kleiner als 2048 sein.
Die Zertifikatgröße muss kleiner als 32 KB sein.
Ein Antragstellername muss angegeben werden.
Gültigkeitsdaten müssen angegeben werden.
Bei der Schlüssellänge muss es sich um ein Vielfaches von 64 Bit handeln.
Ein mit der Transact-SQL-Anweisung CREATE CERTIFICATE erstelltes selbstsigniertes Zertifikat erfüllt die zuvor aufgelisteten Anforderungen. Aus einer Datei geladene Zertifikate erfüllen diese Anforderungen möglicherweise nicht.
Wenn das Zertifikat in SQL Server gespeichert wird, muss es mit dem Hauptschlüssel für die Datenbank verschlüsselt werden. Service Broker kann keine Zertifikate verwenden, die nur mit einem Kennwort verschlüsselt sind. Darüber hinaus muss der Hauptschlüssel für die Datenbank mit dem Dienstschlüssel für die Instanz verschlüsselt werden. Andernfalls kann Service Broker den Hauptschlüssel nicht öffnen.
Damit SQL Server ein Zertifikat verwendet, um einen Dialog zu beginnen, muss es als ACTIVE FOR BEGIN_DIALOG gekennzeichnet sein. Zertifikate sind standardmäßig entsprechend gekennzeichnet. Allerdings können Sie ein Zertifikat temporär deaktivieren, während Sie die Sicherheitskonfiguration für einen Dienst aktualisieren. Weitere Informationen finden Sie unter CREATE CERTIFICATE (Transact-SQL) und ALTER CERTIFICATE (Transact-SQL).