Creación de reflejo de la base de datos: usar certificados en las conexiones salientes

Se aplica a:SQL Server

En este tema se describen los pasos necesarios para configurar instancias de servidor que utilicen certificados para autenticar conexiones salientes en la creación de un reflejo de base de datos. La configuración de conexiones salientes se debe realizar antes de que se puedan configurar conexiones entrantes.

Nota

Todas las conexiones de creación de reflejo en una instancia de servidor utilizan un único extremo de reflejo de la base de datos; debe especificar el método de autenticación de la instancia de servidor cuando cree el extremo.

El proceso de configuración de conexiones salientes implica los siguientes pasos generales:

  1. En la base de datos master , cree una clave maestra de la base de datos.

  2. En la base de datos maestra , cree un certificado cifrado en la instancia de servidor.

  3. Cree un extremo para la instancia de servidor utilizando su certificado.

  4. Realice una copia de seguridad del certificado en un archivo. A continuación, cópiela de forma segura a los demás sistemas.

Debe completar estos pasos para cada asociado y el testigo, si existe.

En el siguiente procedimiento se describen estos pasos detalladamente. Para cada paso, el procedimiento proporciona un ejemplo para configurar una instancia del servidor en un sistema denominado HOST_A. En la sección Ejemplo anexa se muestran los mismos pasos para otra instancia del servidor en un sistema denominado HOST_B.

Procedimiento

Para configurar instancias del servidor para conexiones salientes de creación de reflejo (en HOST_A)

  1. En la base de datos master , cree la clave maestra de la base de datos si no existe ninguna. Para ver las claves existentes en una base de datos, use la vista de catálogo sys.symmetric_keys .

    Para crear la clave maestra de la base de datos, utilice el siguiente comando de Transact-SQL :

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

    Utilice una contraseña segura única y regístrela en un lugar seguro.

    Para obtener más información, consulte CREATE MASTER KEY (Transact-SQL) y Crear la clave maestra de una base de datos.

  2. En la base de datos maestra , cree un certificado cifrado en la instancia de servidor con el fin de utilizarlo en las conexiones salientes para la creación de reflejo de la base de datos.

    Por ejemplo, para crear un certificado para el sistema HOST_A.

    Importante

    Si piensa usar el certificado durante más de un año, especifique la fecha de vencimiento en hora UTC utilizando la opción EXPIRY_DATE en la instrucción CREATE CERTIFICATE. Además, se recomienda utilizar SQL Server Management Studio para crear una regla de administración basada en directivas que le notifique la fecha de expiración de los certificados. Mediante el cuadro de diálogo Crear nueva condición de Administración de directivas, cree esta regla en el campo @ExpirationDate de la faceta Certificado . Para obtener más información, vea Administrar servidores mediante administración basada en directivas y Proteger SQL Server.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate for database mirroring',   
       EXPIRY_DATE = '11/30/2013';  
    GO  
    

    Para más información, consulte CREATE CERTIFICATE (Transact-SQL).

    Para ver los certificados de la base de datos maestra, puede usar las siguientes instrucciones Transact-SQL :

    USE master;  
    SELECT * FROM sys.certificates;  
    

    Para obtener más información, vea sys.certificates (Transact-SQL).

  3. Asegúrese de que el extremo de creación de reflejo de la base de datos existe en cada una de las instancias de servidor.

    Si ya existe un extremo de creación de reflejo de la base de datos para la instancia de servidor, debe volver a utilizar dicho extremo para las demás sesiones que establezca en la instancia de servidor. Para determinar si existe un extremo de creación de reflejo de la base de datos en una instancia de servidor y ver su configuración, utilice la siguiente instrucción:

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

    Si no existe ningún extremo, cree uno que utilice este certificado en las conexiones salientes y las credenciales del certificado en la comprobación del otro sistema. Se trata de un extremo para todo el servidor que utilizan todas las sesiones de creación de reflejo en las que participa la instancia de servidor.

    Por ejemplo, para crear un extremo de creación de reflejo para la instancia del servidor de ejemplo en 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 obtener más información, vea CREATE ENDPOINT (Transact-SQL).

  4. Realice una copia de seguridad del certificado y cópiela en el otro sistema (o en los otros sistemas). Esto es necesario para configurar conexiones entrantes en el otro sistema.

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

    Para obtener más información, vea BACKUP CERTIFICATE (Transact-SQL).

    Copie este certificado mediante el método seguro que elija. Tenga mucho cuidado de mantener todos sus certificados protegidos.

El código de ejemplo de los pasos anteriores configura conexiones salientes en HOST_A.

Ahora tiene que seguir los pasos de salida equivalentes para HOST_B. Estos pasos se ilustran en la siguiente sección Ejemplo.

Ejemplo

En el siguiente ejemplo se muestra la configuración de HOST_B para conexiones salientes.

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 el certificado en el otro sistema mediante el método seguro que elija. Tenga mucho cuidado de mantener todos sus certificados protegidos.

Importante

Después de configurar conexiones salientes, debe configurar conexiones entrantes en cada instancia de servidor para la otra instancia (o instancias) de servidor. Para obtener más información, vea Permitir que un punto de conexión de creación de reflejo de la base de datos utilice certificados para las conexiones entrantes (Transact-SQL).

Para obtener información sobre la creación de una base de datos reflejada, incluido un ejemplo de Transact-SQL, vea Preparar una base de datos reflejada para la creación de reflejo (SQL Server).

Para ver un ejemplo de Transact-SQL del establecimiento de una sesión de modo de alto rendimiento, vea Ejemplo: configurar la creación de reflejo de la base de datos con certificados (Transact-SQL).

Seguridad de .NET Framework

A menos que garantice que su red es segura, se recomienda utilizar el cifrado para las conexiones de creación de reflejo de la base de datos.

Cuando copie un certificado en otro sistema, utilice un método de copia seguro.

Consulte también

Elegir un algoritmo de cifrado
Preparar una base de datos reflejada para la creación de reflejo (SQL Server)
ALTER ENDPOINT (Transact-SQL)
Ejemplo: configurar la creación de reflejo de la base de datos con certificados (Transact-SQL)
El extremo de creación de reflejo de la base de datos (SQL Server)
Solucionar problemas de configuración de creación de reflejo de la base de datos (SQL Server)
Establecer una base de datos reflejada cifrada