지리적 일치 규칙 문 - AWS WAF, AWS Firewall Manager, 및 AWS Shield Advanced

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

지리적 일치 규칙 문

지리적 또는 지역 일치 문을 사용하여 오리진 국가 및 리전을 기반으로 웹 요청을 관리할 수 있습니다. 지역 일치 문은 웹 요청에 오리진 국가 및 리전을 나타내는 레이블을 추가합니다. 명령문 기준이 요청과 일치하는지 여부에 관계없이 이러한 레이블을 추가합니다. 또한 지역 일치 문은 요청의 오리진을 기준으로 일치를 수행합니다.

지역 일치 문 사용 방법

다음과 같이 국가 또는 리전 일치에 지역 일치 문을 사용할 수 있습니다.

  • 국가 - 지역 일치 규칙을 단독으로 사용하면 오리진 국가만을 기준으로 하여 요청을 관리할 수 있습니다. 규칙 문을 국가 코드와 비교하여 일치시킵니다. 오리진 국가 레이블과 일치하는 레이블 일치 규칙을 사용하여 지역 일치 규칙을 따를 수도 있습니다.

  • 리전 - 지역 일치 규칙 다음에 레이블 일치 규칙을 사용하여 오리진 리전을 기준으로 요청을 관리합니다. 지역 일치 규칙만으로는 리전 코드와 일치시킬 수 없습니다.

레이블 일치 규칙 사용에 대한 자세한 내용은 레이블 일치 규칙 문AWS WAF 웹 요청의 레이블 섹션을 참조하세요.

지역 일치 문 작동 방식

geo match 문을 사용하여 각 웹 요청을 다음과 같이 AWS WAF 관리합니다.

  1. 요청의 국가 및 지역 코드를 AWS WAF 결정합니다. — IP 주소를 기반으로 요청의 국가 및 지역을 결정합니다. 기본적으로 는 웹 요청 출처의 IP 주소를 AWS WAF 사용합니다. 예를 들어, 규칙 설명 설정에서 전달된 IP 구성을 AWS WAF 활성화하여 대체 요청 헤더의 IP 주소를 사용하도록 지시할 수 있습니다. X-Forwarded-For

    AWS WAF MaxMind GeoIP 데이터베이스를 사용하여 요청 위치를 결정합니다. MaxMind 국가 및 IP 유형과 같은 요인에 따라 정확도가 달라지지만 국가 수준에서 매우 높은 데이터 정확도를 보고합니다. 에 대한 MaxMind 자세한 내용은 MaxMind IP 지리적 위치를 참조하십시오. GeoIP 데이터가 잘못되었다고 생각되면 GeoIP2 데이터 MaxMind 수정에서 Maxmind에 수정 요청을 제출할 수 있습니다.

    AWS WAF 국제 표준화 기구 (ISO) 3166 표준의 알파-2 국가 및 지역 코드를 사용합니다. 다음 위치에서 코드를 찾을 수 있습니다.

    • ISO 웹사이트의 ISO 온라인 브라우징 플랫폼(OBP)에서 국가 코드를 검색할 수 있습니다.

    • 위키백과에서는 ISO 3166-2에 국가 코드가 나열되어 있습니다.

      국가의 리전 코드는 URL https://en.wikipedia.org/wiki/ISO_3166-2:<ISO country code>에 나열되어 있습니다. 예를 들어 미국의 리전은 ISO 3166-2:US이고 우크라이나의 경우 ISO 3166-2:UA입니다.

  2. 요청에 추가할 국가 레이블 및 리전 레이블 결정 - 레이블은 지역 일치 문에서 원본 IP를 사용하는지 아니면 전달된 IP 구성을 사용하는지를 나타냅니다.

    • 오리진 IP

      국가 레이블은 awswaf:clientip:geo:country:<ISO country code>입니다. 예를 들어, 미국의 경우 awswaf:clientip:geo:country:US입니다.

      리전 라벨은 awswaf:clientip:geo:region:<ISO country code>-<ISO region code>입니다. 예를 들어, 미국의 오리건인 경우 awswaf:clientip:geo:region:US-OR입니다.

    • 전달된 IP

      국가 레이블은 awswaf:forwardedip:geo:country:<ISO country code>입니다. 예를 들어, 미국의 경우 awswaf:forwardedip:geo:country:US입니다.

      리전 라벨은 awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>입니다. 예를 들어, 미국의 오리건인 경우 awswaf:forwardedip:geo:region:US-OR입니다.

    요청의 지정된 IP 주소에 해당 국가 또는 리전 코드를 사용할 수 없는 경우 AWS WAF 는 레이블에서 값 대신 XX를 사용합니다. 예를 들어, 레이블 awswaf:clientip:geo:country:XX는 국가 코드를 사용할 수 없는 클라이언트 IP용이고, awswaf:forwardedip:geo:region:US-XX는 국가는 미국이지만 리전 코드를 사용할 수 없는 전달된 IP용입니다.

  3. 규칙 기준에 따라 요청 국가 코드 평가

