Причины популярности бессерверных вычислений и новые подходы к защите данных

Бессерверные вычисления — это метод предоставления серверных услуг на основе фактического использования сервисов. Бессерверный провайдер позволяет пользователям писать и развёртывать код, не беспокоясь о базовой инфраструктуре. Компания, которая получает бэкенд-услуги от бессерверного поставщика, платит по факту за используемые ресурсы и не должна резервировать и оплачивать фиксированную пропускную способность или количество серверов, поскольку услуга автоматически масштабируется. Конечно, для предоставления клиенту бессерверных вычислений используются физические серверы, но разработчикам нет необходимости думать об их конфигурации, производительности, ядрах, памяти и прочем. На заре интернета любой, кто хотел создать веб-приложение, должен был физически владеть оборудованием, необходимым для запуска сервера. Это было дорого и неудобно, потому что оборудование требовало много места. Затем пришли облачные вычисления, когда нужное количество серверов или часть серверного пространства можно было арендовать в облаке.

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

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

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

Бессерверные вычисления (serverless) и «функция как сервис» (FaaS) являются горячими терминами в мире архитектуры ПО. Достаточно сказать, что все три крупнейших облачных провайдера (Amazon, Microsoft и Google) вкладывают в serverless значительные средства.

Но что именно представляют собой бессерверные вычисления? Кроме того, в чем разница между serverless и FaaS? Самое главное, насколько бессерверные вычисления безопасны, и насколько в этой архитектуре защищены ваши данные?

Вот что вам нужно знать о serverless и FaaS и о том, как обеспечить безопасность ваших данных в этих средах.

Что такое serverless

Serverless — это модель разработки, ориентированная на облака, которая позволяет предприятиям быстрее создавать приложения, устраняя необходимость в управлении инфраструктурой. При использовании бессерверных приложений облачный провайдер автоматически выделяет и масштабирует инфраструктуру, необходимую для выполнения кода, и управляет ею. Термин «бессерверные вычисления» может ввести в заблуждение. Он не означает вычисления без компьютера. Он говорит о том, что вычислительная мощность может быть использована без явного выделения сервера пользователям облака.

Задачи, связанные с выделением инфраструктуры и управлением ею, абстрагируются от пользователя облака. Провайдер выполняет рутинную работу по выделению, поддержке и масштабированию серверной инфраструктуры, позволяя пользователям облака сосредоточиться только на бизнес-логике своего приложения. Бессерверные вычисления позволяют провайдерам монетизировать неиспользуемую инфраструктуру, а пользователям облака — быстро выполнять код без оплаты выделенной только для них виртуальной машины. Это выгодно и для провайдеров, и для клиентов.

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

Обзор бессерверной архитектуры

В бессерверной модели облачный провайдер запускает серверы и динамически распределяет их ресурсы для пользователей, которые хотят развернуть код. Бессерверные вычисления обычно делятся на две группы: «бэкэнд как сервис» (BaaS) и FaaS.

BaaS предоставляет облачным пользователям доступ к различным сервисам, а также автоматизирует работающую на сервере (backend) часть веб- или мобильного приложения и управляет ею. Облачный провайдер может предложить сервисы аутентификации и шифрования, базы данных с облачным доступом и доступ к данным об использовании. Бессерверные функции вызываются через интерфейсы прикладного программирования (API).

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

Функции должны быть спроектированы так, чтобы выполнять отдельную часть работы, быть легкими и быстро исполняемыми. В отличие от BaaS, FaaS предлагает бóльше контроля пользователям, которые создают заказные приложения, а не полагаются на библиотеку заранее написанных сервисов. Контейнеры, в которых развертываются эти фрагменты кода, отличаются следующими свойствами:

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

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

В чем причины популярности бессерверных вычислений, и каково их ценностное предложение?

