Udostępnij za pośrednictwem


Przykład: konfigurowanie dublowania bazy danych przy użyciu certyfikatów (Transact-SQL)

Dotyczy:programu SQL Server

W tym przykładzie przedstawiono wszystkie etapy wymagane do utworzenia sesji dublowania bazy danych przy użyciu uwierzytelniania opartego na certyfikatach. W przykładach w tym temacie użyto języka Transact-SQL. Jeśli nie możesz zagwarantować bezpieczeństwa sieci, zalecamy użycie szyfrowania dla połączeń dublowania bazy danych.

Podczas kopiowania certyfikatu do innego systemu należy użyć metody bezpiecznego kopiowania. Bądź wyjątkowo ostrożny, aby wszystkie certyfikaty trzymać w bezpiecznym miejscu.

Przykład

W poniższym przykładzie pokazano, co należy zrobić dla jednego partnera, który znajduje się na HOST_A. W tym przykładzie te dwa zespoły są domyślnymi instancjami serwera na trzech systemach komputerowych. Dwie instancje serwera działają w niezaufanych domenach systemu Windows, więc wymagane jest uwierzytelnianie oparte na certyfikatach.

Główna rola jest wykonywana przez HOST_A, a rola lustrzana przez HOST_B.

Skonfigurowanie dublowania bazy danych przy użyciu certyfikatów obejmuje cztery etapy ogólne, z których trzy etapy– 1, 2 i 4 — są pokazane w tym przykładzie. Te etapy są następujące:

  1. Konfigurowanie połączeń wychodzących

    W tym przykładzie przedstawiono kroki dla:

    1. Konfigurowanie Host_A dla połączeń wychodzących.

    2. Konfigurowanie Host_B dla połączeń wychodzących.

    Aby uzyskać informacje na temat tego etapu konfigurowania dublowania bazy danych, zobacz Zezwalaj punktowi końcowemu dublowania bazy danych na używanie certyfikatów dla połączeń wychodzących (Transact-SQL).

  2. Konfigurowanie połączeń przychodzących

    W tym przykładzie przedstawiono kroki dla:

    1. Konfigurowanie Host_A dla połączeń przychodzących.

    2. Konfigurowanie Host_B dla połączeń przychodzących.

    Aby uzyskać informacje na temat tego etapu konfigurowania dublowania bazy danych, zobacz Zezwalaj punktowi końcowemu dublowania bazy danych na używanie certyfikatów dla połączeń przychodzących (Transact-SQL).

  3. Tworzenie bazy danych lustrzanej

    Aby uzyskać informacje na temat tworzenia bazy lustrzanej, zobacz Prepare a Mirror Database for Mirroring (SQL Server).

  4. konfigurowanie partnerów mirroringu

Konfigurowanie połączeń wychodzących

Aby skonfigurować Host_A dla połączeń wychodzących

  1. W razie potrzeby w bazie danych master utwórz klucz główny bazy danych. Zastąp <password> prawidłowym hasłem.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';  
    GO  
    
  2. Utwórz certyfikat dla tego wystąpienia serwera.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate';  
    GO  
    
  3. Utwórz punkt końcowy dublowania dla wystąpienia serwera przy użyciu certyfikatu.

    CREATE ENDPOINT Endpoint_Mirroring  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=7024  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE HOST_A_cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Wykonaj kopię zapasową certyfikatu HOST_A i skopiuj go do innego systemu, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. Korzystając z dowolnej metody bezpiecznego kopiowania, skopiuj C:\HOST_A_cert.cer do HOST_B.

Aby skonfigurować Host_B dla połączeń wychodzących

  1. W razie potrzeby w bazie danych master utwórz klucz główny bazy danych.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
    GO  
    
  2. Utwórz certyfikat na instancji serwera HOST_B.

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  3. Utwórz punkt końcowy dublowania dla wystąpienia serwera w HOST_B.

    CREATE ENDPOINT Endpoint_Mirroring  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=7024  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE HOST_B_cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Tworzenie kopii zapasowej certyfikatu HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  5. Używając dowolnej metody bezpiecznego kopiowania, skopiuj C:\HOST_B_cert.cer do HOST_A.