지역 일치 문은 일치하는 항목을 찾았는지 여부와 관계없이 검사하는 모든 요청에 국가 및 리전 레이블을 추가합니다.

참고

AWS WAF 규칙의 웹 요청 평가 끝에 레이블을 추가합니다. 따라서 지역 일치 명령문의 레이블에 사용하는 모든 레이블 일치는 지역 일치 문이 포함된 규칙과는 별도의 규칙에 정의되어야 합니다.

리전 값만 검사하려는 경우 Count 작업과 단일 국가 코드 일치, 리전 레이블에 대한 레이블 일치 규칙을 포함하는 지역 일치 규칙을 작성할 수 있습니다. 이 접근 방식에서도 지역 일치 규칙을 평가하려면 국가 코드를 입력해야 합니다. 사이트에 대한 트래픽 소스가 될 것 같지 않은 국가를 지정하여 로깅과 계수 지표를 줄일 수 있습니다.

CloudFront 배포 및 CloudFront 지역 제한 기능

CloudFront 배포의 경우 CloudFront 지역 제한 기능을 사용하는 경우 이 기능은 차단된 요청을 전달하지 않는다는 점에 유의하세요. AWS WAF허용된 요청을 로 전달합니다. AWS WAF지역 및 지정할 수 있는 기타 기준에 따라 요청을 차단하려면 지역 일치 명령문을 사용하고 AWS WAF 지역 제한 기능은 사용하지 마세요. AWS WAF CloudFront

지역 일치 문 특성

중첩 가능 – 이러한 문 유형을 중첩할 수 있습니다.

WCU – 1WCU.

설정 - 이 명령문은 다음 설정을 사용합니다.

  • 국가 코드 — 지역 일치 여부를 확인하기 위해 비교할 국가 코드 배열. 이러한 코드는 ISO 3166 국제 표준의 alpha-2 국가 ISO 코드에서 나온 2자리 국가 코드(예: ["US","CN"])여야 합니다.

  • (선택 사항) 전달된 IP 구성 — 기본적으로 웹 요청 출처의 IP 주소를 AWS WAF 사용하여 원산지를 결정합니다. 또는 HTTP 헤더에 전달된 IP를 대신 사용하도록 규칙을 구성할 수도 있습니다. X-Forwarded-For AWS WAF 헤더의 첫 번째 IP 주소를 사용합니다. 이 구성을 사용하면 헤더에 잘못된 형식의 IP 주소가 있는 웹 요청에 적용할 폴백 동작도 지정할 수 있습니다. 폴백 동작은 요청에 대한 일치 결과를 일치하거나 일치하지 않음으로 설정합니다. 자세한 정보는 전달된 IP 주소을 참조하세요.

이 규칙 문을 찾을 수 있는 위치
  • 콘솔의 규칙 빌더요청 옵션에서 출처 국가를 선택합니다.

  • APIGeoMatchStatement

예제

지리적 일치 문을 사용하여 특정 국가 또는 리전의 요청을 관리할 수 있습니다. 예를 들어 특정 국가를 차단하되 해당 국가의 특정 IP 주소 집합에서 요청을 허용하려면 유사 코드에 나와 있는 대로 작업을 Block로 설정하고 다음과 같은 중첩된 문을 사용하여 규칙을 생성할 수 있습니다.

  • AND 명령문

    • 차단하려는 국가를 나열하는 지역 일치 문

    • NOT 명령문

      • 다음을 통해 허용하려는 IP 주소를 지정하는 IP 집합 문

