Procédure : autoriser la mise en miroir de bases de données à utiliser des certificats pour les connexions sortantes (Transact-SQL)

Cette rubrique explique comment configurer les instances de serveur de sorte qu'elles utilisent des certificats pour authentifier les connexions sortantes de la mise en miroir de bases de données. La configuration des connexions sortantes doit être effectuée avant celle des connexions entrantes.

Notes

Toutes les connexions de mise en miroir sur une instance de serveur utilisent un point de terminaison de mise en miroir de bases de données unique et vous devez spécifier la méthode d'authentification de cette instance lorsque vous créez le point de terminaison.

Le processus de configuration des connexions sortantes comprend les étapes générales suivantes :

  1. Dans la base de données master, créez une clé principale de base de données.

  2. Dans la base de données master, créez un certificat chiffré sur l'instance de serveur.

  3. Créez un point de terminaison pour l'instance du serveur à l'aide de son certificat.

  4. Sauvegardez le certificat dans un fichier et copiez-le par sécurité sur un ou plusieurs autres systèmes.

Vous devez effectuer ces étapes pour chaque partenaire ainsi que pour le témoin éventuel.

La procédure suivante décrit ces étapes en détail. Pour chaque étape, la procédure fournit un exemple de configuration d'une instance de serveur présente sur un système nommé HOST_A. La section Exemple montre les mêmes étapes pour une autre instance de serveur présente sur un système nommé HOST_B.

Procédure

Pour configurer les instances du serveur pour les connexions de mise en miroir sortantes (sur HOST_A)

  1. Dans la base de données master, créez la clé principale de base de données, si aucune n'existe. Pour afficher les clés existantes d'une base de données, utilisez l'affichage catalogue sys.symmetric_keys.

    Pour créer la clé principale de base de données, utilisez la commande Transact-SQL suivante :

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

    Utilisez un mot de passe fort et unique puis enregistrez-le dans un lieu sûr.

    Pour plus d'informations, consultez CREATE MASTER KEY (Transact-SQL) et Procédure : créer une clé principale de base de données.

  2. Dans la base de données master, créez un certificat chiffré sur l'instance de serveur, que celle-ci pourra utiliser pour les connexions sortantes de la mise en miroir de bases de données.

    Par exemple, pour créer un certificat pour le système HOST_A :

    Important

    Si vous projetez d'utiliser le certificat pendant plusieurs années, spécifiez la date d'expiration à l'heure UTC dans votre instruction CREATE CERTIFICATE à l'aide de l'option EXPIRY_DATE. Par ailleurs, nous recommandons d'utiliser SQL Server Management Studio pour créer une règle de gestion basée sur des stratégies pour vous avertir de l'expiration de vos certificats. Depuis la boîte de dialogue de gestion des stratégies Créer une nouvelle condition, créez cette règle dans le champ @ExpirationDate de la facette Certificat. Pour plus d'informations, consultez Administration de serveurs à l'aide de la Gestion basée sur des stratégies, Didacticiel : Administration de serveurs à l'aide de la Gestion basée sur des stratégies et Sécurisation de SQL Server.

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

    Pour plus d'informations, consultez CREATE CERTIFICATE (Transact-SQL).

    Pour afficher les certificats stockés dans la base de données master, vous pouvez utiliser les instructions Transact-SQL suivantes :

    USE master;
    SELECT * FROM sys.certificates;
    

    Pour plus d'informations, consultez sys.certificates (Transact-SQL).

  3. Vérifiez que le point de terminaison de mise en miroir de bases de données existe sur chacune des instances de serveur.

    Si un point de terminaison de mise en miroir de bases de données existe déjà pour l'instance de serveur, vous devez le réutiliser pour toutes les autres sessions que vous établissez sur cette instance. Pour déterminer si un point de terminaison de mise en miroir de bases de données existe sur une instance de serveur et pour afficher sa configuration, utilisez l'instruction suivante :

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

    Si aucun point de terminaison n'existe, créez un point de terminaison qui utilise ce certificat pour les connexions sortantes et qui a recours à ses informations d'identification à des fins de vérification sur l'autre système. Il s'agit d'un point de terminaison de niveau serveur utilisé par toutes les sessions de mise en miroir auxquelles participe l'instance de serveur.

    L'instruction suivante permet de créer un point de terminaison de mise en miroir pour l'exemple d'instance de serveur de 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
    

    Pour plus d'informations, consultez CREATE ENDPOINT (Transact-SQL).

  4. Sauvegardez le certificat et copiez-le sur le ou les autres systèmes. Cette opération est nécessaire pour configurer les connexions entrantes sur l'autre système.

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

    Pour plus d'informations, consultez BACKUP CERTIFICATE (Transact-SQL).

    Copiez ce certificat en utilisant la méthode sécurisée de votre choix. Veillez à conserver tous vos certificats en lieu sûr.

L'exemple de code des étapes précédentes configure des connexions sortantes sur HOST_A.

Vous devez maintenant procéder aux étapes équivalentes pour les connexions sortantes HOST_B. Ces étapes sont illustrées dans la section Exemple ci-après.

Exemple

L'exemple ci-dessous illustre la configuration de HOST_B pour la prise en charge des connexions sortantes.

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.

Copiez le certificat sur l'autre système en utilisant la méthode sécurisée de votre choix. Veillez particulièrement à sécuriser tous vos certificats.

Important

Une fois que vous avez défini les connexions sortantes, vous devez configurer les connexions entrantes sur chacune des instances du serveur pour l'instance ou les instances de l'autre serveur. Pour plus d'informations, consultez Procédure : autoriser la mise en miroir de bases de données afin d'utiliser les certificats pour les connexions entrantes (Transact-SQL).

Pour des informations sur la création d'une base de données miroir, incluant un exemple Transact-SQL, consultez Procédure : préparer une base de données miroir pour la mise en miroir (Transact-SQL).

Pour un exemple Transact-SQL d'établissement d'une session en mode hautes performances, consultez Exemple : configuration de la mise en miroir de bases de données à l'aide de certificats (Transact-SQL).

Sécurité

Sauf si vous pouvez garantir que votre réseau est sécurisé, il est recommandé de chiffrer les connexions de mise en miroir de bases de données.

Lorsque vous copiez un certificat sur un autre système, utilisez une méthode sécurisée.

Historique des modifications

Mise à jour du contenu

Ajout d'une remarque sur l'utilisation de l'option EXPIRY_DATE dans les instructions CREATE CERTIFICATE et mise à jour des exemples de code avec cette option.