Вопрос

У меня есть Sql-сервер внутри ограниченной сети.Мне нужно каким-то образом получить данные извне.

Я хотел бы использовать брокер сообщений.Я думаю, что внешняя база данных помещает сообщение в очередь, затем мне требуется служба, которая находится внутри локальной сети с ограниченным доступом, для прослушивания (опроса?) для этих сообщений, а затем для их обработки.Я не могу заставить внешнюю очередь инициировать обычный диалог брокера в локальной сети с ограниченным доступом.

Мой вопрос в том, должен ли я смотреть на внешний активатор брокера, чтобы сидеть внутри локальной сети с ограниченным доступом и прослушивать новые сообщения, а затем действовать в соответствии с ними?Есть ли у кого-нибудь какой-нибудь опыт в этом?Документация / примеры для внешнего активатора довольно скудны на местах, и монологи пока не поддерживаются в message broker.

Является ли msmq лучшим вариантом?

Это было полезно?

Решение

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

Если вы хотите использовать выделенный процесс внутри локальной сети с ограниченным доступом, который "получает" данные внутри, вы должны обеспечить согласованность транзакций между внешним сервером "get" и внутренним сервером write:две операции должны быть включены в распределенную транзакцию, а самому протоколу DTC должно быть разрешено проникать в локальную сеть с ограниченным доступом.Таким образом, некоторые порты все еще должны быть открыты в локальной сети с ограниченным доступом.

Что разработчикам безопасности вашей локальной сети необходимо понимать, так это то, что соединения Service Broker являются не Соединения Transact-SQL.Service Broker использует выделенный протокол, который разрешает обмен сообщениями Service Broker только между собой.Весь трафик зашифрован и защищен с помощью шифрования RC4 или AES.Криптография SSB совместима с FIPS.Разрешение трафика Service Broker на внутренний сервер SQL Server, вероятно, является наиболее безопасным способом передачи данных с внешнего сервера на защищенный сервер.В сети Service Broker нет понятий "клиент" и "сервер", и нельзя спроектировать сеть, разрешающую подключения только в одном направлении (например.в отличие, скажем, от HTTP, который может быть сконструирован для подключения изнутри к внешней стороне, но не наоборот).Сеть SSB требует, чтобы обе задействованные машины могли подключаться друг к другу, поскольку ответные сообщения могут приходить с длительными задержками (часы, дни, рассмотрим случай, когда создается резервная копия очереди, поэтому требуется много времени, пока сообщение не будет обработано и отправлен ответ).Невозможно держать соединения открытыми в течение нескольких дней, чтобы ожидать ответа, поэтому получатель сообщения должен иметь возможность подключиться обратно к отправителю для доставки ответа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top