Permitir que um ponto de extremidade de 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çã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:
No banco de dados mestre , crie um banco de dados chave mestre.
No banco de dados mestre , crie um certificado criptografado na instância de servidor.
Crie um ponto de extremidade para a instância do servidor que usa seu certificado.
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)
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, confira CREATE MASTER KEY (Transact-SQL) e Criar uma chave mestra de banco de dados.
No banco de dados master , crie um certificado criptografado na instância de servidor a ser usado nas suas conexões de saída para espelhamento de banco de dados.
Por exemplo, para criar um certificado para o sistema HOST_A.
Importante
Se você pretende usar o certificado por mais de um ano, especifique a data de expiração em hora UTC usando a opção EXPIRY_DATE em sua instrução CREATE CERTIFICATE. Além disso, é recomendável que você use o SQL Server Management Studio para criar uma regra de 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 essa regra no campo @ExpirationDate da faceta Certificado . Para obter mais informações, veja Administrar servidores usando o gerenciamento baseado em políticas 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, confira 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, confira sys.certificates (Transact-SQL).
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, veja CREATE ENDPOINT (Transact-SQL).
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, confira 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.
Importante
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, confira Permitir que um ponto de extremidade de 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, confira Preparar um banco de dados espelho para espelhamento (SQL Server).
Para obter um exemplo do Transact-SQL de estabelecimento de uma sessão de modo de alto desempenho, confira Exemplo: Configurando o espelhamento de banco de dados usando certificados (Transact-SQL).
Segurança do .NET Framework
A menos que você possa garantir que sua rede está segura, recomendamos o uso de 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.
Consulte Também
Escolher um algoritmo de criptografia
Preparar um banco de dados espelho para espelhamento (SQL Server)
ALTER ENDPOINT (Transact-SQL)
Exemplo: configurar espelhamento de banco de dados usando certificados (Transact-SQL)
O ponto de extremidade de espelhamento de banco de dados (SQL Server)
Solução de problemas de configuração de espelhamento de banco de dados (SQL Server)
Configurar um banco de dados espelho criptografado