воскресенье, 19 августа 2007 г.

WS-Security: начинание благое, но безопасность SOA не обеспечивает

Source: http://www.itblogs.ru/blogs/borkus/archive/2007/08/19/ws-security.aspx

Одно из основных правил программирования говорит о том, что специализированное решение в своей узкой области как правило будет лучше обобщенного. Это свойство всегда проявляется при выработке стандартов – в них закладывается либо самая общая, либо «усредненная» модель. В первом случае стандарт получается очень сложным, во втором – открывается поле для всевозможных фирменных расширений, его «улучшающих».

Примерно так обстоит дело со стандартами в области безопасности SOA. В стеке WS-* запланирована очень глобальная модель безопасности, включающая почти десяток всяких спецификаций (WS-Security, WS-Secure Conversation, WS-Trust, WS-Federation, WS-Policy, а также XML Digital Signature, Security Tokens Profiles (для SAML, Kerberos,X.509) и т. п.

Благодаря этому возникает целый комплекс очевидных проблем для SOA:
1) Не все эти стандарты реализованы одинаково во всех продуктах, что делает разные компоненты SOA несовместимыми.
2) Так как общие стандарты разрабатываются медленно, открывается поле для "частных" расширений вендоров, которые еще более снижают совместимость.

Я бы не стал писать про это статью, но на днях натолкнулся на интересное выступление на эту тему специалиста в области безопасности Брэда Хилла (http://www.isecpartners.com/files/iSEC_HILL_AttackingXMLSecurity_bh07.pdf). В почти 200-страничной презентации обстоятельно показывается, почему стек WS-S -- пока не лучший способ для обеспечения безопасности для открытых в Интернете сервисов,B2B-сервисов и внутрикорпоративных web-сервисов.

Во первых, для любых внутрикорпоративных и B2B ИТ-систем характерна более высокая степень доверия к их пользователям, и проблемы безопасности как правило решаются "не внутрикорпоративными фаерволами, а организационными мероприятиями и [в случае B2B] адвокатами". Главное, что должна обеспечить общая инфраструктура безопасности -- это протоколирование всех действий и точную идентификацию пользователей, получивших доступ к конкретной системе. Это тезис, с которым сложно не согласиться.

Но для этих задач ЛУЧШЕ всего подходит стандартный SSL, при одновременном применении _клиентского_ и северного сертификатов. В самом деле, у него есть набор явных преимуществ:

1) Он решает как задачу безопасной аутентификации (по сертификату);
2) Он защищает трафик от пользователя к системе;
3) Что еще более важно -- он совершенно ОДИНАКОВО реализован во всех системах, в том числе старых -- пяти и даже более летней давности;
4) Он покрывает 99% процентов того, что нужно для решения реальных задач.

Модель же безопасности на уровне сообщений, примененная в WS-S, не дает в этом смысле никаких преимуществ, так как опять-таки в 99% случая все, что от нее требуется -- это аутентификация пользователей. Но он также неодинаково реализован на новых и старых системах, а применение агентов-посредников тоже не всегда удобно и эффективно. Также WS-S (в конечном итоге за счет XML Digital Signature) опирается на шифрование больших объемов данных открытыми ключами – очень ресурсоемкая операция по сравнению с симметричным шифрованием в SSL. Поэтому при использовании для интеграции внутрикорпоративных систем WS-Security оказывается менее адекватен, чем SSL.

Но и _самостоятельное_ применение этого стека для интернет-бизнеса пока просто опасно. Так как WS-S задает модель безопасности на уровне сообщений, то каждый раз проектируя композитную систему, ИТ-разработчик по сути строит свой протокол безопасности не осознавая этого. Нет вопросов -- специалисты, которые в таких вещах хорошо разбираются не работают в обычных компаниях, а значит такой протокол будет почти наверняка ущербен с самого начала.

WS-Security плох тем, что для его реализации используется работа многих слоев (от XML Encryption, XML Digital Signature, Security Tokens Profiles (SAML, Kerberos, X.509), WS-Trust, WS-Federation и т.п) -- слишком много точек для потенциальной атаки, слишком сложно заставить все это скоординировано работать.

Брэд Хилл показывает в своей презентации как можно эти уязвимости использовать, какие есть стандартные "дыры" в реализации этих спецификаций, например, в XML Парсере. Эти дыры можно было бы отключить настройками, но сегодняшние продукты таких настроек не предоставляют. И в любом случае получается слишком много предположений о квалификации среднего корпоративного разработчика.

Вместе с тем, стек WS-S создает ряд бизнес-возможностей, таких, как цифровые деньги, DRM-применения, распределенная аутентификация, и транзакции, в которых участвуют много сторон. Но так как последствия для безопасности от самостоятельного использования этих протоколов пока до конца не изучены, то WS-S рекомендуется применять не самостоятельно, а вместе с отлаженной базой SSL.
//Влад Боркус, www.konnasi.ru

