пятница, 17 декабря 2010 г.

Облако без штанов 2: Насколько безопасна концепция SaaS/IaaS?

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

И вот почему.

Хотя некоторые джентльмены от маркетинга на содержании у вендоров и обвинили меня в рефлексии по поводу первой статьи на тему Cloud Computing, я еще даже не начинал критику.

Понять вендоров очень просто. Они хотят денег. Чем больше, тем лучше.

Однако, кроме соображений производительности итп. есть еще такое соображение, как безопасность.

Безопасность в последнее время повально игнорируется. Выпячивается удобство. Которое, в ряде случаев, оборачивается удобством односторонним. Чьим удобством? Этот вопрос совершенно риторический, если дать себе труд немного задуматься.

Итак, милая концепция IaaS. Инфраструктура как сервис. И SaaS. Программное обеспечение как сервис. Что с ними в действительности не так?

Не так вот что.

А что насчет "Ваши данные как сервис"?

Давайте вернемся к истокам. Основополагающей концепцией информационной безопасности является физическая безопасность.

Которая предполагает полный доступ к данным и информационным ресурсам, полный контроль над ними и возможность контроля физического доступа к ресурсам.

Я не случайно выделил все три пункта. Их выполнение возможно (при соблюдении ряда хорошо отработанных и известных принципов) в одном и только одном случае: ваша IT-инфраструктура находится под полным вашим контролем.

Да, собственная инфраструктура стоит денег. Да, вы можете сэкономить на IT-инфраструктуре, отдав ее на откуп провайдеру cloud computing. Однако вы, тем самым, фактически полностью выпускаете контроль над вашими данными из рук.

Полностью.

И еще.

Кто делает бэкап ваших данных в облаке? Провайдер? Размещая копии неведомо где и неведомо как? Вы готовы поверить на слово? Ах, вы сами делаете? А еще кто? Ах, да. Вы же этого не знаете, ваши данные и сервисы где-то там, далеко. Вы даже не видели, как выглядит ваша серверная ферма. Вы, кроме IP-адреса, вообще ничего о своей (своей?) инфраструктуре не знаете. Ладно, допустим, у вас небольшой веб-сервер, бэкап делается вами по сеточке - благо, каналы сейчас хорошие - и вы записываете его на флэшечку. А вы уверены, что больше никто не делает бэкапов ваших данных неведомо зачем неведомо куда? А если у вас терабайт в базе? Вы тоже сами резервируете его или это делает провайдер облачного сервиса?

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

Вы уверены, что в облаке все еще ВАШИ данные?

То, что этого не понимают (не хотят понимать) маркетологи - оставим на их совести. Понимать основополагающие концепции - не их работа.

Удивительно другое. Этого не понимают даже IT-специалисты.

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

(Кстати, о документах. У провайдеров CA - certification authority - есть в обязательном порядке документ, именуемый Certificate Policy Statement, в котором нам тоже предлагается поверить на слово, что при выпуске и отзыве сертификатов SSL выполняются определенные процедуры, что датацентры упомянутых CA обслуживаются и администрируются в соответствии с весьма жесткими политиками безопасности. Однако я никогда не слышал, чтобы упомянутые CA устраивали для сомневающихся экскурсии, позволяющие убедиться, что все так и есть, как написано в CPS. Да и, кроме того, как убедиться, что вам не показывают потемкинскую деревню? Это ведь совсем не то же самое, что пинком открыть дверь в собственную серверную и призвать к ответу собственного системного администратора. А, значит, все эти заявления в документах как ценные бумаги - по большей части не стоят и бумаги, на которой напечатаны. Все та же порочная концепция доверия третьим лицам. Хочешь, чтобы что-то было сделано хорошо - делай это сам.)

Горячий пример - WikiLeaks. Хотя основатель сервиса вроде бы как хакер (хакер?) и должен был понимать, что он на сайте совсем не комиксы размещает, однако умудриться засунуть свой сайт в публичное облако Amazon - это нечто. Стоило ли удивляться, что, когда по-настоящему запахло жареным, Amazon блокировал сервис по команде сверху и, разумеется, слил его данные куда следует?

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

Ах, какие возможности для шантажа, рейдерства, политического давления!

Это стоит экономии средств?

Ах, да. У господ вендоров и их маркетологов есть на этот счет особое мнение. Вы можете использовать приватные облака. Фактически, свои собственные облачные инфраструктуры. "За ваши деньги - все, что угодно".

Однако - чем это отличается от наличия собственной IT-инфраструктуры классического типа?

А ничем. Кроме красивого и модного названия "cloud computing". Плюс полный набор затрат на оборудование, питание, охлаждение, администрирование...

How much is the fish, бабка?

Вряд ли приватное облако обойдется вам дешевле существующей сейчас инфраструктуры.

Что получается в сухом остатке? Единственное преимущество IaaS - экономия на инфраструктуре - становится иллюзорным, когда на другой чаше весов находится физический доступ к вашим данным. Приватное облако - не решение, а хитрый способ вынудить вас все равно оплатить из вашего кармана переоборудование бизнеса. Не мытьем, так катанием.

Примерно как на рынке PC вендроы вынуждают к непрерывным ежегодным апгрейдам. ROI/TCO уже никого не интересует. Нормальный бизнесмен, вложив деньги в оборудование, желает этому оборудованию многие лета, чтобы оно окупилось, причем, по-возможности, неоднократно.

А в нашем случае - вы в прошлом году приобрели новые сервера? Выкиньте их. И купите собственный датацентр для приватного облака, коль скоро вас так волнует безопасность. Ах, не волнует? Ну так спишите ваше новое оборудование и отдайте нам ваши данные. В облако. В наши руки. Под нашу ответственность.

Вернемся, однако, к проблемам безопасности.

Я предвижу возражение находчивых маркетологов - "Мы найдем и предложим техническое решение нетехнической проблемы! Например, давайте, мы зашифруем ваши данные в нашем облаке, так, что даже мы не сможем их расшифровать - ключ будет только у клиента!"

Это возражение не выдерживает никакой критики.

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

Второе. Данные не могут быть зашифрованы постоянно. Для работы с ними их нужно расшифровать. Если я имею физический доступ к серверу, если я имею к нему привилегированный доступ - кто мешает мне просто получить доступ через /dev/kmem к расшифрованным данным в оперативной памяти? Да, технически можно осуществлять пошаговую расшифровку частей кода и данных непосредственно перед их выполнением или обработкой. Однако для этого нужно соответствующее ПО, которое даже сейчас проблематично во-первых, написать, а во-вторых - использовать в облаке. Ресурсов потребуется для работы такого софта очень нешуточно (а за них деньги платятся), а, кроме того, кто вам даст такой софт в облако засунуть? И, кстати - давно вы видели какую-нибудь Trusted OS или СУБД?

Третье. Закрытых систем, которые secure by design, в природе не существует. Точнее, они существуют. Но они сферические и находятся в вакууме. И они совершенно точно не используются в cloud computing.

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

Подведем итоги.

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

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

Вывод неутешителен. IaaS - мертвая концепция. На мой взгляд. Основополагающие принципы можно игнорировать (что может вам чрезвычайно дорого обойтись), но нельзя отбросить или перешагнуть.

PS. Даже сервис co-location уже не является безопасным. Сервер на co-location - уже не ваш собственный сервер и хранить на нем критические данные станет только полный недоумок. Это уже сервер провайдера. Он физически находится в руках у третьих лиц. Вот так, мальчики и девочки.