Compartir a través de


Cómo permitir que la creación de reflejo de la base de datos utilice certificados para las conexiones salientes (Transact-SQL)

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 de una instancia de servidor utilizan un único extremo para la creación de un reflejo de base de datos y, al crear el extremo, se debe especificar el método de autenticación de la instancia de servidor.

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 master, cree un certificado cifrado en la instancia de servidor.

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

  4. Realice una copia de seguridad del certificado en un archivo y cópiela de forma segura en el otro sistema (o en los otros sistemas).

Debe llevar a cabo estos pasos para cada asociado y el testigo, si procede.

El siguiente procedimiento describe estos pasos con más detalle. En cada paso, el procedimiento proporciona un ejemplo de configuración de una instancia de servidor en un sistema denominado HOST_A. La sección Ejemplo asociada muestra los mismos pasos para otra instancia de 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, utilice 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, vea CREATE MASTER KEY (Transact-SQL).

  2. En la base de datos master, 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.

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

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

    Para ver los certificados de la base de datos master puede utilizar las siguientes instrucciones de 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. Debe tener mucho cuidado para mantener la seguridad de todos los certificados.

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

No es necesario realizar los pasos salientes equivalentes en HOST_B. Estos pasos se describen 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';
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. Debe tener mucho cuidado para mantener la seguridad de todos los certificados.

Nota importanteImportante

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 Cómo permitir que la 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 Cómo preparar una base de datos reflejada para la creación de reflejo (Transact-SQL).

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

Seguridad

A menos que pueda garantizar que su red es segura, se recomienda utilizar 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.