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

Todas as conexões de espelhamento em uma instância do servidor usam um único ponto de extremidade de espelhamento do banco de dados e você deve especificar o método de autenticação da instância do servidor quando 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 do servidor que usa seu certificado.

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

Você deve completar essas etapas para cada parceiro e para a testemunha, se houver.

O procedimento a seguir descreve em detalhes essas etapas. Para cada etapa, 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 as mesmas etapas para uma outra instância do servidor em um sistema chamado de HOST_B.

Procedimento

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) e Como criar uma chave mestra de banco de dados.

  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.

    Observação importanteImportante

    Se você pretender usar o certificado durante mais de um ano, especifique a data de expiração em hora UTC usando a opção de EXPIRY_DATE em sua instrução CREATE CERTIFICATE. Além disso, nós recomendamos que você use o SQL Server Management Studio para criar uma regra do Gerenciamento Baseado em Políticas para alertá-lo quando seus certificados estiverem expirando. Usando a caixa de diálogo Criar Nova Condição do Gerenciamento de Política, crie esta regra no campo @ExpirationDate da faceta Certificado. Para obter mais informações, consulte Administrando servidores com Gerenciamento Baseado em Políticas, Tutorial: Administrando servidores com o uso do Gerenciamento Baseado em Diretivas e Protegendo o SQL Server.

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate for database mirroring', 
       EXPIRY_DATE = '11/30/2013';
    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', 
   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.

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 sobre como criar um banco de dados espelho, incluindo um exemplo de Transact-SQL, consulte 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, consulte Exemplo: Configurando espelhamento de banco de dados usando certificados (Transact-SQL).

Segurança

A menos que seja possível garantir que sua rede está segura, recomendamos usar criptografia para conexões de espelhamento de banco de dados.

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

Histórico de alterações

Conteúdo atualizado

Adicionada uma observação sobre o uso da opção EXPIRY_DATE em instruções CREATE CERTIFICATE, e atualizados os exemplos de código com essa opção.