Autoriser un point de terminaison de mise en miroir de bases de données à utiliser des certificats pour les connexions entrantes (Transact-SQL)

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éation d'un utilisateur pour cette connexion

  3. Obtention du certificat pour le point de terminaison de mise en miroir 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. Il vous faut définir les connexions, les utilisateurs et les certificats pour le serveur témoin sur les deux serveurs 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 existant pour 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 existant pour 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 le point de terminaison de mise en miroir 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 cela, sauvegardez le certificat sur cette instance de serveur conformément aux instructions de 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 avec la plus grande rigueur à préserver la sécurité de 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 existant pour 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 GRANT – octroi d'autorisations de point de terminaison (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.

[!REMARQUE]

Cet exemple utilise un fichier de certificat contenant le certificat de HOST_A qui a été créé par un extrait de code de 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 des informations sur la création d'une base de données miroir, incluant un exemple Transact-SQL, consultez Préparer une base de données miroir pour la mise en miroir (SQL Server).

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é

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

Référence

GRANT – octroi d'autorisations de point de terminaison (Transact-SQL)

Concepts

Sécurité du transport de la mise en miroir de bases de données et des groupes de disponibilité AlwaysOn (SQL Server)

Configurer une base de données miroir chiffrée

Point de terminaison de mise en miroir de bases de données (SQL Server)

Résolution des problèmes de configuration de mise en miroir de bases de données (SQL Server)