Общие практики для доступа к SQL Server из приложения Windows в удаленной сети? - PullRequest
0 голосов
/ 16 августа 2010

Справочная информация

У нас есть приложение Windows .NET, которое используется нашими сотрудниками на местах, которые путешествуют по всей стране и большую часть времени живут вне отелей.Недавно мы добавили некоторые функции, которые напрямую подключаются к нашему SQL Server 2005 для доступа к данным (например, SqlConnection.Open ()).С тех пор мы столкнулись с некоторыми проблемами, связанными с генерацией ошибок, указывающих на невозможность доступа к серверу.

Прерывистый характер этой ошибки среди наших сотрудников привел нас к мысли, что это может быть связано с проблемой блокировки портови что некоторые отели могут блокировать порт 1433 - используемый SQL Server.Когда мы начали исследовать эту проблему, мы натолкнулись на множество комментариев, в которых говорилось, что публично открытый порт 1433 является серьезной дырой в безопасности и что его следует ограничить внутренним / локальным использованием.

Итак, мой вопрос заключается в следующем: какие существуют альтернативы для приложения Windows для запроса и получения данных из базы данных SQL Server, что приведет к повышению безопасности и обходу общих блокировок, размещаемых в общедоступных сетях (таких как гостиничный WiFi)?

Я знаю, что одним из вариантов является VPN, но из того, что я слышал, нередки случаи, когда VPN-соединение также блокируется в общедоступных сетях.

Ответы [ 4 ]

2 голосов
/ 16 августа 2010

Да, используйте протокол, который разрешен для прохождения через любой NAT / Firewall: HTTP.Другими словами, вместо соединения с SqlConnection добавьте слой веб-службы среднего уровня.Если вы думаете, что это сложно, см. Создание API-интерфейса OData для StackOverflow, включая XML и JSON, за 30 минут .

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

1 голос
/ 16 августа 2010

Я бы использовал WebService или WCF Service с шифрованием SSL.

Тебе тоже следует учитывать расходы на лицензирование ...

Если ваши пользователи обращаются к серверу sql, это лицензия для каждого пользователя. Лицензирование для каждого сокета отличается.

1 голос
/ 16 августа 2010

Вероятно, вам лучше всего использовать WebService, который будет вызывать SQL внутри.Затем вы можете опубликовать свой веб-сервис на любой порт, который вам нужен, и приложение Windows (хотя я, вероятно, сам изменил бы его на веб-приложение) может вызывать веб-сервис на любой порт, который вы определили.

0 голосов
/ 16 августа 2010

На самом деле есть только два варианта:

  1. Переместить сервер SQL на другой порт. Это по-прежнему наименее безопасно, но поможет вам преодолеть большинство брандмауэров. Надеюсь, вы на самом деле не отправляете фактический sql по этому проводу ... Независимо от шифрования

  2. Изменить приложение для общения через веб-сервисы. Это займет немного времени, но у вас есть возможность получить гораздо более безопасную систему. Шифрование все еще необходимо; и ни при каких обстоятельствах не используйте это для отправки SQL-запроса по сети.

...