Procedura: Impostazione del mirroring del database per l'utilizzo di certificati per le connessioni in uscita (Transact-SQL)

In questo argomento vengono illustrati i passaggi per la configurazione delle istanze del server per l'utilizzo di certificati per l'autenticazione delle connessioni in uscita per il mirroring del database. Prima di impostare le connessioni in ingresso, è necessario configurare quelle in uscita.

Nota

In tutte le connessioni per il mirroring in un'istanza del server viene utilizzato un unico endpoint del mirroring del database e al momento della creazione dell'endpoint è necessario specificare il metodo di autenticazione dell'istanza del server.

Il processo di configurazione delle connessioni in uscita comprende i passaggi generali seguenti:

  1. Nel database master creare una chiave master del database.

  2. Nel database master creare un certificato crittografato nell'istanza del server.

  3. Creare un endpoint per l'istanza del server utilizzando il relativo certificato.

  4. Eseguire il backup del certificato in un file e copiarlo nell'altro sistema o negli altri sistemi.

È necessario completare questi passaggi per ogni partner e, se presente, per il server di controllo del mirroring.

Nella procedura seguente vengono descritti in modo dettagliato questi passaggi. Per ogni passaggio viene illustrato un esempio per la configurazione di un'istanza del server in un sistema denominato HOST_A. Nella sezione Esempio vengono illustrati gli stessi passaggi per un'altra istanza del server in un sistema denominato HOST_B.

Procedura

Per configurare le istanze del server per le connessioni per il mirroring in uscita (On HOST_A)

  1. Nel database master creare la chiave master del database, se non è già presente. Per visualizzare le chiavi esistenti per un database, utilizzare la vista del catalogo sys.symmetric_keys.

    Per creare la chiave master del database, utilizzare il comando Transact-SQL seguente:

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

    Utilizzare una password complessa univoca e archiviarla in una posizione sicura.

    Per ulteriori informazioni, vedere CREATE MASTER KEY (Transact-SQL) e Procedura: Creazione della chiave master di un database.

  2. Nel database master creare un certificato crittografato nell'istanza del server da utilizzare per le connessioni in uscita per il mirroring del database.

    Per creare, ad esempio, un certificato per il sistema HOST_A:

    Nota importanteImportante

    Se si intende usare il certificato per più di un anno, specificare la data di scadenza nel formato ora UTC utilizzando l'opzione EXPIRY_DATE nell'istruzione CREATE CERTIFICATE. Inoltre, si raccomanda di utilizzare SQL Server Management Studio per creare una regola di gestione basata su criteri per ricevere l'avviso di scadenza dei certificati. Usando la finestra di dialogo Crea nuova condizione di Gestione criteri, creare questa regola nel campo @ExpirationDate del facet Certificato. Per ulteriori informazioni, vedere Amministrazione di server tramite la gestione basata su criteri, Esercitazione: Amministrazione di server tramite la gestione basata su criteri e Sicurezza di SQL Server.

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

    Per ulteriori informazioni, vedere CREATE CERTIFICATE (Transact-SQL).

    Per visualizzare i certificati nel database master, utilizzare le istruzioni Transact-SQL seguenti:

    USE master;
    SELECT * FROM sys.certificates;
    

    Per ulteriori informazioni, vedere sys.certificates (Transact-SQL).

  3. Verificare che in ognuna delle istanze del server sia presente l'endpoint del mirroring del database.

    Se per l'istanza del server è già presente un endpoint del mirroring del database, riutilizzare tale endpoint per tutte le altre sessioni avviate nella stessa istanza. Per determinare se in un'istanza del server è presente un endpoint del mirroring del database e per visualizzarne la configurazione, utilizzare l'istruzione seguente:

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

    Se non sono presenti endpoint, creare un endpoint che utilizzi questo certificato per le connessioni in uscita e che utilizzi le credenziali del certificato per la verifica nell'altro sistema. Si tratta di un endpoint valido per l'intero server, utilizzato da tutte le sessioni di mirroring a cui partecipa l'istanza del server.

    Per creare, ad esempio, un endpoint del mirroring per l'istanza del server di esempio in 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
    

    Per ulteriori informazioni, vedere CREATE ENDPOINT (Transact-SQL).

  4. Eseguire il backup del certificarlo e copiarlo nell'altro o negli altri sistemi. Si tratta di un'operazione necessaria per configurare le connessioni in ingresso nell'altro sistema.

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

    Per ulteriori informazioni, vedere BACKUP CERTIFICATE (Transact-SQL).

    Copiare questo certificato utilizzando un metodo che ne garantisca la protezione. Fare molta attenzione a garantire la protezione dei certificati.

Tramite il codice di esempio del passaggio precedente vengono configurate le connessioni in uscita in HOST_A.

A questo punto, è necessario eseguire i passaggi equivalenti per la configurazione delle connessioni in uscita per HOST_B. Questi passaggi sono illustrati nella sezione Esempio seguente.

Esempio

Nell'esempio seguente viene illustrata la configurazione di HOST_B per le connessioni in uscita.

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.

Copiare il certificato nell'altro sistema utilizzando un metodo che ne garantisca la protezione. Fare molta attenzione a garantire la protezione dei certificati.

Nota importanteImportante

Dopo avere configurato le connessioni in uscita, è necessario configurare quelle in ingresso in ogni istanza del server per l'altra o le altre istanze. Per ulteriori informazioni, vedere Procedura: Impostazione dell'utilizzo di certificati per le connessioni in entrata del mirroring del database (Transact-SQL).

Per informazioni sulla creazione di un database mirror, con un esempio Transact-SQL, vedere Procedura: Preparazione di un database mirror per il mirroring (Transact-SQL).

Per un esempio Transact-SQL in cui viene stabilita una sessione in modalità a prestazioni elevate, vedere Esempio: Impostazione del mirroring del database tramite certificati (Transact-SQL).

Protezione

A meno che non si sia assolutamente certi della sicurezza della rete, per le connessioni per il mirroring del database è consigliabile utilizzare la crittografia.

Quando si copia un certificato in un altro sistema, utilizzare un metodo di copia che garantisca la protezione.

Cronologia modifiche

Contenuto aggiornato

Aggiunta di una nota relativa all'utilizzo dell'opzione EXPIRY_DATE nelle istruzioni CREATE CERTIFICATE e aggiornamento degli esempi di codice con tale opzione.