Esempio: Impostazione del mirroring del database tramite certificati (Transact-SQL)

In questo esempio vengono illustrati tutti i passaggi necessari per la creazione di una sessione di mirroring del database tramite l'autenticazione basata sui certificati. Negli esempi di questo argomento viene utilizzato Transact-SQLTransact-SQL. A meno che la sicurezza della rete in uso non sia già garantita, è consigliabile utilizzare la crittografia per le connessioni per il mirroring del database.

Quando si copia un certificato in un altro sistema, utilizzare un metodo di copia sicuro. È estremamente importante garantire la protezione di tutti i certificati.

Esempio

Nell'esempio seguente vengono descritte le operazioni necessarie in un partner che risiede in HOST_A. Nell'esempio i due partner sono le istanze predefinite del server in tre sistemi. Le due istanze server vengono eseguite in domini Windows non trusted, quindi è necessaria l'autenticazione basata sui certificati.

Il ruolo principale viene inizialmente assunto da HOST_A e il ruolo di server mirror da HOST_B.

La configurazione del mirroring del database eseguita tramite certificati è costituita da quattro fasi generali. Le fasi 1, 2 e 4 vengono illustrate in questo esempio. Le fasi sono le seguenti:

  1. Configurazione delle connessioni in uscita

    Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:

    1. Configurazione di Host_A per le connessioni in uscita.

    2. Configurazione di Host_B per le connessioni in uscita.

      Per informazioni su questa fase di configurazione del mirroring del database, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in uscita (Transact-SQL).

  2. Configurazione delle connessioni in ingresso

    Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:

    1. Configurazione di Host_A per le connessioni in ingresso.

    2. Configurazione di Host_B per le connessioni in ingresso.

      Per informazioni su questa fase di configurazione del mirroring del database, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in ingresso (Transact-SQL).

  3. Creazione del database mirror

    Per informazioni su come creare un database mirror, vedere Preparazione di un database mirror per il mirroring (SQL Server).

  4. Configurazione dei partner del mirroring

Configurazione delle connessioni in uscita

Per configurare Host_A per le connessioni in uscita

  1. Nel database master creare la chiave master del database, se necessaria.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';  
    GO  
    
  2. Creare un certificato per questa istanza del server.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate';  
    GO  
    
  3. Creare un endpoint del mirroring per l'istanza del server che utilizza il certificato.

    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. Eseguire il backup del certificato di HOST_A e copiarlo nell'altro sistema, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. Utilizzando un metodo di copia sicuro, copiare C:\HOST_A_cert.cer in HOST_B.

    Per configurare Host_B per le connessioni in uscita

  6. Nel database master creare la chiave master del database, se necessaria.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
    GO  
    
  7. Creare un certificato per l'istanza del server in HOST_B.

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  8. Creare un endpoint del mirroring per l'istanza del server in 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  
    
  9. Eseguire il backup del certificato di HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  10. Utilizzando un metodo di copia sicuro, copiare C:\HOST_B_cert.cer in HOST_A.

    Per altre informazioni, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in uscita (Transact-SQL).

    [Inizio dell'esempio ]

Configurazione delle connessioni in ingresso

Per configurare Host_A per le connessioni in ingresso

  1. In HOST_A creare un account di accesso per HOST_B.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';  
    GO  
    
  2. --Creare un utente per tale account di accesso.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. --Associare il certificato all'utente.

    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    
  4. Concedere l'autorizzazione CONNECT per l'account di accesso per l'endpoint del mirroring remoto.

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

    Per configurare Host_B per le connessioni in ingresso

  5. In HOST_B creare un account di accesso per HOST_A.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  6. Creare un utente per tale account di accesso.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  7. Associare il certificato all'utente.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  8. Concedere l'autorizzazione CONNECT per l'account di accesso per l'endpoint del mirroring remoto.

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

Se si prevede di utilizzare la modalità a sicurezza elevata con failover automatico, è necessario ripetere gli stessi passaggi di impostazione per configurare il server di controllo del mirroring per connessioni in uscita e in ingresso. Per configurare le connessioni in ingresso per un server di controllo del mirroring è necessario impostare account di accesso e utenti per il server di controllo del mirroring in entrambi i partner e per entrambi i partner nel server di controllo del mirroring.

Per altre informazioni, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in ingresso (Transact-SQL).

[Inizio dell'esempio ]

Creazione del database mirror

Per informazioni su come creare un database mirror, vedere Preparazione di un database mirror per il mirroring (SQL Server).

Configurazione dei partner del mirroring

  1. Nell'istanza del server mirror in HOST_B, impostare l'istanza del server in HOST_A come partner (rendendola l'istanza iniziale del server principale). Specificare un indirizzo di rete valido per TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024. Per altre informazioni, vedere Specificare un indirizzo di rete del server (Mirroring del database).

    --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. Nell'istanza del server principale in HOST_A, impostare l'istanza del server in HOST_B come partner (rendendola l'istanza iniziale del server mirror). Specificare un indirizzo di rete valido per 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. In questo esempio si presuppone che la sessione verrà eseguita nella modalità a prestazioni elevate. Per configurare la sessione per la modalità a prestazioni elevate, nell'istanza del server principale (in HOST_A), impostare la protezione delle transazioni su OFF.

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

    Se si prevede di usare la modalità a sicurezza elevata con failover automatico, lasciare la sicurezza delle transazioni impostata su FULL (impostazione predefinita) e aggiungere il server di controllo del mirroring non appena possibile dopo l'esecuzione della seconda istruzione SET PARTNER 'partner_server'. Si osservi che è necessario configurare prima il server di controllo del mirroring per le connessioni in uscita e in ingresso.

    [Inizio dell'esempio ]

Attività correlate

Vedere anche

Sicurezza trasporto per il mirroring del database e i gruppi di disponibilità AlwaysOn (SQL Server)
Specificare un indirizzo di rete del server (Mirroring del database)
Endpoint del mirroring del database (SQL Server)
Utilizzare certificati per un endpoint del mirroring del database (Transact-SQL)
ALTER DATABASE (Transact-SQL)
Centro di sicurezza per il motore di database di SQL Server e il database SQL di Azure