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

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

ПримечаниеПримечание

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

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

  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 аспекта Сертификат. Дополнительные сведения см. в разделах Администрирование серверов с помощью управления на основе политик, Учебник. Администрирование серверов с помощью управления на основе политик и Обеспечение безопасности 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, см. в разделе Как подготовить зеркальную базу данных для зеркального отображения (Transact-SQL).

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

Безопасность

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

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

См. также

Задания

Справочник

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

Журнал изменений

Обновленное содержимое

Добавлено примечание об использовании параметра EXPIRY_DATE в инструкциях CREATE CERTIFICATE; а также обновлены примеры кода для этого параметра.