Использование сертификатов для исходящих соединений при зеркальном отображении базы данных

Применимо к: даSQL Server (все поддерживаемые версии)

В этом подразделе описаны этапы настройки экземпляров сервера для использования сертификатов проверки подлинности исходящих соединений при зеркальном отображении базы данных. Конфигурацию исходящих соединений необходимо выполнить до настройки входящих соединений.

Примечание

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

Конфигурирование исходящих соединений включает следующие шаги.

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

  2. В базе данных master создайте зашифрованный сертификат для экземпляра сервера.

  3. Создайте конечную точку для экземпляра сервера при использовании его сертификата.

  4. Создайте резервную копию сертификата в файле и защищенным образом скопируйте этот файл на другие системы.

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

Ниже эти шаги описаны подробно. Для каждого шага приведен пример настройки экземпляра сервера в системе с именем HOST_A. В соответствующем разделе «Пример» показаны те же шаги для другого экземпляра сервера в системе с именем HOST_B.

Процедура

Настройка экземпляров сервера на исходящие соединения зеркального отображения (на HOST_A)

  1. В базе данных master создайте главный ключ базы данных, если он еще не создан. Для просмотра существующих ключей базы данных предназначено представление каталога sys.symmetric_keys .

    Создание главного ключа базы данных производится следующей инструкцией Transact-SQL :

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';  
    GO  
    

    Используйте уникальный надежный пароль, запишите его и храните в надежном месте.

    Дополнительные сведения см. в разделах CREATE MASTER KEY (Transact-SQL) и Создание главного ключа базы данных.

  2. В базе данных master создайте зашифрованный сертификат экземпляра сервера, он будет использоваться для исходящих соединений этого экземпляра при зеркальном отображении базы данных.

    Например, чтобы создать сертификат для системы HOST_A.

    Важно!

    Если планируется использование сертификата в течение срока, превышающего один год, укажите дату истечения срока действия в формате UTC с помощью параметра EXPIRY_DATE инструкции CREATE CERTIFICATE. Кроме того, рекомендуется использовать среду SQL Server Management Studio для создания правила управления на основе политик, чтобы получать предупреждения при завершении срока действия сертификатов. В диалоговом окне Создание нового условия создайте это правило в поле @ExpirationDate аспекта Certificate. Дополнительные сведения см. в разделах Администрирование серверов с помощью управления на основе политик и Обеспечение безопасности SQL Server.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate for database mirroring',   
       EXPIRY_DATE = '11/30/2013';  
    GO  
    

    Дополнительные сведения см. в разделе CREATE CERTIFICATE (Transact-SQL).

    Просмотр сертификатов в базе данных master можно выполнить с помощью следующих инструкций Transact-SQL :

    USE master;  
    SELECT * FROM sys.certificates;  
    

    Дополнительные сведения см. в разделе sys.certificates (Transact-SQL).

  3. Убедитесь, что в каждом экземпляре сервера существует конечная точка зеркального отображения базы данных.

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

    SELECT name, role_desc, state_desc, connection_auth_desc, encryption_algorithm_desc   
       FROM sys.database_mirroring_endpoints;  
    

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

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

    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  
    

    Дополнительные сведения см. в разделе CREATE ENDPOINT (Transact-SQL).

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

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    

    Дополнительные сведения см. в разделе BACKUP CERTIFICATE (Transact-SQL).

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

Программный код примеров на предыдущих шагах конфигурирует исходящие соединения на HOST_A.

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

Пример

В следующем примере показано конфигурирование исходящих соединений на HOST_Б.

USE master;  
--Create the database Master Key, if needed.  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
GO  
-- Make a certifcate on HOST_B server instance.  
CREATE CERTIFICATE HOST_B_cert   
   WITH SUBJECT = 'HOST_B certificate for database mirroring',   
   EXPIRY_DATE = '11/30/2013';  
GO  
--Create a mirroring endpoint for the server instance on 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  
--Backup HOST_B certificate.  
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
GO   
--Using any secure copy method, copy C:\HOST_B_cert.cer to HOST_A.  

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

Важно!

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

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

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

Безопасность .NET Framework

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

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

См. также:

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