0Pricing
Cloud & IT Cert Prep · 강의

WAF 및 Lambda@Edge를 사용하는 CloudFront

일반적인 웹 공격을 차단하도록 AWS WAF를 연결하고 Lambda@Edge로 엣지에서 가벼운 요청 및 응답 변환을 실행합니다.

WAF 및 Lambda@Edge를 사용하는 CloudFront은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

AWS WAF로 CloudFront 보호하기

AWS WAF(Web Application Firewall)는 CloudFront 배포에 도달하는 HTTP/HTTPS 요청을 필터링하고 모니터링합니다. WAF Web ACL을 배포에 연결하면 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 규칙 및 규칙 그룹

WAF Web ACL에는 순서가 지정된 규칙과 규칙 그룹이 포함됩니다. 각 규칙은 요청 속성을 일치시키고 작업(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의 비율 기반 규칙은 5분 동안 각 원본 IP에서 발생한 요청 수를 계산합니다. IP가 임계값(예: 5분당 2,000개 요청)을 초과하면 비율이 다시 낮아질 때까지 WAF가 해당 IP의 추가 요청을 차단합니다. 비율 기반 규칙은 무차별 대입 공격, 자격 증명 대입 공격, 단순한 DDoS 스크래핑 공격을 방어합니다.

AWS WAF Bot Control은 트래픽을 검증된 봇(Googlebot, Bingbot), 스크래퍼, 모니터링 도구, 사람 트래픽 등의 범주로 분류하는 관리형 규칙 그룹입니다. 범주별로 서로 다른 작업을 구성할 수 있습니다. 검색 엔진 봇은 허용하고, 알 수 없는 봇에는 CAPTCHA로 검사를 요구하며, 악성 스크래퍼는 차단할 수 있습니다.

WAF 범위: CLOUDFRONT와 REGIONAL

WAF Web ACL의 범위는 CLOUDFRONT(전역, CloudFront와 함께 사용) 또는 REGIONAL(특정 리전의 ALB, API Gateway, AppSync 또는 Cognito User Pools와 함께 사용) 중 하나입니다. CloudFront 범위의 WAF ACL은 트래픽이 어디에서 발생하든 us-east-1 리전에서 생성해야 합니다. CloudFront가 해당 리전에서 관리되기 때문입니다.

이는 시험에서 자주 혼동하는 중요한 부분입니다. eu-west-1에서 WAF Web ACL을 생성한 후 CloudFront에 연결하려 하면 연결이 실패합니다. CloudFront WAF ACL은 항상 us-east-1에서 생성해야 합니다.

Lambda@Edge 소개

Lambda@Edge를 사용하면 CloudFront 이벤트에 응답하여 CloudFront 엣지 위치에서 Node.js 또는 Python Lambda 함수를 실행할 수 있습니다. 트래픽을 처리를 위해 중앙 리전으로 다시 라우팅하지 않고 사용자의 요청이 발생한 후 수 밀리초 이내에 함수가 실행됩니다.

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 이벤트에서만 실행, 컴퓨팅 시간 제한 1ms, VPC/네트워크 액세스 없음
  • Lambda@Edge: 최대 30초(Viewer) / 30초(Origin)의 실행 시간, Node.js 또는 Python 지원, 네 가지 트리거 지점 모두 지원, 네트워크 요청 가능, 요청/응답 본문에 액세스 가능

간단한 헤더 조작, URL 정규화, 캐시 키 계산에는 CloudFront Functions를 사용합니다. 네트워크 호출, 더 긴 계산 또는 원본 측 처리가 필요한 복잡한 로직에는 Lambda@Edge를 사용합니다.

Lambda@Edge 사용 사례

SAA-C03 시험에서 자주 나오는 Lambda@Edge 패턴은 다음과 같습니다.

  • 엣지에서 JWT 검증: Viewer Request 함수가 Authorization 헤더를 검증하며, 인증되지 않은 요청에는 원본에 도달하지 않고 401을 반환합니다.
  • A/B 테스트: Viewer Request가 쿠키를 통해 사용자를 A 그룹 또는 B 그룹에 할당하고, 요청을 수정하여 /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 Region에 있어야 합니다.
  • VPC를 지원하지 않습니다(VPC의 리소스에 액세스할 수 없습니다).
  • 환경 변수를 사용할 수 없습니다(함수 코드에 구성을 포함하거나 콜드 스타트 시 Parameter Store에서 가져와야 합니다).
  • Lambda Layers를 사용할 수 없습니다.
  • Viewer 이벤트 제한 시간: 5초, Origin 이벤트 제한 시간: 30초
  • 배포 패키지 크기 제한: 1MB(Viewer 이벤트) / 50MB(Origin 이벤트)

이러한 제한 사항으로 인해 Lambda@Edge는 장시간 실행되는 계산, VPC에 종속된 작업 또는 배포마다 동적 구성이 필요한 함수에는 적합하지 않습니다.

WAF + Lambda@Edge: 계층형 보안

WAF와 Lambda@Edge는 서로 다른 보안 역할을 수행하며 상호 보완적으로 작동합니다.

  • WAF: 서명 기반 공격 차단(SQL 인젝션, XSS, 알려진 악성 행위자, 요청 속도 제한)을 수행합니다. 관리형 규칙이 일반적인 공격을 자동으로 처리합니다.
  • Lambda@Edge: 사용자 지정 비즈니스 로직 보안(JWT 검증, 세션 확인, 액세스 토큰 검증)을 수행합니다. 유연하지만 개발 작업이 필요합니다.

심층 방어 아키텍처에서는 WAF가 알려진 공격 패턴을 먼저 차단하고, Lambda@Edge가 비즈니스 수준의 인증을 검증합니다. CloudFront 서명 URL/쿠키는 콘텐츠 액세스를 제한하고, OAC는 S3를 비공개로 유지합니다. 각 계층은 서로 다른 공격 유형을 독립적으로 방어합니다.

WAF 및 Lambda@Edge 모니터링

다음 도구를 사용하여 엣지 보안 계층을 모니터링할 수 있습니다.

  • WAF 로그: S3, CloudWatch Logs 또는 Kinesis Firehose에 전체 요청 로깅을 활성화하여 어떤 규칙이 일치했는지와 어떤 트래픽이 차단되었는지 확인합니다.
  • WAF 지표: CloudWatch에서 규칙별 BlockedRequests, AllowedRequests, CountedRequests를 확인합니다.
  • Lambda@Edge 로그: 함수가 실행되는 각 Region에 CloudWatch Logs 그룹이 생성됩니다. CloudWatch Insights를 사용하면 여러 Region의 로그를 조회할 수 있습니다.
  • CloudFront 실시간 로그: 즉시 분석할 수 있도록 액세스 로그를 Kinesis로 스트리밍합니다. 표준 액세스 로그는 몇 분마다 일괄 처리됩니다.

빠른 확인

이 lesson에서 다룬 AWS Solutions Architect (SAA-C03) 개념에 대한 이해도를 확인해 보세요.

lesson 요약

이 lesson에서는 다음을 배웠습니다. AWS WAF는 관리형 및 사용자 지정 규칙 그룹을 사용하여 CloudFront 엣지에서 일반적인 웹 공격을 차단합니다. Lambda@Edge는 전 세계 네 곳의 CloudFront 트리거 지점에서 사용자 지정 코드를 실행합니다. 또한 CloudFront Functions는 간단한 Viewer 측 로직을 밀리초보다 짧은 시간에 실행합니다. CloudFront용 WAF ACL은 us-east-1에서 생성해야 합니다. 다음 lesson에서는 Application, Network 및 Gateway Load Balancer를 살펴봅니다.

자주 묻는 질문

“WAF 및 Lambda@Edge를 사용하는 CloudFront” 강의는 무료인가요?

네 — “WAF 및 Lambda@Edge를 사용하는 CloudFront” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“WAF 및 Lambda@Edge를 사용하는 CloudFront”에서 뭘 배우나요?

일반적인 웹 공격을 차단하도록 AWS WAF를 연결하고 Lambda@Edge로 엣지에서 가벼운 요청 및 응답 변환을 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“WAF 및 Lambda@Edge를 사용하는 CloudFront” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. CloudFront 배포 및 오리진
  2. 캐시 동작 및 TTL 설정
  3. 서명된 URL, 서명된 쿠키 및 지리적 제한
  4. WAF 및 Lambda@Edge를 사용하는 CloudFront
← Cloud & IT Cert Prep(으)로 돌아가기