.NET Как мне создать DAL для удовлетворения моих требований? - PullRequest
1 голос
/ 13 июня 2010

Предполагается, что я должен развернуть приложение asp.net на следующих 3 серверах:

1) БД - не публично 2) «средний» - не публичный 3) Веб-сервер - общедоступный

Мне не разрешено напрямую подключаться с веб-сервера к БД. Я должен пройти через «середину» - это просто для того, чтобы замедлить злоумышленников, если они взломали веб-сервер.

Весь доступ к БД осуществляется через хранимые процедуры. Нет доступа к таблице.

Я просто хочу предоставить веб-серверу набор данных ado (я знаю, что многим это не понравится, но это требование).

Использование веб-служб asmx - это работает, но сериализация XML медленная, и это дополнительный набор кода для обслуживания и развертывания.

Использование туннеля ssh / vpn для подключения к базе данных через «промежуточный сервер», по-видимому, устраняет любые возможные преимущества поддержания «среднего».

Использование WCF бинарного / tcp устраняет проблему XML, но все же есть дополнительный код.

Существует ли подход, обеспечивающий простоту использования ssh / vpn, но потенциальную выгоду наличия dal на промежуточном сервере?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 13 июня 2010

Вы можете сделать это, выставив свой DAL через веб-сервисы.

Таким образом, на вашем «промежуточном» сервере доступны все веб-сервисы, которые копируют ваш DAL, который, как мы надеемся, просто вызывает хранимые процессы и не имеет другого доступа кDB.Защитите промежуточный сервер, чтобы он имел доступ только для предоставления доступа к веб-службам общедоступному веб-серверу и никакой другой точке входа.Вы можете использовать SSL, если это необходимо.

Защитите БД, чтобы принимать соединения только со «среднего» сервера и иметь ТОЛЬКО доступ к хранимым процедурам, которые необходимо вызывать DAL.

Если кто-то идет на компромиссна общедоступном сервере они должны иметь только порт 80 или 443. У вас должен быть только какой-то веб-сервис, поэтому ваш риск должен быть ограничен, если он скомпрометирован.Мне нужно было настроить веб-приложение с аналогичной настройкой и иметь те же правила, что и внешний веб-сервер мог обмениваться данными только через порт 80 или 443 с «средним» сервером в DMZ, а «средний» сервер имел только соединение сбаза данных.На каждом шаге каждая машина была привязана только к тем машинам, которые могли бы с ней общаться.

Имейте в виду, что вы разрабатываете веб-сервис, а также имеете какой-либо тип аутентификации или убедитесь, что все вызовы имеют проверки на них.чтобы проверить их законность.

0 голосов
/ 13 июня 2010

Лично я бы пропустил "середину".Если база данных не выставлена, а веб-сервер есть, «середина» ничего не покупает.Если они смогут добраться до одного неэкспонированного сервера, битва уже проиграна.Защитите веб-сервер, защитите сервер базы данных и верьте, что программное обеспечение выполнит свою работу, когда настроено так, как должно.

Вы всегда можете поместить сервер базы данных в другую подсеть.Подобные требования обычно являются признаком более серьезных проблем - некомпетентности администратора баз данных, архитектурных некомпетентностей и т. Д. Я работал на крупные финансовые компании, и просто убедиться, что сервер базы данных не был выставлен, было более чем достаточно - в основном из-за наличияЗащищенный и незащищенный сервер баз данных делает это спорным вопросом.

Не пытаться обрушиться на вас или поставить под сомнение требования ради этого - но я надеюсь, что более разумный и обслуживаемый подход мог быбыть принятым ради вашего здравого смысла.

Редактировать - Ради пояснения, я не против использования реального сервера приложений.Контекст моего ответа основан на требовании ОП использовать его в качестве уровня прокси-сервера базы данных.

...