Mirroring del database: utilizzo di certificati per le connessioni in entrata

Si applica a:SQL Server

In questo argomento viene illustrata la procedura per configurare le istanze del server in modo da utilizzare i certificati per l'autenticazione delle connessioni in ingresso per il mirroring del database. Prima di impostare le connessioni in entrata, è necessario configurare le connessioni in uscita in ogni istanza del server. Per altre informazioni, vedere Impostare l'endpoint del mirroring del database per l'uso di certificati per le connessioni in uscita (Transact-SQL).

Il processo di configurazione delle connessioni in entrata include i passaggi generali seguenti:

  1. Creare un account di accesso per l'altro sistema.

  2. Creare un utente per tale account di accesso.

  3. Ottenere il certificato per l'endpoint del mirroring dell'altra istanza del server.

  4. Associare il certificato all'utente creato nel passaggio 2.

  5. Concedere l'autorizzazione CONNECT all'account di accesso per l'endpoint del mirroring.

Se è disponibile un server di controllo del mirroring, è necessario configurare le connessioni in ingresso anche per tale server. Questa operazione prevede la configurazione di account di accesso, utenti e certificati per il server di controllo del mirroring in entrambi i partner, e viceversa.

Questa procedura descrive i vari passaggi, Per ogni passaggio la procedura fornisce un esempio di configurazione di un istanza di server in un sistema denominato HOST_A. Nella sezione di esempio corrispondente vengono indicati gli stessi passaggi per un'altra istanza di server in un sistema denominato HOST_B.

Per configurare le istanze del server per le connessioni per il mirroring in ingresso (on HOST_A)

  1. Creare un account di accesso per l'altro sistema.

    Nell'esempio seguente viene creato un account di accesso per il sistema, HOST_B, nel database master dell'istanza del server in HOST_A. Tale account di accesso è denominato HOST_B_login. Sostituire la password di esempio con una password personalizzata.

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

    Per altre informazioni, vedere CREATE LOGIN (Transact-SQL).

    Per visualizzare gli account di accesso in questa istanza del server, è possibile usare l'istruzione Transact-SQL seguente:

    SELECT * FROM sys.server_principals  
    

    Per altre informazioni, vedere sys.server_principals (Transact-SQL).

  2. Creare un utente per tale account di accesso.

    Nell'esempio seguente viene creato l'utente HOST_B_user per l'account di accesso creato nel passaggio precedente.

    USE master;  
    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    

    Per altre informazioni, vedere CREATE USER (Transact-SQL).

    Per visualizzare gli utenti in questa istanza del server, è possibile usare l'istruzione Transact-SQL seguente:

    SELECT * FROM sys.sysusers;  
    

    Per altre informazioni, vedere sys.sysusers (Transact-SQL).

  3. Ottenere il certificato per l'endpoint del mirroring dell'altra istanza del server.

    Se questa operazione non è già stata eseguita durante la configurazione delle connessioni in uscita, ottenere una copia del certificato per l'endpoint del mirroring dell'istanza del server remoto. A tale scopo, eseguire il backup del certificato in tale istanza del server, come illustrato in Impostare l'endpoint del mirroring del database per l'uso di certificati per le connessioni in uscita (Transact-SQL). Quando si copia un certificato in un altro sistema, utilizzare un metodo di copia sicuro. È estremamente importante garantire la protezione di tutti i certificati.

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

  4. Associare il certificato all'utente creato nel passaggio 2.

    Nell'esempio seguente, il certificato di HOST_B viene associato al relativo utente in HOST_A.

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

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

    Per visualizzare i certificati in questa istanza del server, usare l'istruzione Transact-SQL seguente:

    SELECT * FROM sys.certificates  
    

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

  5. Concedere l'autorizzazione CONNECT per l'account di accesso per l'endpoint del mirroring remoto.

    Per concedere l'autorizzazione in HOST_A all'istanza del server remoto in HOST_B per la connessione al relativo account di accesso locale HOST_B_login, ad esempio, usare le istruzioni Transact-SQL seguenti:

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

    Per altre informazioni, vedere GRANT - Autorizzazioni per endpoint (Transact-SQL).

A questo punto, è stata completata la configurazione dell'autenticazione tramite un certificato per la connessione di HOST_B a HOST_A.

È ora necessario eseguire i rispettivi passaggi in ingresso per HOST_A in HOST_B. Tali passaggi sono illustrati nella parte relativa alle connessioni in ingresso della sezione di esempio riportata più avanti.

Esempio

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

Nota

L'esempio usa un file di certificato contenente il certificato di HOST_A creato da un frammento di codice in Impostare l'endpoint del mirroring del database per l'uso di certificati per le connessioni in uscita (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  

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 informazioni sulla creazione di un database mirror e un esempio di Transact-SQL, vedere Preparazione di un database mirror per il mirroring (SQL Server).

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

Sicurezza di .NET Framework

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

Vedi anche

Sicurezza trasporto per il mirroring del database e i gruppi di disponibilità Always On (SQL Server)
GRANT - autorizzazioni per endpoint (Transact-SQL)
Impostazione di un database mirror crittografato
Endpoint del mirroring del database (SQL Server)
Risolvere i problemi relativi alla configurazione del mirroring del database (SQL Server)