Published 19 августа 2007 г. 23:09 by Vlad Borkus Edit
Filed under: ,

Comments


пятница, 17 августа 2007 г.

Место виртуализации

Source: http://www.itblogs.ru/blogs/borkus/archive/2007/08/17/_1C043504410442043E04_-_3204380440044204430430043B04380437043004460438043804_.aspx

В последние дни в прессе появилось много статей по поводу слияния Citrix и компании Xen Source, производящей ПО виртуализации. Это заставило и меня выйти из спячки, чтобы вставить свои два слова.. Вообще-то я считаю направление виртуализации слегка переразрекламерированным, но есть в нем и полезное зерно. Пользу, как мне кажется могут принести несколько направлений:

1. Применение для организации виртуальных серверов в публичных бизнес-проектах. Это в первую очередь, конечно, уже широко используемый виртуальный Web-хостинг. Но возможно и множество других вариантов. Например, при наличии хороших каналов свзяи можно предложить малому бизнесу полный хостинг ряда бизнес-систем на выделенном виртуальном сервере.
Для хостера эффективнее держать один мощный сервер, поделенный на 10 виртуальных, чем десять реальных серверов, -- нагрузка будет равномернее. Следовательно, можно сэкономить на цене закупки и поддержки -- хотя только до той точки, где цена многопроцессорного сервера начинает сильно отклоняться от линейной корреляции с числом/мощностью процессоров в сторону экспоненциальной зависимости. Естественно, доступ к подобным серверам часто будет терминальным и тут как раз ясно, где выгода от альянса Citrix и Xen. При этом клиенту от виртуализации тоже хорошо -- он уверен, что его данные не увидит конкурент, а забититься о сервере не нужно. В подобном хостинге важно, что сервера, принадлежащие несвязанным между собой компаниям, являются абсолютно изолированными логически.

2. В корпорациях для систем уровня департаментов.
Здесь, однако, выигрыш от виртуализации может временами оказаться меньше, чем в публичном хостинге. В конце концов это не критические для бизнеса, работающие с большой нагрузкой, -- их _всегда_ ставят выделенный сервер. Но число и загрузку серверов уровня департамента в принципе можно оптимизировать просто путем помещения нескольких софтверных пакетов на один большой сервер, а не на несколько выделенных, т.е. это вопрос планирования ИТ. Хотя, конечно, это не всегда возможно из-за организационных заморочек крупных фирм, и не всегда желательно иметь на одной машине много программ из-за их воздействия друг на друга.
Полезно понимать, что в корпорациях сервера не изолированы, а связаны между собой доверительными отношениями, общими службами каталогов, устройствами и т.п. Это требует высокой открытости виртуального сервера для внешнего (внутрикорпоративного) мира и управления его внутренностями "снаружи". Частично проблема есть и в публичных проектах -- когда нужно подключать устройства, расположенные у клиента локально, скажем, принтер или переносной накопитель. Но там она более мелкого масштаба.