Приведенная выше информация о том, что такое serverless и FaaS, дает четкое представление о различных преимуществах, которые они предоставляют организациям:

  • стоимость. Вы платите только за ту услугу, которой пользуетесь. Никаких авансовых расходов на предоставление ресурсов и никакого предварительного планирования ресурсов. Бессерверные предложения провайдеров, как правило, измеряются по требованию с помощью событийно-ориентированной исполнительной модели. В результате, когда бессерверная функция простаивает, это ничего не стоит;
  • «врожденная» масштабируемость. Масштабирование не требует усилий и управляется облачным провайдером;
  • упрощенный код. С помощью FaaS у вас есть возможность загружать по одной функции за раз или все приложение сразу;
  • быстрый выход на рынок. FaaS поддерживает итеративную разработку, позволяя быстрее запускать приложения и облегчая внесение изменений.

Преимущества FaaS в области безопасности

Существует также несколько преимуществ, связанных с безопасностью, которые можно получить в модели FaaS:

  • нет необходимости управлять исправлениями ОС. При использовании FaaS базовая платформа управляет серверами за вас, снимая необходимость в выделении, управлении и мониторинге всех запущенных серверов. Абстрагируя серверы от вас, FaaS также берет на себя ответственность за установку на них исправлений. Однако обратите внимание, что провайдеры закрывают уязвимости по собственному графику, поэтому пользователи должны быть в курсе состояния среды и условий, в которых выполняется их код;
  • краткосрочное выполнение. Одним из ключевых требований для запуска вашего кода в среде FaaS является то, что ваша функция должна быть без сохранения состояния и недолговечной. В среде FaaS вы не знаете, какой сервер назначен для запуска вашей функции. Платформа предоставляет и удаляет серверы по своему усмотрению, «уничтожая» их сразу после выполнения функции. В большинстве же атак сначала обнаруживается и используется уязвимость, а затем на целевой машине устанавливается вредоносное ПО. Оно должно работать тихо, чтобы получить как можно больше информации, что занимает некоторое время. Бессерверная платформа не дает злоумышленникам такой роскоши, как время, поскольку в большинстве сред FaaS устанавливается имеют весьма малый лимит времени на отработку функции. При многократной перезагрузке бессерверная среда устраняет любой скомпрометированный сервер. Системы без сохранения состояния и короткоживущие системы, включая все FaaS-функции, имеют меньше шансов быть скомпрометированными в любой момент времени;
  • устойчивость к атакам типа «отказ в обслуживании» (DoS). Та же масштабируемость, которая помогает справиться с хорошим спросом, может справиться и с его обратной стороной. Злоумышленники часто пытаются вывести из строя системы, провоцируя сервер на большой объем действий, требующих большого объема памяти, и максимизируя загрузку сервера, тем самым лишая легитимных пользователей возможности использования приложения. Эти DoS-атаки естественным образом срываются выделением бесконечных (как предполагается) бессерверных ресурсов. Рост запросов, будь то хороших или плохих, заставит платформу выделять больше серверов. Тем не менее, существует вопрос стоимости всех этих действий, поэтому мониторинг такой активности все равно должен осуществляться.

Недостатки и проблемы безопасности FaaS

