|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
Интересует такой вопрос - как в основном реализованы банковские системы (да и вообще любые системы с конфеденциальными данными) на 2-х звенке или 3-х звенке. Насколько я понимаю, не существует никаких причин для третьего звена, если БД предоставляет пользователям только интерфейс из ХП, и каждому пользователю назначены права на запуск определенных процедур и функций, то вроде с безопасностью должен быть полный порядок? Тем не менее я слышал о том, что в банках часто делают именно трехзвенные приложения, обосновывая это тем, что давать права на коннект к БД пользователям небезопасно. Насколько это обосновано? Также интересует как подходят к безопасности систем, где используется ОРМ, тут интерфейс из ХП не годиться - требуется доступ к таблицам или вью. Как выходят из этой ситуации, используют трехзвенку? Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 10:00 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
"Интересует такой вопрос - как в основном реализованы банковские системы (да и вообще любые системы с конфеденциальными данными) на 2-х звенке или 3-х звенке. " и так и так. Вот например Новая Афина в чистом виде двухзвенка. IBSO была раньше 2-звенкой, сейчас переделали на 3-х звенку. "Тем не менее я слышал о том, что в банках часто делают именно трехзвенные приложения, обосновывая это тем, что давать права на коннект к БД пользователям небезопасно." А таки кто Вам это сказал? К слову говоря банки в основном своем "не делают" приложений ибо их задача не приложения делать, а бабло раздавать... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 16:44 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
Банковские системы и другие системы с конфиденциальными данными в основном реализованы так, как было модно на момент их создания. ORM вовсе не означает отказа от ХП. ХП вовсе не означают большую безопасность по сравнению с отсутствием ХП. Наконец, трёхзвенка вовсе не означает ни большую, ни меньшую безопасность по сравнению с двухзвенкой. Ну а давать права на коннект бесправным пользователям - гораздо безопаснее, нежели коннектиться полноправным суперпользователем. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 22:55 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
hey_123Тем не менее я слышал о том, что в банках часто делают именно трехзвенные приложения, обосновывая это тем, что давать права на коннект к БД пользователям небезопасно. Насколько это обосновано? как безопасней: говорить с неизвестным через домофон или пустить в дом? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 23:09 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
Как безопасней, поставить железную дверь или посадить в подъезде старушку-консьержку со связкой ключей? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 00:07 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
softwarerКак безопасней, поставить железную дверь или посадить в подъезде старушку-консьержку со связкой ключей? поставить железную дверь + консьержа (лучше + вторая дверь с домофоном все же). Не понял аналогии конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 00:14 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
Тут аналогия к тому, что не стоит злоупотреблять плохо подходящими аналогиями. Оно на деле сложнее, и по аналогии двери-ключи вариантов просто не объяснить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 00:38 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
softwarerТут аналогия к тому, что не стоит злоупотреблять плохо подходящими аналогиями. Оно на деле сложнее, и по аналогии двери-ключи вариантов просто не объяснить. аналогия простейшая: два забора надежней одного. И никакой моды. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 00:46 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
вообще вопрос касался сиквел реализаций, непонятно, зачем модераторы перенесли тему softwarerORM вовсе не означает отказа от ХП. на практике означает, но в данном контексте это не особо важно softwarerХП вовсе не означают большую безопасность по сравнению с отсутствием ХП. Наконец, трёхзвенка вовсе не означает ни большую, ни меньшую безопасность по сравнению с двухзвенкой по сути меня интересовал вопрос, насколько надежной является двузвенная система, имеющая интерфейс ХП, по сравнению с трехзвенной. На мой взгляд это достаточно надежно, ведь если каждый пользователь наделен только правами на запуск определенных ХП, то это никак не поможет ни хакерам ни кому-либо еще (включая самого пользователя) как-нибудь повредить систему/получить секретные данные. Однако интересует, насколько это распостранено, ибо к примеру у нас клиенты сильно часто хотят трехзвенку, мотивируя это сиоображениями безопасности. Дескать давать пользователям прямой коннект к БД небезопасно и все тут. А почему именно небезопасно - узнать неудается. iscrafmкак безопасней: говорить с неизвестным через домофон или пустить в дом? а конкретный пример можете привести, где с ХП могут возникнуть проблемы? А то думается мне, что наши клиенты руководствуются примерно вашей логикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 00:47 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
hey_123iscrafmкак безопасней: говорить с неизвестным через домофон или пустить в дом? а конкретный пример можете привести, где с ХП могут возникнуть проблемы? А то думается мне, что наши клиенты руководствуются примерно вашей логикой. а же не говорю о том, что с ними могут возникнуть проблемы. Я говорю только о том, что 2 барьера безопасней одного. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 01:04 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
iscrafmа же не говорю о том, что с ними могут возникнуть проблемы. Я говорю только о том, что 2 барьера безопасней одного. это все общие рассуждения, а интересует конкретика. Например я не вижу как второй барьер поможет сделать безопаснее. А вот недостатки в виде ухудшения производительности налицо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 01:08 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
iscrafmаналогия простейшая: два забора надежней одного. И никакой моды. Это ложная, неверная и обманывающая, вплоть до злонамеренности, аналогия. Ибо трёхзвенка не ставит "двух заборов", во всяком случае в типовых реализациях. Ровно с той же степенью точности её можно назвать "одним забором с двумя воротами". Самый простой пример - sql injection. В случае нормальной двузвенки она не является значимой опасностью, поскольку пользователь всё равно не сможет сделать то, на что у него нет прав в БД. В случае типичной трёхзвенки с пулом соединений и коннектом суперпользователем это - белый флаг, безоговорочное поражение. hey_123по сути меня интересовал вопрос, насколько надежной является двузвенная система, имеющая интерфейс ХП, по сравнению с трехзвенной. Насколько надёжным является автомобиль по сравнению с катером? На таком уровне бессмысленно рассуждать о безопасности. Сугубо в принципе трёхзвенку можно сделать надёжнее. На практике же я уверен, что 90% трёхзвенок кардинально менее надёжны (просто зная примерно, кто и насколько вдумчиво их пишет). Причина в обоих случаях одна и та же: бОльшая доля в безопасности уникального кода конкретного Васи Криворучкина. hey_123На мой взгляд это достаточно надежно, ведь если каждый пользователь наделен только правами на запуск определенных ХП, то это никак не поможет ни хакерам ни кому-либо еще (включая самого пользователя) как-нибудь повредить систему/получить секретные данные. Ну не скажите Зависит от этих ХП во-первых, и от дырок в СУБД во-вторых. Вон, в Oracle не так давно, пару лет как, нашли роскошную дырку, при которой пользователь, имеющий право на connect, мог буквально одним движением сделать себе SYSDBA. hey_123Однако интересует, насколько это распостранено, ибо к примеру у нас клиенты сильно часто хотят трехзвенку, мотивируя это сиоображениями безопасности. Дескать давать пользователям прямой коннект к БД небезопасно и все тут. А почему именно небезопасно - узнать неудается. Это полная глупость. Скажем, в одном известном мне случае эту "проблему" решили так: заводя пользователя (login/password), создавали БД-пользователя с атрибутами login/hash(password). То есть, приложение просто посылало на сервер хэш от введённого пароля, соответственно, пользователь со "своим паролем" напрямую в базу коннектиться не мог. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 01:47 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
hey_123Дескать давать пользователям прямой коннект к БД небезопасно и все тут. А почему именно небезопасно - узнать неудается. вот например пример "почему": softwarerв Oracle не так давно, пару лет как, нашли роскошную дырку, при которой пользователь, имеющий право на connect, мог буквально одним движением сделать себе SYSDBA. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 02:00 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
hey_123это все общие рассуждения, а интересует конкретика. Например я не вижу как второй барьер поможет сделать безопаснее. А вот недостатки в виде ухудшения производительности налицо простой пример двойного барьера и почему это безопасней... Платежи через интернет совершаешь? Первый барьер все реквизиты карты. Второй барьер - на твой телефон приходит sms с единоразовым паролем. Если конечно не потерял одновременно карту и телефон в одном пакете, да еще и не заблокировал... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 02:14 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
p.s. забыл... ухудшение производительности конечно налицо. Вместо минуты потратил 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 02:20 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
softwarerНасколько надёжным является автомобиль по сравнению с катером? На таком уровне бессмысленно рассуждать о безопасности. Сугубо в принципе трёхзвенку можно сделать надёжнее. На практике же я уверен, что 90% трёхзвенок кардинально менее надёжны (просто зная примерно, кто и насколько вдумчиво их пишет). Причина в обоих случаях одна и та же: бОльшая доля в безопасности уникального кода конкретного Васи Криворучкина. а как трехзвенку можно сделать менее надежной чем двухзвенка? Либо наоборот надежнее? Это если временно обстрагироваться от дыр в самой СУБД. По сути ведь разница в наличии/отсутствии прямого соединения, и все. Если есть косячная ХП, позволяющая скажем sql injection, то как тут 3-х звенка поможет/помешает? Точно так-же параметр просто передастся через промежуточное звено и уйдет в базу. softwarerНу не скажите Зависит от этих ХП во-первых, и от дырок в СУБД во-вторых. Вон, в Oracle не так давно, пару лет как, нашли роскошную дырку, при которой пользователь, имеющий право на connect, мог буквально одним движением сделать себе SYSDBA. На самом деле пожалуй приведенный вами пример про оракл является аргументом за трехзвенку. Хотя конечно и с натяжкой, во-первых такие баги надо знать, а как только они становяться известными их фиксят, во вторых мало-ли какие баги есть которые позволят получить sysdba и вообще без права на коннект. Плюс тут появляются вопросы к безопасности самого третьего звена (ниже ответил iscrafm'у по этому поводу) А вот от ХП это вроде не должно зависеть, как тут 3-е звено влияет? softwarerЭто полная глупость. Скажем, в одном известном мне случае эту "проблему" решили так: заводя пользователя (login/password), создавали БД-пользователя с атрибутами login/hash(password). То есть, приложение просто посылало на сервер хэш от введённого пароля, соответственно, пользователь со "своим паролем" напрямую в базу коннектиться не мог. Да. Тем более все равно этот пароль прослушать можно при желании iscrafmпростой пример двойного барьера и почему это безопасней... Платежи через интернет совершаешь? Первый барьер все реквизиты карты. Второй барьер - на твой телефон приходит sms с единоразовым паролем. Если конечно не потерял одновременно карту и телефон в одном пакете, да еще и не заблокировал... хотелось-бы релевантный к базам пример. Как именно третье звено поможет? За исключением приведенного примера про дыру в субд, тут скорее вопрос доверия к субд как таковой - ведь можно сказать, что если клиент имеет коннект к промежуточному звену, то используя теперь уже его дыры, можно сломать сначала промежуточное звено и получить полноценный логин/пароль к базе, который в этом случае будет скорее всего чуть-ли не уровня sysdba. Есть основания доверять sql server'у больше, чем непонятным вебсервисам или wcf iscrafmзабыл... ухудшение производительности конечно налицо. Вместо минуты потратил 2. вебсервисы и всякие wcf в сравнении с прямым коннектом заметно ухудшают производительность и добавляют неожиданные сюрпризы ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 02:47 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
hey_123, Удивляюсь почему iscrafm не дал сразу почитать теорию ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 08:43 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
hey_123iscrafmа же не говорю о том, что с ними могут возникнуть проблемы. Я говорю только о том, что 2 барьера безопасней одного. это все общие рассуждения, а интересует конкретика. Например я не вижу как второй барьер поможет сделать безопаснее. А вот недостатки в виде ухудшения производительности налицоОчень просто - если разработчик допускает ошибку и оставляет дыру в одном барьере, то злоумышленника останавливает второй барьер. При этом систему разрабатывают разные разработчики - DB-developer делает защищённый интерфейс к БД через ХП, а App-developer делает защищённый интерфейс к приложению от презентационного уровня. При этом защищённый интерфейс к БД можно сделать не только через ХП. Ну а делать "именно трехзвенные приложения, обосновывая это тем, что давать права на коннект к БД пользователям небезопасно" - это глупость: не сделать защиту и дать полный доступ гостям квалифицированный разработчик в состоянии при любом количестве уровней :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 09:28 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
alexeyvg, в 3-х звенке нет независимых уровней. "У семи нянек, дитя без глазу" ORM в 3-х хвенке на ХП не пишут. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 09:35 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
um_nikhey_123, Удивляюсь почему iscrafm не дал сразу почитать теорию +1 читать перед сном, по чайной ложке :) Просто, часто нету команды-профи в 2, 3-х, N-звенках одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 09:37 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
Опишу свой опыт :) 1. Ничего страшного в строке подключения нет - если на уровне БД у вас правильно розданы гранты и денай :) В mssql в отличие от oracle есть deny. Более того необязательно все делать на ХП, есть еще вью. Забираем доступ на таблицы. пишем вью с фильтрами и оля-оля, RLS в чистом виде. 2. Строка соединения может быть не sql авторизацией, а с windows. Еще более удобно. Если вас парит что пользователь вообще что-то вводит при запуске ПО. 3. В oracle есть классная вещь RLS (policies) - чтобы свой велик не придумывать как в mssql. 4. Под 3-х звенкой еще можно понимать работу через web сервисы по https - чем не защита. И никаких sql injection там не будет - если с умом делать. Пришел пакет, обработали своим ядром, собрали запрос параметрами! И до свидания кулцхакеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 09:59 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
Про то, что написаны АБС так, как было модно на момент создания - правда. В наши дни такие АБС имеют (как правило) сразу 2 варианта реализации и 2 и 3 звенка. В локальной сети обычно живет 2 звенка. А 3 звенку ставят для доп. офисов, если они подключаются не по собственному опто-волокну, а через интернет. Как альтернативный вариант - в таких случаях используют 2 звенку на протоколе RDP (удаленный рабочий стол терминал-сервера) Это все как есть, по факту. А как лучше - это уже другой вопрос. Я за 2 венку, если интересно мое мнение. Аргументы повторять не буду, здесь уже высказывались. Добавлю, только " quod licet jovi non licet bovi " При наличии должного уровня квалификации разработчика 2 звенка - достаточно безопасное решение. Начинающие разработчики, особенно если они плохо знакомы с SQL сервером, - своим неумелым использованием технологии могут дискредитировать сам метод. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 10:14 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
Petro123alexeyvg, в 3-х звенке нет независимых уровней.У вас нет. Я видел много таких проектов. Petro123 "У семи нянек, дитя без глазу" Это классика усиления защиты, успешно используется много тысяч лет, в ИТ по понятным причинам последние десятилетия. Ничего плохого в такой практике не вижу, кроме, конечно, увеличения затрат. Petro123ORM в 3-х хвенке на ХП не пишут.При чём тут ОРМ??? Мы про него не говорили. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 10:29 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
alexeyvg, - чистый MVC тоже классика, однако, в чистом виде.... - 3-х звенка без ORM на AppServer? Ну..ну ЗЫ. мы про архитектуру. Я хочу сказать, что нету универсальных решений (3 забора - лучше) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 10:47 |
|
2-х звенка vs. 3-х звенка и безопасность
|
|||
---|---|---|---|
#18+
iscrafmпростой пример двойного барьера и почему это безопасней... ... Второй барьер - на твой телефон приходит sms с единоразовым паролем. И всё это имеет прямое и непосредственное отношение к трёхзвенке hey_123а как трехзвенку можно сделать менее надежной чем двухзвенка? Вот уж для этого стараться не надо :) Больше компонент, сложнее схема взаимодействия - следовательно, уже заведомо менее надёжна при прочих равных. Больше мест потенциальных дырок. Уже одно только фактическое отключение безопасности СУБД из-за использования пула соединений - что является характеристикой подавляющего большинства трёхзвенок - мягко говоря, не только рушит пресловутый "второй барьер", но и зачастую оставляет только нииииизенький заборчик. hey_123Либо наоборот надежнее? Анекдот про Неуловимого Джо помните? Дырки в СУБД ежедневно в течение многих лет ищут сотни, а то и тысячи людей. Дырки в Васиной прикладухе будут искать один-два человека пару раз по несколько дней, вряд ли больше. Таким образом, если Вася соображает в безопасности, педантичен, аккуратен и не оставил очевидных дыр, всякие тонкие щели - которые в безопасности широко распространённого софта рано или поздно найдут и опишут - в случае его СуперКрутойАптечнойСистемыУрюпинска останутся девственны. Опять же, СУБД Вы можете бесплатно скачать и до посинения искать дыры у себя на компьютере, анализируя её со всех сторон, а откуда Вы добудете на исследование инсталляцию Васи? hey_123Это если временно обстрагироваться от дыр в самой СУБД. По сути ведь разница в наличии/отсутствии прямого соединения, и все. Если есть косячная ХП, позволяющая скажем sql injection, то как тут 3-х звенка поможет/помешает? Точно так-же параметр просто передастся через промежуточное звено и уйдет в базу. Может и помочь, и помешать. Скажем, если типичная тупая трёхзвенка просто транслирует вызовы с AS в DB, то за счёт пула соединений код injection будет выполнен не с правами вызывающего пользователя (= минимальными), а с правами суперпользователя. Как следствие, трёхзвенка будет хуже. С другой стороны, Вася вполне может прикрутить к классу "вызыватель хранимки" в AS проверку строковых параметров, это делается один раз и достаточно надёжно накрывает все будущие модификации, в отличие от хранимок, где надо проверять каждый входной параметр (и где заведомо кто-то где-то забудет). hey_123На самом деле пожалуй приведенный вами пример про оракл является аргументом за трехзвенку. Безусловно. Вопрос только в том, что в "ораклах" таких багов на несколько порядков меньше, чем у Васи Криворучкина. Поэтому и есть баланс: в RDBMS багов меньше, но ищут их тщательнее и проблем от найденных больше; у Васи багов полная тележка, но кто будет их толком искать? Что безопаснее - соответственно, вопрос неочевидный, в разных случаях по-разному. hey_123Хотя конечно и с натяжкой, во-первых такие баги надо знать, а как только они становяться известными их фиксят, Вообще-то их стараются фиксить до того, как они станут известными. Выпускают патч, и тогда оповещают пользователей - мол, установите, а то есть критическая угроза безопасности. Но вопрос в том, кто первый найдёт такую дыру - если "злой" хакер, то он может весьма выгодно приватно продать такое знание. hey_123 во вторых мало-ли какие баги есть которые позволят получить sysdba и вообще без права на коннект. Ну, таких действительно мало, если говорить о серьёзном софте. Вот такие баги - характерная черта как раз Васиных поделок. В нормальном софте обычно надо очень постараться, по крохам набирая права - имея коннект, получить чуть больше, оттуда пролезть чуть дальше, оттуда ещё дальше, и оттуда может наконец-то удастся добраться до дырки, дающей полный доступ. Посмотрите сводки по найденным проблемам безопасности - там типичное сообщение "пользователь, имеющий право на А, мог незаконно получить доступ к Б". hey_123А вот от ХП это вроде не должно зависеть, как тут 3-е звено влияет? Ну как... поймаю я куку от соседа, и никакие ХП уже не спасут, вот так и зависит hey_123Да. Тем более все равно этот пароль прослушать можно при желании Это уже отдельная тема, которую надо закрывать. Но в любом случае, прослушивание "пароля сервера" куда опаснее. Правда, если AS и DB на одной машине, то пароль не обязан светиться в сети. Правда, это убивает идею дешёвой кластеризации, являющуюся одним из аргументов за трёхзвенки. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 10:48 |
|
|
start [/forum/topic.php?fid=33&msg=37162990&tid=1547650]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
111ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 225ms |
0 / 0 |