0Pricing
AWS Solutions Architect · Урок

CloudFront с WAF и Lambda@Edge

Подключите AWS WAF для блокировки распространённых веб-атак и выполняйте лёгкие преобразования запросов и ответов на периферии с помощью Lambda@Edge.

«CloudFront с WAF и Lambda@Edge» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Защита CloudFront с помощью AWS WAF

AWS WAF (Web Application Firewall) фильтрует HTTP/HTTPS-запросы, поступающие к Вашему распределению CloudFront, и отслеживает их. Связав Web ACL WAF с распределением, Вы можете блокировать распространённые веб-атаки — внедрение SQL, межсайтовый скриптинг (XSS), вредоносных ботов и атаки из OWASP Top 10 — ещё до того, как они достигнут исходного сервера.

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

# Associate a WAF Web ACL with a CloudFront distribution
aws wafv2 associate-web-acl \
  --web-acl-arn arn:aws:wafv2:us-east-1:123456789:global/webacl/MyACL/12345 \
  --resource-arn arn:aws:cloudfront::123456789:distribution/EDFDVBD6EXAMPLE

Правила и группы правил WAF

Web ACL WAF содержит упорядоченные правила и группы правил, каждое из которых сопоставляет атрибуты запроса и выполняет действие (Allow, Block, Count, CAPTCHA). Правила проверяются в порядке приоритета; применяется действие первого совпавшего правила.

AWS предоставляет управляемые группы правил — готовые наборы правил, которые поддерживаются AWS и продавцами AWS Marketplace. Набор AWS Managed Rules - Core Rule Set охватывает OWASP Top 10 без какой-либо настройки. AWS обновляет управляемые группы правил по мере появления новых угроз, снижая операционную нагрузку.

# Create a Web ACL with AWS Managed Core Rule Set
aws wafv2 create-web-acl \
  --name MyCloudFrontACL \
  --scope CLOUDFRONT \
  --default-action Allow={} \
  --rules '[{
    "Name": "CoreRuleSet",
    "Priority": 1,
    "Statement": {
      "ManagedRuleGroupStatement": {
        "VendorName": "AWS",
        "Name": "AWSManagedRulesCommonRuleSet"
      }
    },
    "OverrideAction": {"None": {}},
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "CoreRuleSet"
    }
  }]' \
  --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=MyACL \
  --region us-east-1

Ограничение частоты запросов и управление ботами в WAF

Правила на основе частоты в WAF подсчитывают запросы от каждого исходного IP-адреса за пятиминутный интервал. Если IP-адрес превышает порог (например, 2 000 запросов за 5 минут), WAF блокирует дальнейшие запросы с этого IP-адреса, пока частота не снизится. Правила на основе частоты защищают от перебора, заполнения учётных данных и простых атак DDoS с массовым извлечением данных.

AWS WAF Bot Control — это управляемая группа правил, классифицирующая трафик по категориям: проверенные боты (Googlebot, Bingbot), сборщики данных, инструменты мониторинга и трафик от людей. Для каждой категории можно настроить отдельное действие: разрешать ботам поисковых систем, проверять неизвестных ботов с помощью CAPTCHA и блокировать вредоносных сборщиков данных.

Область действия WAF: CLOUDFRONT и REGIONAL

Web ACL WAF имеют область действия CLOUDFRONT (глобальная, для использования с CloudFront) или REGIONAL (для использования с ALB, API Gateway, AppSync или пулами пользователей Cognito в определённом регионе). Web ACL с областью CLOUDFRONT необходимо создавать в регионе us-east-1 независимо от места возникновения трафика, поскольку CloudFront управляется из этого региона.

Это важная экзаменационная ловушка: если создать Web ACL WAF в eu-west-1 и попытаться связать его с CloudFront, связывание завершится ошибкой. Всегда создавайте Web ACL WAF для CloudFront в us-east-1.

Введение в Lambda@Edge

Lambda@Edge позволяет запускать функции Lambda на Node.js или Python в периферийных местоположениях CloudFront в ответ на события CloudFront. Функции выполняются через миллисекунды после запроса пользователя, без перенаправления трафика обратно в центральный регион для обработки.

Функции Lambda@Edge развёртываются в регионе us-east-1, но автоматически реплицируются во все периферийные местоположения CloudFront по всему миру. Это означает, что Ваш код выполняется максимально близко к пользователю, обеспечивая персонализацию, аутентификацию и A/B-тестирование на периферии с минимальной дополнительной задержкой.

Точки запуска Lambda@Edge

Функции Lambda@Edge могут перехватывать запросы и ответы CloudFront в четырёх точках жизненного цикла:

  • Viewer Request: после получения CloudFront запроса от пользователя и до проверки кэша — используется для аутентификации, перенаправлений и изменения заголовков
  • Origin Request: после промаха кэша и до передачи запроса исходному серверу — используется для переписывания URL и добавления пользовательских заголовков к запросу к исходному серверу
  • Origin Response: после получения ответа от исходного сервера и до его кэширования — используется для добавления заголовков безопасности и изменения ответа
  • Viewer Response: до отправки CloudFront ответа пользователю — используется для добавления или изменения заголовков ответа

Lambda@Edge и CloudFront Functions

AWS предлагает два варианта вычислений на периферии с разными компромиссами:

  • CloudFront Functions: выполнение менее чем за миллисекунду, только JavaScript, крайне низкая стоимость (примерно 1/6 цены), работают только для событий Viewer Request и Viewer Response, ограничение времени вычислений — 1 мс, отсутствие доступа к VPC и сети
  • Lambda@Edge: до 30 секунд времени выполнения (Viewer) / 30 секунд (Origin), Node.js или Python, все четыре точки запуска, возможность выполнять сетевые запросы и доступ к телам запросов и ответов

Используйте CloudFront Functions для простого изменения заголовков, нормализации URL и вычисления ключа кэша. Используйте Lambda@Edge для сложной логики, требующей сетевых вызовов, длительных вычислений или обработки на стороне исходного сервера.

Сценарии использования Lambda@Edge

Распространённые шаблоны использования Lambda@Edge на экзамене SAA-C03:

  • Проверка JWT на периферии: функция Viewer Request проверяет заголовок Authorization; неавторизованные запросы получают ответ 401, не достигая исходного сервера
  • A/B-тестирование: Viewer Request назначает пользователей в группу A или B (с помощью файла cookie) и изменяет запрос для получения /a/page.html или /b/page.html
  • Переписывание URL: Origin Request заменяет удобные URL фактическими путями к файлам в S3
  • Динамическое изменение размера изображений: Origin Request формирует запрос к Lambda для обработки изображений, а Origin Response кэширует изменённое изображение
  • Заголовки безопасности HTTP: Viewer Response добавляет заголовки CSP, HSTS и X-Frame-Options

Ограничения Lambda@Edge

У Lambda@Edge есть несколько ограничений по сравнению со стандартной Lambda:

  • Функции должны находиться в регионе us-east-1
  • Нет поддержки VPC (невозможно получить доступ к ресурсам в VPC)
  • Нет переменных окружения (встраивайте конфигурацию в код функции или загружайте её из Parameter Store при холодном запуске)
  • Нельзя использовать слои Lambda
  • Время ожидания события от пользователя: 5 секунд; время ожидания события от источника: 30 секунд
  • Ограничение размера пакета развёртывания: 1 МБ (события от пользователя) / 50 МБ (события от источника)

Из-за этих ограничений Lambda@Edge не подходит для длительных вычислений, операций, зависящих от VPC, и функций, которым требуется динамическая конфигурация для каждого развёртывания.

WAF + Lambda@Edge: многоуровневая защита

WAF и Lambda@Edge выполняют разные задачи безопасности и дополняют друг друга:

  • WAF: блокировка атак на основе сигнатур (внедрение SQL, XSS, известные злоумышленники, ограничение частоты запросов) — управляемые правила автоматически обрабатывают распространённые атаки
  • Lambda@Edge: пользовательская логика безопасности на уровне бизнес-правил (проверка JWT, проверка сеанса, проверка токена доступа) — гибкое решение, требующее разработки

Архитектура с эшелонированной защитой: сначала WAF блокирует известные шаблоны атак; затем Lambda@Edge проверяет аутентификацию на уровне бизнес-логики; подписанные URL и файлы cookie CloudFront ограничивают доступ к содержимому; OAC сохраняет конфиденциальность S3. Каждый уровень независимо предотвращает отдельный класс атак.

Мониторинг WAF и Lambda@Edge

Контролируйте уровень защиты на периферии с помощью следующих инструментов:

  • Журналы WAF: включите полное журналирование запросов в S3, журналы CloudWatch или Kinesis Firehose, чтобы видеть, какие правила срабатывают и какой трафик блокируется
  • Метрики WAF: BlockedRequests, AllowedRequests, CountedRequests для каждого правила в CloudWatch
  • Журналы Lambda@Edge: группы журналов CloudWatch создаются в каждом регионе, где выполняется функция; используйте CloudWatch Insights для запросов по нескольким регионам
  • Журналы CloudFront в реальном времени: передавайте журналы доступа в Kinesis для немедленного анализа (в отличие от стандартных журналов доступа, которые накапливаются пакетами каждые несколько минут)

Быстрая проверка

Проверьте понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что AWS WAF блокирует распространённые веб-атаки на периферии CloudFront с помощью управляемых и пользовательских групп правил, Lambda@Edge глобально выполняет пользовательский код в четырёх точках запуска CloudFront, а CloudFront Functions обеспечивают выполнение за доли миллисекунды для простой логики на стороне пользователя. ACL WAF для CloudFront необходимо создавать в us-east-1. Далее мы рассмотрим балансировщики нагрузки Application, Network и Gateway.

Часто задаваемые вопросы

Урок «CloudFront с WAF и Lambda@Edge» бесплатный?

Да — полный текст урока «CloudFront с WAF и Lambda@Edge» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «CloudFront с WAF и Lambda@Edge»?

Подключите AWS WAF для блокировки распространённых веб-атак и выполняйте лёгкие преобразования запросов и ответов на периферии с помощью Lambda@Edge. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «CloudFront с WAF и Lambda@Edge»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Дистрибутивы и источники CloudFront
  2. Поведение кэша и настройки TTL
  3. Подписанные URL, подписанные файлы cookie и географические ограничения
  4. CloudFront с WAF и Lambda@Edge
← Назад к AWS Solutions Architect