개요

지역 차단 정책은 수출 금지 국가와 관련된 규정을 준수하거나 웹 애플리케이션에 스트리밍 권한이 없는 국가의 비디오 스트리밍을 차단하는 등 다양한 이유로 웹 애플리케이션에 구현됩니다.

일반 사용 사례

지역 차단은 CloudFront의 기본 지리적 제한, 엣지 함수 또는 AWS WAF를 사용하여 구현할 수 있습니다. 각 방법은 서로 다른 매칭 세분성, 사용자 지정 가능한 로직 및 가격 수준을 제공합니다. CloudFront가 먼저 지리적 제한 규칙을 평가한 다음 AWS WAF가 지리적 매칭 규칙을 평가하고, 마지막으로 엣지 함수가 실행되어 코드의 지역 차단 로직을 평가한다는 점을 고려하면 두 방법을 결합할 수도 있습니다. 참고로 CloudFront와 AWS WAF는 타사 데이터베이스를 사용하여 사용자의 위치를 결정합니다. IP 주소와 국가 간의 매핑 정확도는 리전에 따라 다릅니다.

AWS 엣지 서비스를 사용한 지역 차단

CloudFront의 간단한 글로벌 지역 제한

CloudFront 지리적 제한을 사용하여 추가 비용 없이 배포 수준에서 국가를 제한할 수 있습니다. CloudFront 배포에서 수신한 모든 요청에 적용되는 특정 국가 집합을 허용하거나 차단할 수 있습니다. 구성된 지리적 제한에 따라 제한을 받는 최종 사용자는 CloudFront로부터 403 Forbidden 응답을 받게 됩니다. CloudFront의 사용자 지정 오류 페이지를 사용하여 친숙한 오류 페이지를 제공할 수 있습니다.

CloudFront Functions를 사용한 고급 지역 차단 로직

최종 사용자 요청 이벤트에 구성된 CloudFront Functions를 사용해 JavaScript를 사용하여 고급 지역 차단 로직을 구현합니다. CloudFront Functions는 특정 CloudFront 캐시 동작(예: /api/* 경로)과 함께 세부화하여 사용할 수 있으며, 코드에서 로직을 더 세분화하고 권한 부여와 같은 다른 액세스 제어 로직과 결합할 수 있습니다. CloudFront Functions에서 지역 기반 로직을 구현하려면 함수가 연결된 동일한 CloudFront 캐시 동작에 연결된 오리진 요청 정책에 필요한 CloudFront 헤더(예: CloudFront-Viewer-Country 또는 CloudFront-Viewer-Country-Region)를 나열할 수 있도록 허용해야 합니다.

아래 샘플 CloudFront Function는 우크라이나의 도네츠크(14) 또는 루한스크(9) 리전의 최종 사용자를 차단합니다.

function handler(event) {
  var request = event.request;
  var country = request.headers['cloudfront-viewer-country'];
  var region = request.headers['cloudfront-viewer-country-region'];

  if (country && country.value === 'UA' && region && (region.value === '9' || region.value === '14')) {
    return {
      statusCode: 403,
      statusDescription: 'Forbidden',
    };
  }
  return request;
}

리소스

이 페이지의 내용이 도움이 되었나요?