3. Распространение готовых виртуальных «устройств», по английски называемых appliance. Я считаю, что у этого направления большое будущее. Виртуальные appliances снимают кучу проблем с инсталляцией и первичной настройкой ПО. Самую большую пользу подобные устройства дают при распространении _ознакомительных_ версий сложных корпоративных программ. Уже сейчас таких пакетов десятки на сайте VMWare и это число будет расти. VMWare здесь четкий лидер, хотя и Microsoft'у есть что предложить.
Заметим, что по п.1 и 2. есть разные подходы к виртуализации. Первый -- это тот, что предлагает VMWare, Microsoft -- установка эмулятора под определенной ОС и эмуляция "гостевой ОС" в рамках обычного системного процесса. Полная эмуляция аппаратной платформы -- довольно сложная задача и здесь много разных "засад", поэтому результаты работы одной и той же комбинации ОС и прикладного ПО под VMWare и на "реальном железе" могут быть разными. Хотя при этом легче создавать виртуальные appliance.
Второй путь -- это установка ПО виртуализации ВМЕСТО операционной системы. Это ПО (паравиртуализация) является брокером между гостевыми ОС и нижележащими устройствами. Гостевые ОС при этом получают более низкий уровень привилегий, нежели тот, что им положен по "статусу ОС".
Это как раз тот путь, который исповедует Xen Hypervisor, SWSoft Vituozzo, SWSoft Parallels (на десктопе и сервере) и присмотрела для себя на будущее Microsoft в продукте Windows Hypervisor. Эффективнее всего подобную виртуализацию делать, если на всех виртуальных серверах крутится одна ОС. Тогда необходимо минимум эмуляции, а стало быть минимален и перерасход процессорных ресурсов. В этом смысле более потенциально производительным является продукт SWSoft Vituozzo.
В системе, где гостевые ОС различны (даже если это просто версии Windows) для надежноcти и скорости работы эмуляторов и паравиртуализаторов нужна поддержка со стороны процессоров, и современные процессоры Intel и AMD эту поддержку предоставляют. Но еще нужна и некоторая поддержка со стороны гостевой операционной системы...хотя в новых версиях Linux, Windows, Solaris она уже имеется. Конечно, в реальной жизни сложности остаются.
Теоретически подход паравиртуализации позволяет вплотную приблизить производительность виртуальной ОС к производительности лежащего в ее основе железа. Дискуссию на тему производительности можно, например, найти в документах фирмы Xen Source ( http://www.xensource.com/Documents/hypervisor_performance_comparison_1_0_5_with_esx-data.pdf .Вообще у этой компании интереснейший white papers, которые рекомендую почитать всем, кто интересуется темой.)
Интересным результатом является то, что на основных задачах производительность составляла от 80 до 100% производительности исходной аппаратной платформы. На мой взгляд это поразительные достижения средств виртуализации, хотя я и верю в них с трудом.
//Влад Боркус
Published 17 августа 2007 г. 1:13 by Vlad Borkus
Filed under:

Comments



среда, 15 августа 2007 г.

Недоделанный стандарт XQuery

Source: http://www.itblogs.ru/blogs/borkus/archive/2007/08/15/_1D04350434043E04340435043B0430043D043D044B043904_-_4104420430043D043404300440044204_-XQuery.aspx

Прочитал на неделе IBM Red Book, посвященный работе с XML в СУБД DB2. Хотя качество этих книг в последнее время падает -- их пишут коллективы авторов, редактура слабая, что приводит к большому числу повторов, -- эти книги все еще интересны и познавательны.

DB2, как известно, очень хорошая СУБД. Я в нее «влюбился» еще лет десять назад просто за программы инсталляции и администрирования -- все было настолько удобно по сравнению с Oracle DB, что использовать Oracle больше не хотелось.

Однако, OracleDB всегда опережала DB2 по техническим новинкам -- сначала это было более совершенная поддержка журналов транзакций, потом большее быстродействие за счет кэширования результатов запросов, потом поддержка обектно-реляционных данных и т.п. Все это появлялось и в DB2, но спустя какое-то время. DB2 просто всегда оставалась надежной, производительной и промышленной платформой, но не лидер.

Пару лет назад в нее, также с некоторым опозданием, добавили поддержку XML.

Вокруг XML-СУБД было много шума в свое время, так как они существенно снижают нагрузку на разработчика приложений. И сейчас еще встречаются статьи на тему «как важно в SOA использовать «родную СУБД», а не гибридную»  и т.п. Но интерес к ним стих, так же, как когда-то спал интерес к объектным базам.

«Чисто» XML базы в существенной степени были вытеснены гибридными решениями на базе традиционных СУБД. Вначале гибриды были совсем примитивными (позволяли только хранить строку XML в поле BLOB), но потом обросли поддержкой специальных XML-полей в таблицах и стандарта XML-запросов Xquery.

По этому пути пошла и DB2. Она позволяет смешивать в запросах как SQL-поля, так и XQuery-поля, что дает возможность извлекать данные изнури XML-документов. Скажем, если сделать запрос на языке SQL-XML, то  можно делать выборку (SELECT) одновременно по полям таблицы и XML-иерархии, и выдавать результат в виде обычной SQL-таблицы. Или, наоборот, сделать запрос XQuery и получить результат в виде документа XML.

В этих процессах есть тонкости -- можно задавать довольно сложные преобразования данных, можно проверять помещаемый в базу XML на соответствие схемам, строить смешанные виды (с ними нужно быть осторожными, т.к. XML-столбцы не будут индексироваться) -- об этом собственно и книжка.

Но, что интересно, что вся красивая картинка рушится, когда надо записывать данные в XML. Записать можно только целый документ  -- стандарт XQuery 1.0 не поддерживает записи внутрь XML, только извлечение данных. Соответственно, гибридные СУБД предлагают некоторые обходные маневры -- в том числе DB2 имеет специальную хранимую процедуру -- но все равно это уже не стандартно, да и не очень эстетично.

 //Влад Боркус

Published 15 августа 2007 г. 3:15 by Vlad Borkus
Filed under: , ,

Comments


вторник, 14 августа 2007 г.

Тяжелый редизайн

Source: http://www.itblogs.ru/blogs/borkus/archive/2007/08/14/_20043504340438043704300439043D04_-.aspx

Выходные и начало недели убил на редизайн нашего сайта (www.konnasi.ru). Не то, что бы это было крайне необходимо, но утомили регулярные жалобы пользователей на то, что сайт грузится медленно. Вообще говоря год назад нам сделали не самый плохой дизайн в не самой плохой студии, но этот дизайн был так сказать чересчур креативным. Что поделаешь -- делали друзья, которые дали скидку, но решили провести на нас эксперимент.

Страницы сайта состояли из немерянного размера таблиц степенью вложенности до 10. На страницах присутствовало до нескольких десятков картинок мелкого размера (оформление) плюс десятки прозрачных GIFов -- для выставления точных размеров клеток.

Так как страниц у нас не много, то мы пока обходимся без CMS. Но при табличном дизайне даже редкое обновление информации было просто кошмаром -- я терялся, когда искал место, куда эти данные надо вбивать, да и табличный дизайн легко разрушался при малейшей ошибке со стороны наполняющего.
В общем решили от него отказаться. Единственной альтернативой табличным заворотам на сегодня является CSS (каскадные таблицы стилей). Вот с ними-то и началась борьба. Да, они позволяют точно позиционировать любой элемент на странице, и в существенной степени разделить оформление страницы и ее содержание (что в общем-то делает и любая система управления веб-контентом, CMS). Но вот не все гладко и в этом королевстве.

Вообще-то проблемы, на которые я наехал -- классические и они перечислены на соответствующей странице Wiki, но то, что CSS «плывет» на уже мелких проектах меня неприятно удивило.

Итак, что плохо:
- Невозможно вычислять расстояния. Классический случай: пользователь поменял размер шрифта, надо передвинуть картинки. Сделать это крайне сложно.
- Невозможно задавать несколько картинок в качестве фона. Поэтому когда мне надо сделать рамку, то приходится делать несколько вложенных, каждый со своим фоном... в общем труба.
- Невозможно менять размер колонок в многоколоночном дизайне синхронным образом. Колонки независимы и каждая занимает столько место, сколько в ней есть информации...Это, например, не позволяет простым способом положить повторяющийся графический образ в качестве вертикальной границы колонки. Он повторит себя, но только до той точки, где еще есть данные!
- Крайне сложно позиционировать элемент внутри ячейки, если используется возможность «плавающих» (float) ячеек (а она используется ох как часто).
- Очень по-разному дизайн ведет себя в Internet Explorer и Firefox. Особенно, когда он посчитан в относительных единицах (em), а не пикселях.
- При сложном дизайне, который «масштабируется вместе с изменением окна браузера», возникает много вложенных тегов. Иначе говоря те же верстающие таблицы, но по иному названные.
- В общем-то очень не хватает выражений (сложения, умножения и т.п). они доступны, увы только в IE. Вроде обещают в CSS3, но пока будет поддержка в браузерах -- сто лет пройдет. Понятно, что есть еще DOM и JavaScript, но это сильные таблетки, к них хотелось бы прибегать в последнюю очередь.
И еще много чего хотелось бы, например определия границ окантовки -- скажем, чтобы линия грыницы не доходила пол символа до пересечения с другой границей... бог с этим.

Но в итоге редизайн первой страницы затянулся. И ввиду того, что я от некоторых красивостей отказываться не захотел, то его пришлось делать довольно «жестким». Например, при увеличении размера шрифта дизайн первой страницы плывет при простотре в Firefox. Простых путей обойти этот эффект я пока не придумал, хотя все думаб как прикрутить туда ячеистую структуру.
На второй странице ради CSS пришлом выкинуть много оформления, о котором, впрочем, я не жалею. Проще надо быть...

Есть во всем этом деле и позитивные моменты. Скорость загрузки страницы сократилась раз в 10, хотя остались проблемы со счетчиком «Кирилла и Мефодия» из-за доступа к которому все временами «встает». Ну а апдейт контента или там планируемое подключение CMS стало совсем простым делом.

PS. Вообще-то наткнулся на много статей по этой теме. Идет целая война сторонников табличного дизайна и сторонников CSS. Но, собcтвенно, все что в этих спорах высказывается иллюстрируется нашим сайтом. Ничего нового.

//Влад Боркус
Published 14 августа 2007 г. 23:50 by Vlad Borkus Edit
Filed under: , , [Edit Tags]

Comments


пятница, 10 августа 2007 г.

Подозрения

Source: http://www.itblogs.ru/blogs/borkus/archive/2007/08/10/19887.aspx

Недавние обыски в квартирах руководства "Евросети", офисах IBM и других компьютерных компаний заставили многих офисных работников заподозрить, что популярный жизненный принцип "главное, чтобы костюмчик сидел" по иному понимается правоохранительными органами.
//Влад Боркус. Наблюдения жизни.

Published 10 августа 2007 г. 14:19 by Vlad Borkus Edit
Filed under: