Serverless упростил запуск приложений: не нужно управлять серверами, масштабирование работает автоматически, а платить можно только за фактическое выполнение кода. Но безопасность в такой архитектуре не исчезает — она меняет форму.
Почему serverless требует отдельного подхода
В классической инфраструктуре акцент делается на защите ОС, сети и серверов. В serverless часть этой ответственности берет на себя облачный провайдер, но у команды остаются критичные зоны риска:
- код функций и его зависимости
- права доступа и IAM-политики
- секреты и переменные окружения
- API Gateway, триггеры, очереди и хранилища
- логи, мониторинг и контроль аномалий
Главная особенность: атака часто идет не на “сервер”, а через неправильные разрешения, уязвимые библиотеки или небезопасную интеграцию между облачными сервисами.
Основные риски serverless
-
⚠️ Избыточные права доступа
Функции нередко получают доступ “на всякий случай”. Если одну из них скомпрометируют, атакующий может добраться до БД, бакетов или других сервисов. -
⚠️ Уязвимые зависимости
Serverless-функции часто собираются из npm, pip и других пакетов. Один устаревший модуль может открыть путь к RCE, утечке данных или supply chain-атаке. -
⚠️ Секреты в коде и env
Токены, ключи API и пароли, оставленные в переменных окружения или репозитории, — частая причина инцидентов. -
⚠️ Слабая защита API
Если endpoint не ограничен rate limit, WAF, авторизацией и проверкой входных данных, его можно использовать для DDoS, обхода логики или инъекций. -
⚠️ Недостаточная наблюдаемость
Короткоживущие функции сложнее отслеживать. Без качественных логов и трассировки команда может поздно заметить атаку.
Лучшие практики
-
✅ Принцип минимальных привилегий
Для каждой функции задавайте только те права, которые реально нужны. Разделяйте доступ между функциями, а не используйте одну широкую роль на всё. -
✅ Храните секреты в специализированных сервисах
Используйте AWS Secrets Manager, Azure Key Vault, Google Secret Manager или аналоги. Не держите секреты в коде, CI/CD и открытых env. -
✅ Проверяйте зависимости
Подключите SCA-сканирование, контроль версий пакетов и регулярные обновления библиотек. Особенно важно отслеживать transitive dependencies. -
✅ Защищайте входные точки
Ставьте аутентификацию, авторизацию, WAF, rate limiting и строгую валидацию входных данных на API Gateway и webhook’ах. -
✅ Логируйте всё важное
Нужны централизованные логи, correlation ID, алерты по аномалиям, мониторинг ошибок и подозрительных вызовов функций. -
✅ Безопасный CI/CD
Подписывайте артефакты, ограничивайте доступ к pipeline, сканируйте IaC-шаблоны и автоматически проверяйте misconfiguration до деплоя. -
✅ Контролируйте конфигурацию облака
Ошибка в policy, bucket access или trigger settings может быть опаснее бага в коде. IaC + policy-as-code помогают снизить риск.
Что важно запомнить
Serverless Security — это не “без серверов = без проблем”. Это безопасность кода, прав доступа, конфигурации облака и всех интеграций вокруг функции. Самые частые угрозы здесь связаны не с инфраструктурой, а с misconfiguration и избыточным доверием ⚙️
👀 Посмотрите подборку каналов про IT — там много полезного по cloud, DevSecOps, backend и архитектуре.