Хотя бессерверная среда обладет огромными преимуществами, прежде чем использовать эту модель необходимо рассмотреть ее недостатки. Вот некоторые общие недостатки сред serverless/FaaS:

  • привязка к провайдеру. Построение вашего приложения на платформе FaaS может заставить вас полагаться на ее вендора и затруднить переход к другому;
  • холодный старт. Среды выполнения FaaS не находятся в режиме ожидания. Иногда возникает задержка в выполнении функции, которая может негативно повлиять на работу вашего приложения;
  • короткий срок жизни. FaaS спроектирован для масштабирования вверх и вниз в ответ на нагрузку, что обеспечивает отличную экономию затрат. Однако он не предназначен для длительных процессов, поэтому не несет для них те же стоимостные преимущества;
  • вопросы безопасности. Среды FaaS трех крупнейших провайдеров являются объектами для атак. Совсем недавно злоумышленниками была использована уязвимость Azure Functions, чтобы повысить свои привилегии и выйти из контейнера Docker, выполняющего код, на хост Docker.

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

  • расширенная поверхность атаки. Бессерверные функции потребляют данные из различных событийных источников, таких как API, очереди сообщений, облачное хранилище и т. д. Поверхность атаки программной среды состоит из всех точек, через которые неавторизованный пользователь может ввести или извлечь данные. Бессерверные системы состоят из большого количества компонентов. Новые точки входа для злоумышленников и неавторизованных пользователей добавляются с каждым новым инструментом, сервисом или платформой, интегрированными в экосистему. Каждый раз, когда ваша архитектура масштабируется и сжимается, поверхность атаки меняется. Каждый из этих различных типов источников может содержать недоверенные или контролируемые злоумышленниками входные данные;
  • безопасность серверов без сохранения состояния. Несмотря на то, что функции не сохраняют состояние, логика приложения часто требует данных. В приложении с сохранением состояния такая информация остается на машине, обрабатывающей запрос, иногда даже в памяти и на диске. Однако для сохранения функции без состояния во всех вызовах используется внешнее хранилище. Последствия для производительности из-за отсутствия данных на той же машине обычно невелики, но хранение конфиденциальных данных вне сервера имеет значительные последствия для безопасности. Данные находятся под угрозой в двух ситуациях: в процессе их передачи и когда скомпрометировано хранилище данных. Проще говоря, данные, хранящиеся за пределами машины, подвергаются большему риску, чем данные, хранящиеся внутри нее.

Как снизить риск в средах FaaS и почему безопасность, ориентированная на данные, является ключевым фактором

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

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

Более того, поскольку более 90% предприятий придерживаются гибридного подхода к рабочим нагрузкам, крайне необходима общая стратегия обеспечения безопасности данных предприятия на всех хостинг-платформах. Оно должна распространяться данные в состоянии покоя, во время транзита, во время миграции и в процессе использования.

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

Лучший способ уменьшить риск компрометации любых конфиденциальных данных — обеспечить защиту данных с помощью стандартного отраслевого шифрования на протяжении всего жизненного цикла, т. е. с момента их захвата. При использовании AWS, Azure и Google Cloud Platform ищите возможности интеграции с нативными облачными сервисами для запуска функций защиты данных в FaaS-средах. И требуйте полной поддержки как гибридных, так и мультиоблачных реализаций.

Кроме того, ищите решения, которые помогут решить следующие проблемы:

  • управление ключами без сохранения состояния. Масштабируемая, переносимая и безопасная служба управления ключами позволяет предприятиям полностью контролировать ключи шифрования данных. Генерируемые ключи должны бесшовно работать на любой платформе (как онпремис, так и в облаке), не требуя расшифровки данных при миграции между различными облачными провайдерами, регионами и т. п.;
  • защита данных в месте их захвата. Бессерверные вычисления должны предоставлять предприятиям возможность запускать защищенные рабочие нагрузки в средах FaaS. Это позволяет им защищать свои данные в момент их захвата, ограничивая тем самым любые новые проблемы безопасности, которые могут возникнуть в процессе миграции данных;
  • многофункциональные криптографические решения. Остановите свой выбор на криптографических решениях, которые не только поддерживают различные форматы защиты данных, такие как псевдонимизация, методы анонимизации типа токенизации, сохраняющие формат шифрование (FPE) и хэширование и т. д., но и позволяют использовать специфические для различных бизнес-кейсов возможности защиты данных. Благодаря многофункциональным службам криптографической диагностики, независимым от конкретных облаков, предприятия могут не только защищать свои данные в месте их захвата, но и использовать защищенные данные для выполнения последующей обработки, в том числе для анализа данных или для использования в других функциях, основанных на FaaS. FPE позволяет использовать защищенные данные без необходимости дешифровки.

Источники: https://www.itweek.ru/, https://habr.com/

Понравилась статья? Тогда поддержите нас, поделитесь с друзьями и заглядывайте по рекламным ссылкам!