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

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

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

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

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

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

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

Дополнительные сведения о сертификатах см. в разделе Инструкция CREATE CERTIFICATE (Transact-SQL).

Сценарий реализации безопасности в базе данных компании Adventure Works Cycles

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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