Serverless в производственной среде:
7 лучших практик для DevOps

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

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


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


Варианты использования Serverless в производстве

Вот краткий обзор бессерверных технологий для четырех вариантов использования.

1. Микросервисы.

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


2. Устройства интернета вещей.

Бессерверные функции могут обрабатывать данные IoT по мере их создания, что позволяет анализировать и принимать решения в реальном времени.


3. Мультимедийная обработка.

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


4. API для мобильных и веб-приложений.

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



Варианты использования Serverless в производстве

1. Контролируйте бессерверную среду

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


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


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



2. Внедрите аутентификацию

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


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

3. Организуйте безопасность с помощью шлюзов API

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


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


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


4. Назначьте соответствующие роли функциям

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


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


5. Убедитесь, что зависимости безопасны

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


Если вы отслеживаете зависимости в бессерверных приложениях и управляте ими, то можете гарантировать, что они используются согласованным и контролируемым образом, снижая риск конфликтов или проблем с совместимостью.


6. Дезинфицируйте входные данные, чтобы предотвратить инъекционные атаки

Предоставленные пользователем данные могут представлять угрозу безопасности. Очистка входных данных событий помогает предотвратить инъекционные атаки — они происходят, когда злоумышленник вводит вредоносный код или данные в бессерверную функцию через входные данные событий.


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


Очистка данных — это лишь один аспект стратегии комплексной защиты, которая включает в себя внедрение множества средств контроля безопасности для защиты от атак. Также важно включить экранирование данных для баз данных SQL и NoSQL. Аналогично, данные, предоставляемые событиями, не должны использоваться для оценки кода во время выполнения или запуска системных процессов.


7. Защитите данные при передаче

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

  • Используйте HTTPS
  • Внедрите проверку SSL-сертификата
  • Включите подписанные запросы

Заключение

Бессерверная работа в производственной среде требует тщательного планирования. Следуя рекомендациям, описанным здесь, команды DevOps могут снизить риск инцидентов безопасности и обеспечить надежность и доступность своей бессерверной архитектуры. К ним относятся:

  • Мониторинг бессерверной среды
  • Реализация аутентификации
  • Развертывание шлюзов API
  • Создание подходящих ролей для каждой функции
  • Защита зависимостей приложений
  • Очистка входных данных событий
  • Защита и проверка данных при передаче

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

Если вы хотите довериться профессионалам, то приходите к нам за помощью — мы создаём высокопроизводительные системы, повышаем стабильность существующего программного обеспечения, отслеживаем бизнес-метрики и улучшаем системы мониторинга, а также обеспечиваем техническую поддержку в режиме 24/7. Работаем и с DevOps, и с DevSecOps
Не забывайте подписываться на наш канал в ТГ, где мы публикуем технические разборы и новости рынка.