Общие сведения о безопасности (Service Broker)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Service Broker помогает создавать высокомасштабируемые приложения базы данных, которые также являются безопасными и надежными. Безопасность Service Broker позволяет службам, размещенным различными экземплярами SQL Server, безопасно взаимодействовать, даже если экземпляры находятся на разных компьютерах с другими отношениями доверия или где исходные и конечные компьютеры не подключены к одной сети одновременно.

Безопасность Service Broker зависит от сертификатов. Общий подход заключается в использовании сертификатов для установления учетных данных удаленной базы данных, а затем для сопоставления операций с удаленной базой данных с локальным пользователем. Разрешения для локального пользователя применяются к любой операции от имени удаленной службы. Сертификат разделяется между базами данных. Никакие другие сведения о пользователе не передаются.

Service Broker предоставляет два различных типа безопасности: безопасность диалогов и безопасность транспорта. Понимание этих двух типов безопасности и их совместной работы помогает разрабатывать, развертывать и администрировать приложения Service Broker.

  • Безопасность диалогов: шифрует сообщения в отдельном диалоге и проверяет удостоверения участников диалогового окна. Безопасность диалогов также обеспечивает удаленную проверку авторизации и целостности сообщений. Диалоговая безопасность устанавливает аутентифицированное и зашифрованное взаимодействие между двумя службами.

  • Безопасность транспорта. Запрещает несанкционированным базам данных отправлять сообщения Service Broker в базы данных в локальном экземпляре. Безопасность транспорта устанавливает прошедшее проверку подлинности сетевое подключение между двумя базами данных.

Протокол диалога и смежный протокол брокера предназначены для передачи сообщений между базами данных, а не выполнения команд в удаленной базе данных. Такой вид связи позволяет компоненту Service Broker предоставлять возможности служб, не требуя от баз данных совместного использования имен входа SQL Server или учетных данных безопасности Windows.

Дополнительные сведения о сертификатах см. в разделе CREATE CERTIFICATE.

Сценарий безопасности Adventure Works Cycles

Примечание.

Примеры кода в этой статье были протестированы с помощью примера базы данных AdventureWorks2025, которую можно скачать с домашней страницы примеров Microsoft SQL Server и проектов сообщества.

В примере бизнес-сценария Adventure Works Cycles, вымышленная компания, настраивает службу Service Broker для заказа деталей у поставщиков. Эта служба требует безопасности как для Adventure Works, так и для поставщиков. Каждый поставщик должен гарантировать, что только существующие клиенты могут отправлять заказы. Adventure Works должен быть в состоянии гарантировать, что только квалифицированные поставщики могут получать заказы. Сообщения между базой данных AdventureWorks2008R2 и поставщиком должны быть зашифрованы так, чтобы их не могла прочитать третья сторона. Чтобы обеспечить высокий уровень безопасности, только квалифицированные поставщики могут подключиться к базе данных AdventureWorks2008R2.

Чтобы удовлетворить требование о том, что сообщения должны быть зашифрованы, Adventure Works и поставщики используют безопасность диалогов Service Broker.

  1. Чтобы установить безопасность диалога, администратор AdventureWorks2008R2 создает локального пользователя с именем VendorOutgoing и пару ключей для этого пользователя.

  2. Администратор распределяет сертификат, содержащий открытый ключ пары ключей поставщикам, которым требуется доступ к службе.

  3. Каждый поставщик устанавливает сертификат из Adventure Works Cycles в базу данных и создает пользователя, которому принадлежит сертификат.

  4. Затем поставщик создает пару ключей и отправляет сведения об имени службы для службы поставщика и сертификате с открытым ключом этой пары ключей администратору AdventureWorks2008R2.

  5. Администратор базы данных AdventureWorks2008R2 создает пользователей для каждого поставщика и связывает сертификат поставщика с этим пользователем.

  6. Администратор также создает привязку удаленной службы для каждого поставщика, который связывает имя службы поставщика с пользователем, созданным для поставщика.

Для удовлетворения требования, чтобы подключаться к базе данных AdventureWorks2008R2 могли только правомочные поставщики, администратор AdventureWorks2008R2 использует транспортную безопасность компонента Service Broker:

  1. Чтобы настроить безопасность транспорта, администратор AdventureWorks2008R2 создает сертификат в master базе данных экземпляра SQL Server, который будет отправлять сообщения.

  2. Администратор базы данных AdventureWorks2008R2 отправляет сертификат всем поставщикам.

  3. Каждый администратор поставщика создает пользователя в master базе данных для владения сертификатом, а затем устанавливает сертификат в экземпляре SQL Server, который будет получать сообщения.

  4. Администратор поставщика затем создает сертификат в master базе данных экземпляра и отправляет открытый ключ для этого пользователя администратору AdventureWorks2008R2.

  5. Наконец, администратор AdventureWorks2008R2 создает пользователя в master базе данных для владения сертификатом открытого ключа поставщика и устанавливает каждый сертификат поставщика в базе данных.

Сочетание транспортной безопасности и безопасности диалога помогает администратору базы данных AdventureWorks2008R2 удовлетворить требования безопасности этого приложения. В этом сценарии поставщики не могут войти в базу данных AdventureWorks2008R2, а администратор Adventure Works не может войти в базы данных поставщика. Между базами данных можно обмениваться только сообщениями Service Broker.