Compartilhar via


Como permitir que o espelhamento de banco de dados use certificados para conexões de saída (Transact-SQL)

Este tópico descreve os passos para configurar instâncias de servidor para usar certificados para autenticar conexões de saída para espelhamento de banco de dados. A configuração de conexão de saída deve ser feita antes que você possa configurar conexões de entrada.

ObservaçãoObservação

Todo o espelhamento de conexões em um uso de instância de servidor usa um único ponto de extremidade de espelhamento de banco de dados e você deve especificar o método de autenticação da instância de servidor quando você criar o ponto de extremidade.

O processo de configurar conexões de saída, envolve os seguintes passos gerais:

  1. No banco de dados mestre, crie um banco de dados chave mestre.

  2. No banco de dados mestre, crie um certificado criptografado na instância de servidor.

  3. Crie um ponto de extremidade para a instância de servidor que usa seu certificado.

  4. Faça o backup do certificado a um arquivo e o copie com segurança ao outro sistema ou sistemas.

Você deve completar estes passos para cada parceiro e a testemunha, se houver um.

O procedimento seguinte descreve estes passos em detalhe. Para cada passo, o processo fornece um exemplo para configurar a instância do servidor em um sistema chamado de HOST_A. A seção de exemplo mostra os mesmos passos para uma outra instância do servidor em um sistema chamado de HOST_B.

Procedimentos

Para configurar as instâncias de servidor para espelhamento de conexões de saída (No HOST_A)

  1. No banco de dados mestre, crie o banco de dados chave mestre, se nenhum existir. Para exibir as chaves existentes para um banco de dados, use a exibição do catálogo sys.symmetric_keys.

    Para criar o banco de dados chave mestre , use o seguinte comando Transact-SQL:

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

    Use uma senha exclusiva, forte e a registre em um lugar seguro.

    Para obter mais informações, consulte CREATE MASTER KEY (Transact-SQL).

  2. No banco de dados mestre, crie um certificado criptografado na instância de servidor usar para suas conexões de saída para espelhamento de banco de dados.

    Por exemplo, para criar um certificado para o sistema HOST_A.

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate for database mirroring';
    GO
    

    Para obter mais informações, consulte CREATE CERTIFICATE (Transact-SQL).

    Para exibir os certificados no banco de dados mestre, você pode usar as instruções Transact-SQL seguintes:

    USE master;
    SELECT * FROM sys.certificates;
    

    Para obter mais informações, consulte sys.certificates (Transact-SQL).

  3. Assegure que o ponto de extremidade do espelhamento de banco de dados exista em cada uma das instâncias de servidor.

    Se um ponto de extremidade do espelhamento de banco de dados já existir para a instância de servidor, você deveria usar de novo aquele ponto de extremidade para qualquer outra sessão que você estabeleça na instância de servidor. Para determinar se um ponto de extremidade do espelhamento de banco de dados existe em uma instância de servidor e exibir sua configuração, use a instrução seguinte:

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

    Se nenhum ponto de extremidade existir, crie um ponto de extremidade que usa este certificado para conexões de saída e que usa as credenciais do certificado para verificação no outro sistema. Este é um ponto de extremidade em todo servidor que é usado por todas as sessões de espelhamento nas quais a instância de servidor participa.

    Por exemplo, para criar um espelhamento de ponto de extremidade para a instância de servidor de exemplo em 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
    

    Para obter mais informações, consulte CREATE ENDPOINT (Transact-SQL).

  4. Faça o backup do certificado e o copie ao outro sistema ou sistemas. Isto é necessário para configurar as conexões de entrada no outro sistema.

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

    Para obter mais informações, consulte BACKUP CERTIFICATE (Transact-SQL).

    Copie este certificado usando qualquer método seguro de sua escolha. Seja extremamente cauteloso para manter todos os seus certificados em segurança.

O código de exemplo nos passos precedentes configura conexões de saída no HOST_A.

Você precisa realizar os passos de saída equivalentes para o HOST_B. Esses passos estão ilustrados na seguinte seção de exemplo.

Exemplo

O exemplo seguinte demonstra como configurar o HOST_B para conexões de saída.

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';
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.

Copie o certificado ao outro sistema usando qualquer método seguro de sua escolha. Seja extremamente cauteloso para manter todos os seus certificados em segurança.

Observação importanteImportante

Depois que você tiver configurado as conexões de saída, você deve configurar as conexões de entrada em cada instância de servidor para a outra instância ou instâncias de servidor. Para obter mais informações, consulte Como permitir que o espelhamento de banco de dados use certificados para conexões de entrada (Transact-SQL).

Para obter informações em como criar um banco de dados espelho, incluindo um exemplo de Transact-SQL, veja Como preparar um banco de dados espelho para o espelhamento (Transact-SQL).

Para obter um exemplo de Transact-SQL para estabelecer uma sessão de modo de alto desempenho, veja Exemplo: Configurando espelhamento de banco de dados usando certificados (Transact-SQL).

Segurança

A menos que você possa garantir que sua rede está segura, nós recomendamos que você use criptografia para conexões de espelhamento de banco de dados.

Ao copiar um certificado a outro sistema, use um método de cópia seguro.