Exemple : configuration de la mise en miroir de bases de données à l'aide de certificats (Transact-SQL)

Cet exemple décrit toutes les étapes de création d'une session de mise en miroir de bases de données à l'aide de l'authentification basée sur les certificats. Les exemples de cette rubrique utilisent Transact-SQL. Si vous ne pouvez pas garantir la sécurité de votre réseau, il est recommandé d'utiliser le chiffrement pour les connexions de mise en miroir de base de données.

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.

Exemple

L'exemple suivant illustre ce qui doit être fait sur un serveur partenaire qui réside sur HOST_A. Dans cet exemple, les deux serveurs partenaires sont les instances de serveur par défaut réparties sur trois systèmes informatiques. Les deux instances de serveur sont exécutées dans des domaines Windows non approuvés, par conséquent l'authentification basée sur les certificats est nécessaire.

Le rôle principal initial est occupé par HOST_A, et le rôle miroir par HOST_B.

La configuration de la mise en miroir de bases de données à l'aide de certificats implique quatre étapes générales, dont les première, deuxième et quatrième sont illustrées par cet exemple. Ces étapes sont les suivantes :

  1. Configuration des connexions sortantes

    Cet exemple montre les étapes nécessaires à la :

    1. configuration d'Host_A pour les connexions sortantes ;

    2. configuration d'Host_B pour les connexions sortantes.

    Pour plus d'informations sur cette étape de la configuration de la mise en miroir de bases de données, consultez Autoriser un point de terminaison de mise en miroir de bases de données à utiliser des certificats pour les connexions sortantes (Transact-SQL).

  2. Configuration des connexions entrantes

    Cet exemple montre les étapes nécessaires à la :

    1. configuration d'Host_A pour les connexions entrantes ;

    2. configuration d'Host_B pour les connexions entrantes.

    Pour plus d'informations sur cette étape de la configuration de la mise en miroir de bases de données, consultez Autoriser un point de terminaison de mise en miroir de bases de données à utiliser des certificats pour les connexions entrantes (Transact-SQL).

  3. Création de la base de données miroir

    Pour obtenir des informations sur la création d'une base de données miroir, consultez Préparer une base de données miroir pour la mise en miroir (SQL Server).

  4. Configuration des serveurs partenaires de mise en miroir

Configuration des connexions sortantes

Pour configurer Host_A pour les connexions sortantes

  1. Dans la base de données master, créez la clé principale de base de données, si nécessaire.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';
    GO
    
  2. Activez un certificat pour cette instance de serveur.

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate';
    GO
    
  3. Créez un point de terminaison de mise en miroir pour l'instance de serveur à l'aide du certificat.

    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
    
  4. Sauvegardez le certificat HOST_A, et copiez-le sur l'autre système, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';
    GO
    
  5. Au moyen d'une méthode sécurisée de copie quelconque, copiez C:\HOST_A_cert.cer sur HOST_B.

Pour configurer Host_B pour les connexions sortantes

  1. Dans la base de données master, créez la clé principale de base de données, si nécessaire.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';
    GO
    
  2. Activez un certificat sur l'instance de serveur HOST_B.

    CREATE CERTIFICATE HOST_B_cert 
       WITH SUBJECT = 'HOST_B certificate for database mirroring';
    GO
    
  3. Créez un point de terminaison de mise en miroir pour l'instance de serveur sur 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
    
  4. Sauvegardez le certificat HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
    GO 
    
  5. Au moyen d'une méthode sécurisée de copie quelconque, copiez C:\HOST_B_cert.cer sur HOST_A.

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).

[Début de l'exemple]

Configuration des connexions entrantes

Pour configurer Host_A pour les connexions entrantes

  1. Créez une connexion sur HOST_A pour HOST_B.

    USE master;
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';
    GO
    
  2. --Créez un utilisateur pour cette connexion.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
    GO
    
  3. --Associez le certificat à l'utilisateur.

    CREATE CERTIFICATE HOST_B_cert
       AUTHORIZATION HOST_B_user
       FROM FILE = 'C:\HOST_B_cert.cer'
    GO
    
  4. Accordez l'autorisation CONNECT à la connexion pour le point de terminaison de mise en miroir distant.

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

Pour configurer Host_B pour les connexions entrantes

  1. Créez une connexion sur HOST_B pour HOST_A.

    USE master;
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';
    GO
    
  2. Créez un utilisateur pour cette connexion.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
    GO
    
  3. Associez le certificat à l'utilisateur.

    CREATE CERTIFICATE HOST_A_cert
       AUTHORIZATION HOST_A_user
       FROM FILE = 'C:\HOST_A_cert.cer'
    GO
    
  4. Accordez l'autorisation CONNECT à la connexion pour le point de terminaison de mise en miroir distant.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    GO
    

Important

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. La configuration des connexions entrantes lorsqu'un serveur témoin est impliqué suppose de configurer les connexions et les utilisateurs du serveur témoin sur les deux serveurs partenaires, ainsi que les connexions et les utilisateurs des deux serveurs partenaires sur le serveur témoin.

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 entrantes (Transact-SQL).

[Début de l'exemple]

Création de la base de données miroir

Pour obtenir des informations sur la création d'une base de données miroir, consultez Préparer une base de données miroir pour la mise en miroir (SQL Server).

Configuration des serveurs partenaires de mise en miroir

  1. Sur l'instance de serveur miroir de HOST_B, définissez l'instance de serveur de HOST_A en tant que serveur partenaire (en faisant d'elle l'instance initiale de serveur principal). Remplacez une adresse réseau valide par TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024. Pour plus d'informations, consultez Spécifier une adresse réseau de serveur (mise en miroir de bases de données).

    --At HOST_B, set server instance on HOST_A as partner (principal server):
    ALTER DATABASE AdventureWorks 
        SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';
    GO
    
  2. Sur l'instance de serveur principal de HOST_A, définissez l'instance de serveur de HOST_B en tant que serveur partenaire (en faisant d'elle l'instance initiale de serveur miroir). Remplacez une adresse réseau valide par TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024.

    --At HOST_A, set server instance on HOST_B as partner (mirror server).
    ALTER DATABASE AdventureWorks 
        SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';
    GO
    
  3. Cet exemple suppose que la session est exécutée en mode hautes performances. Pour configurer cette session au mode hautes performances, sur l'instance de serveur principal (sur HOST_A), désactivez la sécurité des transactions.

    --Change to high-performance mode by turning off transacton safety.
    ALTER DATABASE AdventureWorks 
        SET PARTNER SAFETY OFF
    GO
    

    [!REMARQUE]

    Si vous envisagez d'utiliser le mode haute sécurité avec basculement automatique, laissez la sécurité des transactions définie sur FULL (valeur par défaut) et ajoutez dès que possible le témoin après l'exécution de la deuxième instruction SET PARTNER 'partner_server'. Notez que le serveur témoin doit d'abord être configuré pour les connexions sortantes et entrantes.

[Début de l'exemple]

Tâches associées

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Voir aussi

Référence

ALTER DATABASE (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)

Spécifier une adresse réseau de serveur (mise en miroir de bases de données)

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

Utiliser des certificats pour un point de terminaison de mise en miroir de bases de données (Transact-SQL)

Sécurité et protection (moteur de base de données)