또는 특정 국가의 일부 리전을 차단하면서도 해당 국가의 다른 리전에서 들어오는 요청은 계속 허용하려는 경우 먼저 작업을 Count로 설정한 상태로 지역 일치 규칙을 정의할 수 있습니다. 그런 다음 추가된 지역 일치 레이블과 일치하는 레이블 일치 규칙을 정의하고 필요에 따라 요청을 처리합니다.

다음 의사 코드는 이 접근 방식의 예를 설명합니다.

  1. 차단하려는 리전이 있지만 작업이 계산으로 설정된 국가를 나열하는 지역 일치 문. 이 문은 일치 상태에 관계없이 모든 웹 요청에 레이블을 지정하고 관심 국가의 개수 지표도 제공합니다.

  2. 차단 작업을 포함하는 AND

    • 차단하려는 국가에 대해 레이블을 지정하는 레이블 일치 문

    • NOT 명령문

      • 허용하려는 국가에 대해 레이블을 지정하는 레이블 일치 문

다음 JSON 목록에는 이전 의사 코드에 설명된 두 규칙의 구현이 나와 있습니다. 이들 규칙은 오레곤 및 워싱턴에서 들어오는 트래픽을 제외하고 미국에서 들어오는 모든 트래픽을 차단합니다. 지역 일치 문은 검사하는 모든 요청에 국가 및 리전 레이블을 추가합니다. 레이블 일치 규칙은 지역 일치 규칙 이후에 실행되므로 지역 일치 규칙이 방금 추가한 국가 및 리전 레이블과 일치시킬 수 있습니다. 지역 일치 문은 전달된 IP 주소를 사용하므로 레이블 일치에서 전달된 IP 레이블도 지정합니다.

{ "Name": "geoMatchForLabels", "Priority": 10, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ], "ForwardedIPConfig": { "HeaderName": "X-Forwarded-For", "FallbackBehavior": "MATCH" } } }, "Action": { "Count": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "geoMatchForLabels" } }, { "Name": "blockUSButNotOROrWA", "Priority": 11, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:country:US" } }, { "NotStatement": { "Statement": { "OrStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:region:US-OR" } }, { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:region:US-WA" } } ] } } } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "blockUSButNotOROrWA" } }

또 다른 예로 특정 국가 또는 리전의 사용자에게 리소스를 우선적으로 할당하려면, 속도 기반 규칙에 지역 일치 조건을 결합하면 됩니다. 사용자를 차별화하는 데 사용하는 각 지역 일치 또는 레이블 일치 문에 대해 서로 다른 속도 기반 문을 생성합니다. 선호하는 국가 또는 리전의 사용자에게는 요청률 한도를 더 높게 설정하고, 기타 사용자에게는 요청률 한도를 더 낮게 설정합니다.

다음 JSON 목록은 지역 일치 규칙과 미국에서 들어오는 트래픽 속도를 제한하는 속도 기반 규칙을 보여줍니다. 이러한 규칙을 사용하면 오리건 주에서 들어오는 트래픽이 미국 내 다른 리전에서 들어오는 트래픽보다 더 높은 속도로 유입될 수 있습니다.

{ "Name": "geoMatchForLabels", "Priority": 190, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ] } }, "Action": { "Count": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "geoMatchForLabels" } }, { "Name": "rateLimitOregon", "Priority": 195, "Statement": { "RateBasedStatement": { "Limit": 3000, "AggregateKeyType": "IP", "ScopeDownStatement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:region:US-OR" } } } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rateLimitOregon" } }, { "Name": "rateLimitUSNotOR", "Priority": 200, "Statement": { "RateBasedStatement": { "Limit": 100, "AggregateKeyType": "IP", "ScopeDownStatement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:country:US" } }, { "NotStatement": { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:region:US-OR" } } } } ] } } } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rateLimitUSNotOR" } }