Compartir a través de


Introducción a la seguridad (Service Broker)

Se aplica a:SQL ServerAzure SQL Managed Instance

Service Broker ayuda a escribir aplicaciones de bases de datos muy escalables que también son seguras y confiables. La seguridad de Service Broker permite que los servicios hospedados por diferentes instancias de SQL Server se comuniquen de forma segura, incluso cuando las instancias están en equipos diferentes que no tienen ninguna otra relación de confianza o donde los equipos de origen y destino no están conectados a la misma red al mismo tiempo.

La seguridad de Service Broker se basa en los certificados. El enfoque general consiste en usar certificados para establecer las credenciales de una base de datos remota y, a continuación, asignar operaciones de la base de datos remota a un usuario local. Los permisos del usuario local se aplican a cualquier operación en nombre del servicio remoto. El certificado se comparte entre bases de datos. No se comparte ninguna otra información del usuario.

Service Broker proporciona dos tipos distintos de seguridad: seguridad de cuadros de diálogo y seguridad de transporte. Comprender estos dos tipos de seguridad y cómo funcionan juntos le ayuda a diseñar, implementar y administrar aplicaciones de Service Broker.

  • Seguridad del cuadro de diálogo: cifra los mensajes en una conversación de diálogo individual y comprueba las identidades de los participantes en el diálogo. La seguridad de diálogo también proporciona autorización remota y comprobación de integridad de mensajes. La seguridad de diálogo establece una comunicación autenticada y cifrada entre dos servicios.

  • Seguridad de transporte: impide que las bases de datos no autorizadas envíen mensajes de Service Broker a las bases de datos de la instancia local. La seguridad de transporte establece una conexión de red autenticada entre dos bases de datos.

El protocolo de diálogo y el protocolo de agente adyacente están diseñados para pasar mensajes entre bases de datos, en lugar de ejecutar comandos en una base de datos remota. Este estilo de comunicación permite a Service Broker proporcionar servicios sin que las bases de datos deban compartir inicios de sesión de SQL Server ni credenciales de seguridad de Windows.

Para obtener más información sobre los certificados, consulte CREATE CERTIFICATE.

Escenario de seguridad Adventure Works Cycles

Nota:

Los ejemplos de código de este artículo se probaron mediante la base de datos de ejemplo AdventureWorks2025, que puede descargar de la página principal de ejemplos y proyectos de comunidad de Microsoft SQL Server .

En un escenario empresarial de ejemplo, Adventure Works Cycles, una empresa ficticia, crea un servicio de Service Broker para entregar pedidos de piezas a proveedores. Este servicio requiere seguridad para Adventure Works y para los proveedores. Cada proveedor debe poder garantizar que solamente puedan enviar pedidos los clientes existentes. Adventure Works debe poder garantizar que solo recibirán pedidos los proveedores cualificados. Los mensajes entre la base de datos AdventureWorks2008R2 y un proveedor deben estar cifrados para que ninguna aplicación de terceros pueda leerlos. Para garantizar el mayor nivel de seguridad posible, solo los proveedores calificados pueden conectarse a la base de datos AdventureWorks2008R2.

Para satisfacer el requisito de cifrado de los mensajes, Adventure Works y los proveedores utilizarán la seguridad de diálogo de Service Broker:

  1. Para configurar la seguridad de diálogo, el administrador de AdventureWorks2008R2 crea un usuario local denominado VendorOutgoing y un par de claves para ese usuario.

  2. El administrador distribuye el certificado que contiene la clave pública del par de claves a los proveedores que necesitan obtener acceso al servicio.

  3. Cada proveedor instala el certificado de Adventure Works Cycles en la base de datos y crea un usuario que posee el certificado.

  4. A continuación, el proveedor crea un par de claves y envía información sobre el nombre del servicio de proveedor y un certificado con la clave pública de ese par de claves al administrador adventureWorks2008R2.

  5. El administrador de AdventureWorks2008R2 crea un usuario para cada proveedor y asocia el certificado de ese proveedor con el usuario.

  6. El administrador también crea un enlace de servicio remoto para cada proveedor que asocie el nombre del servicio de proveedor con el usuario creado para el proveedor.

Para satisfacer el requisito de que solo los proveedores cualificados puedan conectarse a la base de datos de AdventureWorks2008R2, el administrador de AdventureWorks2008R2 utiliza la seguridad de transporte de Service Broker:

  1. Para configurar la seguridad de transporte, el administrador adventureWorks2008R2 crea un certificado en la base de datos de la master instancia de SQL Server que enviará mensajes.

  2. El administrador de AdventureWorks2008R2 envía el certificado a cada proveedor.

  3. Cada administrador de proveedores crea un usuario en la master base de datos para poseer el certificado y, a continuación, instala el certificado en la instancia de SQL Server que recibirá mensajes.

  4. El administrador del proveedor crea un certificado en la master base de datos de la instancia y envía la clave pública para ese usuario al administrador AdventureWorks2008R2.

  5. Por último, el administrador adventureWorks2008R2 crea un usuario en la master base de datos para poseer cada certificado de clave pública de proveedor e instala cada certificado de proveedor en la base de datos.

La combinación de seguridad de transporte y seguridad de diálogo ayuda al administrador de AdventureWorks2008R2 a cumplir los requisitos de seguridad de esta aplicación. En este escenario, los proveedores no pueden iniciar sesión en la base de datos AdventureWorks2008R2 y el administrador de Adventure Works no puede iniciar sesión en las bases de datos del proveedor. Entre las bases de datos solo se pueden intercambiar los mensajes de Service Broker.