Datenbankspiegelung: Verwenden von Zertifikaten für eingehende Verbindungen

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen)

In diesem Thema werden die Schritte beschrieben, um Serverinstanzen so zu konfigurieren, dass bei der Datenbankspiegelung Zertifikate zur Authentifizierung von eingehenden Verbindungen verwendet werden können. Bevor Sie eingehende Verbindungen einrichten können, müssen Sie ausgehende Verbindungen für jede Serverinstanz konfigurieren. Weitere Informationen finden Sie unter Ermöglichen des Verwendens von Zertifikaten für ausgehende Verbindungen für einen Datenbankspiegelungs-Endpunkt (Transact-SQL).

Der Vorgang zum Konfigurieren der eingehenden Verbindungen umfasst die folgenden allgemeinen Schritte:

  1. Erstellen eines Anmeldenamens für das andere System.

  2. Erstellen Sie einen Benutzer für den Anmeldenamen.

  3. Abrufen des Zertifikats für den Spiegelungsendpunkt der anderen Serverinstanz

  4. Ordnen Sie das Zertifikat dem in Schritt 2 erstellten Benutzer zu.

  5. Erteilen der CONNECT-Berechtigung für den Anmeldenamen für den entsprechenden Spiegelungsendpunkt

Falls ein Zeuge vorhanden ist, müssen Sie auch eingehende Verbindungen für diesen einrichten. Hierfür ist es erforderlich, Anmeldenamen, Benutzer und Zertifikate für den Zeugen auf beiden Partnern (und umgekehrt) einzurichten.

Die folgende Prozedur beschreibt diese Schritte detailliert. Für jeden Schritt enthält die Prozedur ein Beispiel für das Konfigurieren einer Serverinstanz auf einem System namens HOST_A. Im zugehörigen Beispielabschnitt werden dieselben Schritte für eine andere Serverinstanz auf einem System namens HOST_B beschrieben.

So konfigurieren Sie Serverinstanzen für eingehende Spiegelungsverbindungen (auf HOST_A)

  1. Erstellen eines Anmeldenamens für das andere System

    Das folgende Beispiel erstellt einen Anmeldenamen für das System HOST_B in der master -Datenbank der Serverinstanz auf HOST_A. In diesem Beispiel heißt der Anmeldename HOST_B_login. Ersetzen Sie das Beispielkennwort durch ein Kennwort Ihrer Wahl.

    USE master;  
    CREATE LOGIN HOST_B_login   
       WITH PASSWORD = '1Sample_Strong_Password!@#';  
    GO  
    

    Weitere Informationen finden Sie unter CREATE LOGIN (Transact-SQL).

    Um die Anmeldenamen für diese Serverinstanz anzuzeigen, können Sie die folgende Transact-SQL-Anweisung verwenden:

    SELECT * FROM sys.server_principals  
    

    Weitere Informationen finden Sie unter sys.server_principals (Transact-SQL).

  2. Erstellen Sie einen Benutzer für den Anmeldenamen.

    Das folgende Beispiel erstellt einen Benutzer namens HOST_B_user für den im vorherigen Schritt erstellten Anmeldenamen.

    USE master;  
    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    

    Weitere Informationen finden Sie unter CREATE USER (Transact-SQL).

    Um die Benutzer für diese Serverinstanz anzuzeigen, können Sie die folgende Transact-SQL-Anweisung verwenden:

    SELECT * FROM sys.sysusers;  
    

    Weitere Informationen finden Sie unter sys.sysusers (Transact-SQL).

  3. Abrufen des Zertifikats für den Spiegelungsendpunkt der anderen Serverinstanz

    Wenn dies noch nicht beim Konfigurieren ausgehender Verbindungen geschehen ist, rufen Sie eine Kopie des Zertifikats für den Spiegelungsendpunkt der Remoteserverinstanz ab. Sichern Sie zu diesem Zweck das Zertifikat für diese Serverinstanz wie unter Ermöglichen des Verwendens von Zertifikaten für ausgehende Verbindungen für einen Datenbankspiegelungs-Endpunkt (Transact-SQL) beschrieben. Verwenden Sie zum Kopieren eines Zertifikats zu einem anderen System eine sichere Kopiermethode. Seien Sie äußerst vorsichtig, um Ihre Zertifikate zu schützen.

    Weitere Informationen finden Sie unter BACKUP CERTIFICATE (Transact-SQL).

  4. Ordnen Sie das Zertifikat dem in Schritt 2 erstellten Benutzer zu.

    Das folgende Beispiel ordnet das Zertifikat von HOST_B seinem Benutzer auf HOST_A zu.

    USE master;  
    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    

    Weitere Informationen finden Sie unter CREATE CERTIFICATE (Transact-SQL).

    Um die Zertifikate für diese Serverinstanz anzuzeigen, verwenden Sie die folgende Transact-SQL-Anweisung:

    SELECT * FROM sys.certificates  
    

    Weitere Informationen finden Sie unter sys.certificates (Transact-SQL).

  5. Erteilen Sie die CONNECT-Berechtigung für den Anmeldenamen für den Remotespiegelungsendpunkt.

    Um beispielsweise auf HOST_A die Berechtigung für die Remoteserverinstanz auf HOST_B zum Herstellen der Verbindung mit ihrem lokalen Anmeldenamen zu erteilen, d.h., um eine Verbindung mit HOST_B_login herzustellen, verwenden Sie die folgenden Transact-SQL-Anweisungen:

    USE master;  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];  
    GO  
    

    Weitere Informationen finden Sie unter GRANT (Endpunktberechtigungen) (Transact-SQL).

