Esempio: Configurazione del mirroring del database tramite certificati (Transact-SQL)
Si applica a: SQL Server
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. Gli esempi in questo argomento usano Transact-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 con i certificati è costituita da quattro fasi generali. Le fasi 1, 2 e 4 vengono illustrate in questo esempio. Le fasi sono le seguenti:
Configurazione delle connessioni in uscita
Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:
Configurazione di Host_A per le connessioni in uscita.
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'uso di certificati per le connessioni in uscita (Transact-SQL).
Configurazione delle connessioni in ingresso
Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:
Configurazione di Host_A per le connessioni in ingresso.
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'uso di certificati per le connessioni in ingresso (Transact-SQL).
Creazione del database mirror
Per informazioni su come creare un database mirror, vedere Preparazione di un database mirror per il mirroring (SQL Server).
Configurazione delle connessioni in uscita
Per configurare Host_A per le connessioni in uscita
Nel database master creare la chiave master del database, se necessaria.
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>'; GO
Creare un certificato per questa istanza del server.
USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate'; GO
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
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
Utilizzando un metodo di copia sicuro, copiare C:\HOST_A_cert.cer in HOST_B.
Per configurare Host_B per le connessioni in uscita
Nel database master creare la chiave master del database, se necessaria.
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>'; GO
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
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
Eseguire il backup del certificato di HOST_B.
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer'; GO
Utilizzando un metodo di copia sicuro, copiare C:\HOST_B_cert.cer in HOST_A.
Per altre informazioni, vedere Impostare l'endpoint del mirroring del database per l'uso di certificati per le connessioni in uscita (Transact-SQL).
Configurazione delle connessioni in ingresso
Per configurare Host_A per le connessioni in ingresso
In HOST_A creare un account di accesso per HOST_B.
USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#'; GO
--Creare un utente per tale account di accesso.
CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO
--Associare il certificato all'utente.
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO
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
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
Creare un utente per tale account di accesso.
CREATE USER HOST_A_user FOR LOGIN HOST_A_login; GO
Associare il certificato all'utente.
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\HOST_A_cert.cer' GO
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).
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
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
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
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 transaction 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.
Attività correlate
Preparazione di un database mirror per il mirroring (SQL Server)
Gestione di account di accesso e di processi dopo un cambio di ruolo (SQL Server)
Gestire i metadati quando si rende disponibile un database in un'altra istanza del server (SQL Server) (SQL Server)
Risolvere i problemi relativi alla configurazione del mirroring del database (SQL Server)
Vedi anche
Sicurezza trasporto per il mirroring del database e i gruppi di disponibilità Always On (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 sicurezza per il motore di Database di SQL Server e il Database SQL di Azure