Aby uzyskać więcej informacji, zobacz Zezwól punktowi końcowemu dublowania bazy danych na użycie certyfikatów dla połączeń wychodzących (Transact-SQL).

[Top of Example]

Konfigurowanie połączeń przychodzących

Aby skonfigurować Host_A dla połączeń przychodzących

  1. Utwórz konto na HOST_A dla HOST_B. Zastąp <password> prawidłowym hasłem.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '<password>';  
    GO  
    
  2. Utwórz użytkownika dla tego logowania.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. --Skojarz certyfikat z użytkownikiem.

    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    
  4. Udziel uprawnień CONNECT podczas logowania dla zdalnego punktu końcowego dublowania.

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

Aby skonfigurować Host_B dla połączeń przychodzących

  1. Utwórz konto logowania na HOST_B dla HOST_A.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  2. Utwórz użytkownika dla tego loginu.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  3. Skojarz certyfikat z użytkownikiem.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  4. Udziel uprawnień CONNECT na login dla zdalnego punktu końcowego mirroringu.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];  
    GO  
    

Ważny

Jeśli zamierzasz uruchomić wysoko-bezpieczny tryb z automatycznym failover, trzeba powtórzyć te same kroki konfiguracji, aby skonfigurować świadka dla połączeń wychodzących i przychodzących. Skonfigurowanie połączeń przychodzących, gdy zaangażowany jest świadek, wymaga skonfigurowania identyfikatorów logowania i użytkowników dla świadka u obu partnerów oraz dla obu partnerów u świadka.

Aby uzyskać więcej informacji, zobacz Pozwól punktowi końcowemu dublowania bazy danych używać certyfikatów dla połączeń przychodzących (Transact-SQL).

[Top of Example]

Tworzenie bazy danych lustrzanej

Aby uzyskać informacje na temat tworzenia bazy danych lustrzanej, zobacz Prepare a Mirror Database for Mirroring (SQL Server).

Konfigurowanie partnerów mirroringu

  1. Na wystąpieniu serwera lustrzanego na HOST_B, ustaw wystąpienie serwera na HOST_A jako partnera (co czyni go początkowym wystąpieniem serwera głównego). Zastąp TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024prawidłowym adresem sieciowym. Aby uzyskać więcej informacji, zobacz Określanie adresu sieciowego serwera (dublowanie bazy danych).

    --At HOST_B, set server instance on HOST_A as partner (principal server):  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  2. W głównym wystąpieniu serwera na HOST_A ustaw wystąpienie serwera na HOST_B jako partnera (co czyni go początkowym wystąpieniem serwera lustrzanego). Zastąp TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024prawidłowym adresem sieciowym.

    --At HOST_A, set server instance on HOST_B as partner (mirror server).  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  3. W tym przykładzie przyjęto założenie, że sesja będzie działać w trybie wysokiej wydajności. Aby skonfigurować tę sesję w trybie wysokiej wydajności, w wystąpieniu głównego serwera (na HOST_A) ustaw opcję bezpieczeństwo transakcji na WYŁ.

    --Change to high-performance mode by turning off transaction safety.  
    ALTER DATABASE AdventureWorks   
        SET PARTNER SAFETY OFF  
    GO  
    

    Notatka

    Jeśli zamierzasz działać w trybie wysokiego bezpieczeństwa z automatycznym przełączaniem awaryjnym, pozostaw bezpieczeństwo transakcji ustawione na PEŁNE (ustawienie domyślne) i dodaj świadka tak szybko, jak to możliwe po wykonaniu drugiej instrukcji SET PARTNER "partner_server". Należy pamiętać, że świadek musi być najpierw skonfigurowany dla połączeń wychodzących i przychodzących.

[Top of Example]

Powiązane zadania

Zobacz też

Zabezpieczenia transportu dla dublowania baz danych i grup dostępności Always On (SQL Server)
określ adres sieciowy serwera (dublowanie bazy danych)
Punkt końcowy mirroringu bazy danych (SQL Server)
Użyj certyfikatów dla punktu końcowego dublowania bazy danych (Transact-SQL)
ALTER DATABASE (Transact-SQL)
Centrum Bezpieczeństwa dla Silnika Baz Danych SQL Server i Azure SQL Database