Mise en miroir de bases de données - Utiliser des certificats pour les connexions entrantes

S'applique à : SQL Server

Cette rubrique décrit les étapes requises pour configurer les instances de serveur afin qu'elles utilisent les certificats pour authentifier les connexions entrantes dans le cadre de la mise en miroir de bases de données. Avant de définir des connexions entrantes, vous devez configurer les connexions sortantes sur chacune des instances du serveur. Pour plus d’informations, consultez Autoriser un point de terminaison de mise en miroir de bases de données à utiliser des certificats pour les connexions sortantes (Transact-SQL).

La configuration des connexions entrantes se fait en quatre temps, à savoir :

  1. Création d'une connexion pour l'autre système

  2. Créez un utilisateur pour cette connexion.

  3. Obtenez le certificat pour la mise en miroir du point de terminaison de l'autre instance du serveur.

  4. Associez le certificat à l'utilisateur créé à l'étape 2.

  5. Accordez à ce point de terminaison de mise en miroir l'autorisation CONNECT sur la connexion.

S'il existe un témoin, vous devez également configurer les connexions entrantes pour celui-ci. Cela exige la définition des noms de connexion, des utilisateurs et des certificats pour le témoin sur les deux partenaires, et inversement.

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 du serveur sur un système nommé HOST_A. La section Exemple qui l'accompagne explique les mêmes étapes pour une autre instance du serveur sur un système nommé HOST_B.

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

  1. Créez une connexion pour l'autre système.

    L’exemple suivant crée une connexion pour le système, HOST_B, dans la base de données master de l’instance du serveur sur HOST_A. Dans cet exemple, la connexion s’appelle HOST_B_login. Remplacez le mot de passe donné en exemple par un mot de passe qui vous est propre.

    USE master;  
    CREATE LOGIN HOST_B_login   
       WITH PASSWORD = '1Sample_Strong_Password!@#';  
    GO  
    

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

    Pour afficher les connexions sur cette instance du serveur, vous pouvez utiliser l’instruction Transact-SQL suivante :

    SELECT * FROM sys.server_principals  
    

    Pour plus d’informations, consultez sys.server_principals (Transact-SQL).

  2. Créez un utilisateur pour cette connexion.

    L'exemple suivant crée un utilisateur, HOST_B_user, pour la connexion créée lors de l'étape précédente.

    USE master;  
    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    

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

    Pour afficher les utilisateurs sur cette instance du serveur, vous pouvez utiliser l’instruction Transact-SQL suivante :

    SELECT * FROM sys.sysusers;  
    

    Pour plus d’informations, consultez sys.sysusers (Transact-SQL).

  3. Obtenez le certificat pour la mise en miroir du point de terminaison de l'autre instance du serveur.

    Si vous ne l'avez pas encore fait lors de la configuration des connexions sortantes, obtenez une copie du certificat pour le point de terminaison de mise en miroir de l'instance du serveur distant. Pour ce faire, sauvegardez le certificat sur cette instance de serveur comme décrit dans Autoriser un point de terminaison de mise en miroir de bases de données à utiliser des certificats pour les connexions sortantes (Transact-SQL). Lors de la copie d'un certificat sur un autre système, utilisez une méthode de copie sécurisée. Veillez particulièrement à sécuriser tous vos certificats.

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

  4. Associez le certificat à l'utilisateur créé à l'étape 2.

    L'exemple suivant associe le certificat de HOST_B avec son utilisateur sur HOST_A.

    USE master;  
    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    

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

    Pour afficher les certificats sur cette instance du serveur, vous pouvez utiliser l’instruction Transact-SQL suivante :

    SELECT * FROM sys.certificates  
    

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

  5. Accordez l'autorisation CONNECT à la connexion pour le point de terminaison de mise en miroir distant.

    Par exemple, pour accorder l’autorisation sur HOST_A à l’instance du serveur distant sur HOST_B afin qu’elle puisse se connecter à sa connexion locale, c’est-à-dire à HOST_B_login, utilisez les instructions Transact-SQL suivantes :

    USE master;  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];  
    GO  
    

    Pour plus d’informations, consultez Autorisations de point de terminaison GRANT (Transact-SQL).

Cette dernière étape conclut la configuration de l'authentification par certificat de HOST_B lors de sa connexion à HOST_A.

Il vous faut maintenant procéder de même pour les communications entrantes pour HOST_A sur HOST_B Ces étapes sont expliquées dans la partie consacrée aux connexions entrantes de l'exemple présenté dans la section Exemple ci-dessous.

Exemple

L'exemple suivant explique comment configurer HOST_B pour les connexions entrantes.

Notes

Cet exemple utilise un fichier de certificat contenant le certificat HOST_A qui est créé par un extrait de code dans Autoriser un point de terminaison de mise en miroir de bases de données à utiliser des certificats pour les connexions sortantes (Transact-SQL).

USE master;  
--On HOST_B, create a login for HOST_A.  
CREATE LOGIN HOST_A_login WITH PASSWORD = 'AStrongPassword!@#';  
GO  
--Create a user, HOST_A_user, for that login.  
CREATE USER HOST_A_user FOR LOGIN HOST_A_login  
GO  
--Obtain HOST_A certificate. (See the note   
--   preceding this example.)  
--Asscociate this certificate with the user, HOST_A_user.  
CREATE CERTIFICATE HOST_A_cert  
   AUTHORIZATION HOST_A_user  
   FROM FILE = 'C:\HOST_A_cert.cer';  
GO  
--Grant CONNECT permission for the server instance on HOST_A.  
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_A_login  
GO  

Si vous envisagez d'utiliser le mode haute sécurité avec basculement automatique, vous devez répéter les mêmes étapes pour configurer le témoin pour les connexions sortantes et entrantes.

Pour plus d’informations sur la création d’une base de données miroir, et obtenir un exemple Transact-SQL, consultez Préparer une base de données miroir pour la mise en miroir (SQL Server).

Pour obtenir 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é du .NET Framework

Lors de la copie d'un certificat sur un autre système, utilisez une méthode de copie sécurisée. Veillez particulièrement à sécuriser tous vos certificats.

Voir aussi

Sécurité du transport de la mise en miroir de bases de données et des groupes de disponibilité Always On (SQL Server)
GRANT – octroi d'autorisations de point de terminaison (Transact-SQL)
Configurer une base de données miroir chiffrée
Point de terminaison de mise en miroir de bases de données (SQL Server)
Résoudre les problèmes de configuration de mise en miroir de bases de données (SQL Server)