Partager via


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.

[!REMARQUE]

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 de serveur à l'aide de son certificat.

  4. Sauvegardez le certificat dans un fichier puis copiez-le de manière sécurisée dans le ou les 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 sur un système appelé HOST_A. La section « Exemple », située plus loin dans cette rubrique, illustre les mêmes étapes pour une autre instance de serveur sur un système appelé 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).

  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 :

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate for database mirroring';
    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 effectuer les étapes équivalentes pour configurer des connexions sortantes sur 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';
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.