Permitir que un extremo de 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 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 llevar a cabo estos pasos para cada asociado y el testigo, si procede.

El siguiente procedimiento describe estos pasos con más detalle. 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, 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) 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.

    Nota importanteImportante

    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 obtener más información, vea 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. 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.

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. 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 Permitir que un extremo 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 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.

Vea también

Referencia

ALTER ENDPOINT (Transact-SQL)

Conceptos

Elegir un algoritmo de cifrado

Preparar una base de datos reflejada para la creación de reflejo (SQL Server)

Ejemplo: configurar la creación de reflejo de la base de datos mediante 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