Пример. Настройка зеркального отображения базы данных при помощи сертификатов (язык 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. Создание зеркальной базы данных

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

  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).

[В начало]

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

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

Настройка участников зеркального отображения

  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 AdventureWorks2008R2 
        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 AdventureWorks2008R2 
        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 AdventureWorks2008R2 
        SET PARTNER SAFETY OFF;
    GO
    
    ПримечаниеПримечание

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

[В начало]

См. также

Задания

Справочник

Основные понятия