Поделиться через


Пример. Настройка зеркального отображения базы данных с помощью сертификатов (Transact-SQL)

В этом примере показаны все этапы, необходимые для создания сеанса зеркального отображения базы данных с помощью проверки подлинности на основе сертификатов. Примеры, приведенные в этом разделе, используют Transact-SQL. За исключением случаев, когда сеть гарантированно защищена, рекомендуется для соединений зеркального отображения базы данных применять шифрование.

При копировании сертификата на другую систему используйте безопасный метод копирования. Отнеситесь с особым вниманием к хранению сертификатов в безопасном месте.

Пример

В следующем примере показано, что необходимо выполнить на одном из партнеров, который находится на HOST_A. В этом примере два партнера являются экземплярами сервера по умолчанию на трех компьютерах. Два экземпляра сервера выполняются в ненадежных доменах Windows, поэтому требуется проверка подлинности на основе сертификатов.

Начальная главная роль принадлежит HOST_A, а дублирующая роль принадлежит HOST_B.

Настройка зеркального отображения базы данных с помощью сертификатов включает четыре общих этапа, из которых показаны три этапа 1, 2 и 4. Ниже приведены следующие этапы.

  1. Настройка исходящих подключений

    В этом примере показано, как выполнить следующие действия.

    1. Настройка Host_A для исходящих подключений.

    2. Настройка Host_B для исходящих подключений.

    Сведения об этом этапе настройки зеркального отображения базы данных см. в разделе "Разрешить конечную точку зеркального отображения базы данных использовать сертификаты для исходящих подключений" (Transact-SQL).

  2. Настройка входящих подключений

    В этом примере показано, как выполнить следующие действия.

    1. Настройка Host_A для входящих подключений.

    2. Настройка Host_B для входящих подключений.

    Сведения об этом этапе настройки зеркального отображения базы данных см. в разделе "Разрешить конечную точку зеркального отображения базы данных использовать сертификаты для входящих подключений" (Transact-SQL).

  3. Создание зеркальной базы данных

    Сведения о создании зеркальной базы данных см. в статье "Подготовка зеркальной базы данных для зеркального отображения" (SQL Server).

  4. Настройка партнеров зеркального отображения

Настройка исходящих подключений

Настройка Host_A для исходящих подключений

  1. При необходимости создайте главный ключ базы данных в базе данных master.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';  
    GO  
    
  2. Создайте сертификат для этого экземпляра сервера.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate';  
    GO  
    
  3. Создайте конечную точку для зеркалирования с помощью сертификата для экземпляра сервера.

    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. Создайте резервную копию сертификата HOST_A и скопируйте его в другую систему, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. С помощью любого метода безопасного копирования скопируйте C:\HOST_A_cert.cer в HOST_B.

Настройка Host_B для исходящих подключений

  1. Если необходимо, создайте главный ключ базы данных в основной базе данных.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
    GO  
    
  2. Создайте сертификат на экземпляре сервера HOST_B.

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  3. Создайте конечную точку зеркалирования для экземпляра сервера на 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. Резервное копирование сертификата HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  5. Используя любой безопасный метод копирования, скопируйте C:\HOST_B_cert.cer в HOST_A.

Дополнительные сведения см. в разделе Включение использования сертификатов для исходящих соединений в конечной точке зеркального отображения базы данных (Transact-SQL).

Настройка входящих подключений

Настройка Host_A для входящих подключений

  1. Создайте имя входа в HOST_A для HOST_B.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';  
    GO  
    
  2. --Создайте пользователя для этого имени входа.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. --Свяжите сертификат с пользователем.

    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    
  4. Предоставьте данной учетной записи разрешение CONNECT на эту удаленную конечную точку зеркального отображения.

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

Настройка Host_B для входящих подключений

  1. Создайте имя входа в HOST_B для HOST_A.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  2. Создайте пользователя для этого имени входа.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  3. Свяжите сертификат с пользователем.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  4. Предоставьте данной учетной записи разрешение CONNECT на эту удаленную конечную точку зеркального отображения.

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

Это важно

Если вы планируете работать в режиме высокой безопасности с автоматической отработкой отказа, необходимо повторить те же действия по настройке свидетеля для исходящих и входящих подключений. Настройка входящих подключений, когда задействован свидетель, требует настройки имен входа и пользователей для свидетеля на обоих партнерах, а также для обоих партнеров на свидетеле.

Для получения дополнительной информации см. статью Использование сертификатов для входящих соединений в конечной точке зеркального отображения базы данных (Transact-SQL).

Создание зеркальной базы данных

Сведения о создании зеркальной базы данных см. в статье "Подготовка зеркальной базы данных для зеркального отображения" (SQL Server).

Настройка партнёров зеркалирования

  1. На экземпляре зеркального сервера на HOST_B задайте экземпляр сервера в HOST_A в качестве партнера (делая его начальным экземпляром основного сервера). Подставьте действительный сетевой адрес вместо TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024. Дополнительные сведения см. в статье Указание сетевого адреса сервера (зеркальное отображение базы данных).

    --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. На экземпляре основного сервера на HOST_A задайте экземпляр сервера на HOST_B в качестве партнера, (делая его начальным зеркальным экземпляром сервера). Подставьте допустимый сетевой адрес вместо TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024.

    --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. В этом примере предполагается, что сеанс будет работать в режиме высокой производительности. Чтобы настроить этот сеанс для высокопроизводительного режима, на экземпляре основного сервера (на HOST_A) установите для параметра "Безопасность транзакций" значение OFF.

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

    Замечание

    Если вы планируете работать в режиме высокой безопасности с автоматическим переключением на резервный сервер, оставьте значение безопасности транзакций FULL (параметр по умолчанию) и добавьте наблюдателя как можно скорее после выполнения второй инструкции SET PARTNER "partner_server". Обратите внимание, что свидетель сначала должен быть настроен для исходящего и входящего подключения.

Связанные задачи

См. также

Транспортная безопасность для зеркального отображения базы данных и групп доступности Always On (SQL Server)
Указание сетевого адреса сервера (зеркальное отображение базы данных)
Конечная точка зеркального отображения базы данных (SQL Server)
Использование сертификатов для конечной точки зеркального отображения базы данных (Transact-SQL)
Изменить базу данных (Transact-SQL)
Центр безопасности для ядра СУБД SQL Server и Базы данных Azure SQL