Cómo: Permitir el acceso a la red de Service Broker mediante certificados (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Para permitir que otra instancia envíe mensajes utilizando la seguridad de transporte de Service Broker basada en certificados, cree un usuario para la otra instancia e instale el certificado en dicha instancia.

Permitir el acceso desde otra instancia mediante certificados

  1. Obtenga el certificado para la otra instancia en un origen de confianza. Normalmente, esto implica el envío del certificado mediante correo electrónico cifrado o la transferencia del certificado en medios físicos, como un disco de disquete.

    Nota:

    Instale solamente certificados que provengan de fuentes de confianza.

  2. Cree un inicio de sesión.

  3. Cree un usuario para el inicio de sesión en la master base de datos.

  4. Instale el certificado para la otra instancia de la master base de datos. El usuario creado en el paso 3 será el propietario del certificado.

  5. Conceda al inicio de sesión CONNECT acceso al punto de conexión de Service Broker.

  6. Volcar el certificado que se usa para la seguridad de transporte de Service Broker en la instancia local.

    Nota:

    Vuelque solamente el certificado utilizado para la seguridad de transporte. No volque ni distribuya la clave privada asociada al certificado.

  7. Proporcione el certificado al administrador de la otra base de datos. El administrador de la base de datos remota instala este certificado mediante los pasos anteriores 1 a 4.

Una vez configurado el acceso en cada instancia, las comunicaciones entre las dos instancias utilizarán la seguridad de transporte de Service Broker cuando los extremos de ambas instancias estén configurados para permitir la seguridad de transporte.

Examples

USE master;
GO

-- Create a login for the remote instance.
CREATE LOGIN RemoteInstanceLogin WITH PASSWORD = '<password>';
GO

-- Create a user for the login in the master database.
CREATE USER RemoteInstanceUser FOR LOGIN RemoteInstanceLogin;
GO

-- Load the certificate from the file system. Notice that
-- the login owns the certificate.
CREATE CERTIFICATE RemoteInstanceCertificate
    AUTHORIZATION RemoteInstanceUser
    FROM FILE = 'C:\Certificates\AceBikeComponentsCertificate.cer';
GO

GRANT CONNECT ON ENDPOINT::ThisInstanceEndpoint TO RemoteInstanceLogin;
GO

-- Write the certificate from this instance
-- to the file system. This command assumes
-- that the certificate used by the Service Broker
-- endpoint is named TransportSecurity.
BACKUP CERTIFICATE TransportSecurity
    TO FILE = 'C:\Certificates\ThisInstanceCertificate.cer';
GO