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

Область применения: SQL Server (все поддерживаемые версии)

В этом примере описаны все действия, выполняемые при создании сеанса зеркального отображения базы данных с использованием проверки подлинности на основе сертификатов. В примерах в этом подразделе используется язык 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. При необходимости создайте в базе данных master главный ключ базы данных.

    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 'сервер_партнер' . Обратите внимание, что следящий сервер вначале нужно настроить для исходящих и входящих соединений.

[В начало примера]

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

См. также:

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