Información general de seguridad (Service Broker)

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 a los servicios alojados por distintas instancias SQL Server comunicarse de forma segura incluso si las instancias se encuentran en distintos equipos que no tienen otra relación de confianza o si los equipos de origen y de 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 utilizar certificados para establecer las credenciales de una base de datos remota y, a continuación, asignar operaciones desde 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 de seguridad distintos: seguridad de diálogo y seguridad de transporte. Comprender estos dos tipos de seguridad y cómo funcionan conjuntamente le ayudará a diseñar, implementar y administrar las aplicaciones de Service Broker.

  • Seguridad de diálogo: cifra 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: evita que las bases de datos no autorizadas envíen mensajes de Service Broker a bases de datos de la instancia local. La seguridad de transporte establece una conexión de red autenticada entre dos bases de datos.

Observe que el protocolo de diálogo y el protocolo del broker adyacente se han diseñado basándose en el envío de mensajes entre bases de datos y no en la ejecución de 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 SQL Server ni credenciales de seguridad de Windows.

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

Escenario de seguridad de Adventure Works Cycles

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 sólo puedan enviar pedidos los clientes existentes. Adventure Works debe poder garantizar que sólo recibirán pedidos los proveedores cualificados. Los mensajes entre la base de datos AdventureWorks y un proveedor deben estar cifrados para que ninguna aplicación de terceros pueda leerlos. Para garantizar el mayor nivel de seguridad posible, sólo los proveedores cualificados pueden conectarse a la base de datos AdventureWorks.

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 AdventureWorks 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 del proveedor y un certificado con la clave pública de ese par de claves al administrador de AdventureWorks.

  5. El administrador de AdventureWorks 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 sólo los proveedores cualificados puedan conectarse a la base de datos de AdventureWorks, el administrador de AdventureWorks utiliza la seguridad de transporte de Service Broker:

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

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

  3. Los administradores de cada proveedor crean un usuario en la base de datos maestra para que sea el propietario del certificado y, a continuación, instalan el certificado en la instancia de SQL Server que recibirá los mensajes.

  4. A continuación, los administradores de cada proveedor crean un certificado en la base de datos maestra de la instancia y envían la clave pública de ese usuario al administrador de AdventureWorks.

  5. Por último, el administrador de AdventureWorks crea un usuario en la base de datos maestra para que sea el propietario de los certificados de clave pública de cada 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 AdventureWorks a cumplir los requisitos de seguridad de esta aplicación. Observe que, en este escenario, los proveedores no pueden iniciar sesión en la base de datos de AdventureWorks y el administrador de Adventure Works no puede iniciar sesión en las bases de datos de los proveedores. Entre las bases de datos sólo se pueden intercambiar los mensajes de Service Broker.