Hiermit ist das Einrichten der Zertifikatsauthentifizierung für HOST_B zur Anmeldung bei HOST_A abgeschlossen.

Jetzt müssen die entsprechenden Schritte für eingehende Verbindungen für HOST_A auf HOST_B ausgeführt werden. Diese Schritte werden im Abschnitt zu eingehenden Verbindungen des folgenden Beispiels erläutert.

Beispiel

Im folgenden Beispiel wird das Konfigurieren von HOST_B für eingehende Verbindungen erläutert.

Hinweis

In diesem Beispiel wird eine Zertifikatsdatei mit dem Zertifikat von HOST_A verwendet, das durch einen Codeausschnitt in Ermöglichen des Verwendens von Zertifikaten für ausgehende Verbindungen für einen Datenbankspiegelungs-Endpunkt (Transact-SQL) erstellt wird.

USE master;  
--On HOST_B, create a login for HOST_A.  
CREATE LOGIN HOST_A_login WITH PASSWORD = 'AStrongPassword!@#';  
GO  
--Create a user, HOST_A_user, for that login.  
CREATE USER HOST_A_user FOR LOGIN HOST_A_login  
GO  
--Obtain HOST_A certificate. (See the note   
--   preceding this example.)  
--Asscociate this certificate with the user, HOST_A_user.  
CREATE CERTIFICATE HOST_A_cert  
   AUTHORIZATION HOST_A_user  
   FROM FILE = 'C:\HOST_A_cert.cer';  
GO  
--Grant CONNECT permission for the server instance on HOST_A.  
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_A_login  
GO  

Wenn Sie die Ausführung im Modus für hohe Sicherheit mit automatischem Failover planen, müssen Sie die gleichen Setupschritte zum Konfigurieren des Zeugen für aus- und eingehende Verbindungen ausführen.

Weitere Informationen zum Erstellen einer Spiegeldatenbank, einschließlich eines Transact-SQL-Beispiels, finden Sie unter Vorbereiten einer Spiegeldatenbank auf die Spiegelung (SQL Server).

Ein Transact-SQL-Beispiel zum Einrichten einer Sitzung im Modus für hohe Leistung finden Sie unter Beispiel: Einrichten der Datenbankspiegelung mithilfe von Zertifikaten (Transact-SQL).

.NET Framework-Sicherheit

Verwenden Sie zum Kopieren eines Zertifikats zu einem anderen System eine sichere Kopiermethode. Seien Sie äußerst vorsichtig, um Ihre Zertifikate zu schützen.

Weitere Informationen

Transportsicherheit für Datenbankspiegelung und Always On-Verfügbarkeitsgruppen (SQL Server)
GRANT (Endpunktberechtigungen) (Transact-SQL)
Einrichten einer verschlüsselten Spiegeldatenbank
Der Datenbankspiegelungs-Endpunkt (SQL Server)
Problembehandlung für die Datenbankspiegelungskonfiguration (SQL Server)