Espelhamento de Base de Dados - Utilizar Certificados para Ligações Entrantes

Aplica-se a: SQL Server

Este tópico descreve os passos para configurar instâncias de servidor para usarem certificados para autenticar ligações de entrada para espelhamento de bases de dados. Antes de poderes configurar ligações de entrada, deves configurar as ligações de saída em cada instância de servidor. Para obter mais informações, consulte Permitir que um endpoint de espelhamento de base de dados utilize certificados para ligações de saída (Transact-SQL).

O processo de configuração das ligações de entrada envolve os seguintes passos gerais:

  1. Crie um login para outro sistema.

  2. Crie um utilizador para esse login.

  3. Obtenha o certificado para o endpoint de espelhamento da outra instância do servidor.

  4. Associe o certificado ao utilizador criado no passo 2.

  5. Conceda permissão CONNECT no login desse endpoint espelhado.

Se houver uma testemunha, também deve estabelecer ligações de entrada para ela. Isto requer configurar logins, utilizadores e certificados para a testemunha em ambos os parceiros, e vice-versa.

O procedimento seguinte descreve estes passos em detalhe. Para cada etapa, o procedimento fornece um exemplo para configurar uma instância de servidor num sistema chamado HOST_A. A secção de Exemplo que acompanha demonstra os mesmos passos para outra instância de servidor num sistema chamado HOST_B.

Para configurar instâncias de servidor para conexões de espelhamento de entrada (em HOST_A)

  1. Crie um login para o outro sistema.

    O exemplo seguinte cria um login para o sistema, HOST_B, na base de dados mestre da instância do servidor em HOST_A; Neste exemplo, o login é nomeado HOST_B_login. Substitua <password> por uma senha válida.

    USE master;  
    CREATE LOGIN HOST_B_login   
       WITH PASSWORD = '<password>';  
    GO  
    

    Para mais informações, vejaCREATE LOGIN (Transact-SQL).

    Para visualizar os logins nesta instância do servidor, pode usar a seguinte declaração Transact-SQL:

    SELECT * FROM sys.server_principals  
    

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

  2. Crie um utilizador para esse login.

    O exemplo seguinte cria um utilizador, HOST_B_user, para o login criado no passo anterior.

    USE master;  
    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    

    Para mais informações, vejaCREATE USER (Transact-SQL).

    Para visualizar os utilizadores nesta instância do servidor, pode usar a seguinte declaração Transact-SQL:

    SELECT * FROM sys.sysusers;  
    

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

  3. Obtenha o certificado para o endpoint de espelhamento da outra instância do servidor.

    Se ainda não o fez ao configurar ligações de saída, obtenha uma cópia do certificado para o endpoint de espelhamento da instância remota do servidor. Para isso, faça uma cópia de segurança do certificado nessa instância do servidor, conforme descrito em Permitir que um Endpoint de Espelhamento de Base de Dados Use Certificados para Conexões de Saída (Transact-SQL). Ao copiar um certificado para outro sistema, utilize um método de cópia segura. Tenha muito cuidado para manter todos os seus certificados seguros.

    Para mais informações, vejaBACKUP CERTIFICATE (Transact-SQL).

  4. Associe o certificado ao utilizador criado no passo 2.

    O exemplo seguinte associa o certificado de HOST_B ao seu utilizador em HOST_A.

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

    Para mais informações, vejaCREATE CERTIFICATE (Transact-SQL).

    Para visualizar os certificados nesta instância do servidor, utilize a seguinte instrução Transact-SQL:

    SELECT * FROM sys.certificates  
    

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

  5. Conceda permissão CONNECT no login para o endpoint de espelhamento remoto.

    Por exemplo, para conceder permissão em HOST_A à instância remota do servidor em HOST_B para se ligar ao seu login local — ou seja, para se ligar — HOST_B_loginuse as seguintes instruções Transact-SQL:

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

    Para mais informações, consulte GRANT Permissões de Endpoint (Transact-SQL).

Isto completa a configuração da autenticação de certificados para que HOST_B possam iniciar sessão no HOST_A.

Agora precisa de realizar os passos de entrada equivalentes para HOST_A em HOST_B. Estes passos estão ilustrados na parte de entrada do exemplo na secção de Exemplo, abaixo.

Example

O exemplo seguinte demonstra a configuração HOST_B para ligações de entrada. Substitua <password> por uma senha válida.

Note

Este exemplo utiliza um ficheiro de certificado contendo o certificado HOST_A criado por um excerto de código em Permitir que um endpoint espelhamento de base de dados use certificados para ligações de saída (Transact-SQL).

USE master;  
--On HOST_B, create a login for HOST_A.  
CREATE LOGIN HOST_A_login WITH PASSWORD = '<password>';  
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.)  
--Associate 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 pretende correr em modo de alta segurança com failover automático, deve repetir os mesmos passos de configuração para configurar o testemunho para ligações de saída e entrada.

Para informações sobre como criar uma base de dados espelhada, incluindo um exemplo Transact-SQL, veja Preparar uma Base de Dados Espelhada para Espelhamento (SQL Server).

Para um exemplo Transact-SQL de estabelecimento de uma sessão em modo de alto desempenho, veja Exemplo: Configuração do Espelhamento de Base de Dados Usando Certificados (Transact-SQL).

Segurança do .NET Framework

Ao copiar um certificado para outro sistema, utilize um método de cópia segura. Tenha muito cuidado para manter todos os seus certificados seguros.

Ver também

Segurança de Transporte para Espelhamento de Bases de Dados e Grupos de Disponibilidade Sempre Ativos (SQL Server)
GRANT Permissões de Endpoint (Transact-SQL)
Configurar uma Base de Dados Espelhada Encriptada
O endpoint de espelhamento de base de dados (SQL Server)
Solucionar problemas de configuração de espelhamento de banco de dados (SQL Server)