다음을 통해 공유


Web Application Firewall 속도 제한 규칙 구성

Azure Front Door에 대한 Azure Web Application Firewall 속도 제한 규칙은 속도 제한 기간 동안 특정 원본 IP 주소에서 애플리케이션으로 허용되는 요청 수를 제어합니다. 속도 제한에 대한 자세한 내용은 Azure Front Door의 속도 제한이란?을 참조하세요.

이 문서에서는 Azure Front Door 표준 및 프리미엄 계층에서 WAF(웹 애플리케이션 방화벽) 속도 제한 규칙을 구성하는 방법을 보여줍니다.

시나리오

공용 웹 사이트를 책임지고 있다고 가정해 봅시다. 사용자의 조직에서 진행 중인 프로모션에 대한 정보가 있는 페이지를 추가했습니다. 클라이언트가 해당 페이지를 너무 자주 방문하면 일부 백 엔드 서비스의 크기가 빠르게 조정되지 않고 애플리케이션에 성능 문제가 발생할 수 있다는 점이 우려됩니다.

그래서 각 원본 IP 주소를 분당 최대 1,000개 요청으로 제한하는 속도 제한 규칙을 만들기로 결정했습니다. 요청 URL에 */promo*가 포함된 요청에만 이 규칙을 적용합니다.

Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Azure Front Door 프로필 및 WAF 정책 만들기

  1. Azure Portal에서 리소스 만들기를 선택합니다.

    홈페이지의 리소스 만들기 단추를 보여 주는 스크린샷.

  2. Front Door를 검색하고 Front Door 및 CDN 프로필을 선택합니다.

    Front Door가 강조 표시된 마켓플레이스를 보여 주는 스크린샷.

  3. 만들기를 실행합니다.

    만들기 단추가 강조 표시된 Front Door와 CDN 프로필을 보여 주는 스크린샷.

  4. 계속하여 Front Door 만들기를 선택하여 빠른 만들기 포털 만들기 프로세스를 사용합니다.

    빠른 만들기 옵션이 선택되어 있고 Front Door 만들기 계속하기 단추가 강조 표시된 Azure Front Door 제공 사항을 보여 주는 스크린샷.

  5. 기본 사항 페이지에 필요한 정보를 입력합니다.

    • 리소스 그룹: 기존 리소스 그룹을 선택하거나 Azure Front Door 및 WAF 리소스에 대한 새 리소스 그룹을 만듭니다.
    • 이름: Azure Front Door 프로필의 이름을 입력합니다.
    • 계층: 표준 또는 프리미엄을 선택합니다. 이 시나리오의 경우 두 계층 모두 속도 제한을 지원합니다.
    • 엔드포인트 이름: Azure Front Door 엔드포인트에는 전역적으로 고유한 이름이 있어야 하므로 엔드포인트에 고유한 이름을 지정합니다.
    • 원본 형식원본 호스트 이름: 속도 제한 규칙으로 보호할 원본 애플리케이션을 선택합니다.
  6. WAF 정책 옆에 있는 새로 만들기를 선택합니다.

    WAF 정책 새로 만들기 단추가 강조 표시된 Azure Front Door 만들기 워크플로를 보여 주는 스크린샷.

  7. WAF 정책의 이름을 입력하고 만들기를 선택합니다.

    만들기 단추가 강조 표시된 WAF 정책 만들기 프롬프트를 보여 주는 스크린샷.

  8. 검토 + 만들기>만들기를 차례로 선택합니다.

    완료된 Azure Front Door 프로필 구성을 보여 주는 스크린샷.

  9. 배포가 완료되면 리소스로 이동을 선택합니다.

속도 제한 규칙 만들기

  1. 사용자 지정 규칙>사용자 지정 규칙 추가를 선택합니다.

    WAF 정책의 사용자 지정 규칙 페이지를 보여 주는 스크린샷.

  2. 속도 제한 규칙을 만드는 데 필요한 정보를 입력합니다.

    • 사용자 지정 규칙 이름: 사용자 지정 규칙의 이름을 입력합니다(예: rateLimitRule).
    • 규칙 유형: 속도 제한을 선택합니다.
    • 우선 순위: 규칙의 우선 순위를 입력합니다(예: 1).
    • 속도 제한 기간: 1분을 선택합니다.
    • 속도 제한 임계값(요청): 1000을 입력합니다.
  3. 조건에는 URL에 */promo* 문자열이 포함된 요청을 식별하기 위한 일치 조건을 지정하는 데 필요한 정보를 입력합니다.

    • 일치 형식: 문자열을 선택합니다.
    • 일치 변수: RequestUri를 입력합니다.
    • 작업: is를 선택합니다.
    • 연산자: Contains를 선택합니다.
    • 일치 값: /promo를 입력합니다.
  4. 작업에서 로그 또는 차단을 선택합니다.

    속도 제한 규칙은 LogBlock 작업만 지원합니다. Allow는 지원되지 않습니다.

    사용자 지정 규칙 구성을 보여 주는 스크린샷.

  5. 추가를 선택합니다.

  6. 저장을 선택합니다.

    새로운 비율 제한 규칙을 포함한 사용자 지정 규칙 목록을 보여 주는 스크린샷.

WAF에서 방지 모드 사용

기본적으로 Azure Portal은 검색 모드에서 WAF 정책을 만듭니다. 이 설정은 WAF가 요청을 차단하지 않음을 의미합니다. 자세한 내용은 WAF 모드를 참조하세요.

방지 모드를 사용하기 전에 WAF를 튜닝합니다. 튜닝을 통해 가양성 탐지를 방지할 수 있습니다. 또한 WAF가 합법적인 요청을 차단하는 것을 방지할 수 있습니다.

여기에서는 방지 모드를 사용하도록 WAF를 다시 구성합니다.

  1. WAF 정책을 엽니다.

    정책 모드탐지 시 설정됩니다.

    정책 모드와 방지 모드로 전환 단추가 강조 표시된 WAF 정책을 보여 주는 스크린샷.

  2. 방지 모드로 전환을 선택합니다.

필수 조건

속도 제한 정책을 설정하기 전에 PowerShell 환경을 설정하고 Azure Front Door 프로필을 만듭니다.

PowerShell 환경 설정

Azure PowerShell은 Azure 리소스를 관리하기 위해 Azure Resource Manager 모델을 사용하는 cmdlet 집합을 제공합니다.

로컬 머신에 Azure PowerShell 설치하고 모든 PowerShell 세션에서 사용할 수 있습니다. 여기에서는 Azure 자격 증명으로 로그인하고 Azure Front Door 표준 또는 프리미엄용 Azure PowerShell 모듈을 설치합니다.

로그인용 대화형 대화 상자를 사용하여 Azure에 연결

다음 명령을 실행하여 Azure에 로그인합니다.

Connect-AzAccount

PowerShellGet 설치

최신 PowerShellGet 버전이 설치되어 있는지 확인합니다. 다음 명령을 실행합니다.

Install-Module PowerShellGet -Force -AllowClobber

그런 다음 PowerShell을 다시 시작하여 최신 버전을 사용하도록 합니다.

Azure Front Door PowerShell 모듈 설치

Az.FrontDoorAz.Cdn PowerShell 모듈을 설치하여 PowerShell에서 Azure Front Door 표준 또는 프리미엄으로 작업합니다.

Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn

Az.Cdn 모듈을 사용하여 Azure Front Door 표준 또는 프리미엄 리소스로 작업합니다. Az.FrontDoor 모듈을 사용하여 WAF 리소스로 작업합니다.

리소스 그룹 만들기

New-AzResourceGroup cmdlet을 사용하여 Azure Front Door 프로필 및 WAF 정책에 대한 새 리소스 그룹을 만듭니다. 고유한 요구 사항에 맞게 리소스 그룹 이름 및 위치를 업데이트합니다.

$resourceGroupName = 'FrontDoorRateLimit'

New-AzResourceGroup -Name $resourceGroupName -Location 'westus'

Azure Front Door 프로필 만들기

New-AzFrontDoorCdnProfile cmdlet을 사용하여 새 Azure Front Door 프로필을 만듭니다.

이 예에서는 MyFrontDoorProfile이라는 Azure Front Door 표준 프로필을 만듭니다.

$frontDoorProfile = New-AzFrontDoorCdnProfile `
  -Name 'MyFrontDoorProfile' `
  -ResourceGroupName $resourceGroupName `
  -Location global `
  -SkuName Standard_AzureFrontDoor

Azure Front Door 엔드포인트 만들기

New-AzFrontDoorCdnEndpoint cmdlet을 사용하여 Azure Front Door 프로필에 엔드포인트를 추가합니다.

Azure Front Door 엔드포인트는 전역적으로 고유한 이름을 가져야 하므로 $frontDoorEndpointName 변수의 값을 고유한 값으로 업데이트합니다.

$frontDoorEndpointName = '<unique-front-door-endpoint-name>'

$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
  -EndpointName $frontDoorEndpointName `
  -ProfileName $frontDoorProfile.Name `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Location $frontDoorProfile.Location

URL 일치 조건 정의

New-AzFrontDoorWafMatchConditionObject cmdlet을 사용하여 일치 조건을 만들고 속도 제한이 적용되어야 하는 요청을 식별합니다.

다음 예제는 RequestUri 변수에 /promo 문자열이 포함된 요청과 일치합니다.

$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
  -MatchVariable RequestUri `
  -OperatorProperty Contains `
  -MatchValue '/promo'

사용자 지정 속도 제한 규칙 만들기

New-AzFrontDoorWafCustomRuleObject cmdlet을 사용하여 이전 단계에서 정의한 일치 조건과 요청 임계값을 포함하는 속도 제한 규칙을 만듭니다.

다음 예제에서는 한도를 1000으로 설정합니다.

$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
  -Name 'rateLimitRule' `
  -RuleType RateLimitRule `
  -MatchCondition $promoMatchCondition `
  -RateLimitThreshold 1000 `
  -Action Block `
  -Priority 1

원본 IP 주소가 1분 이내에 1,000개가 넘는 요청을 보내면 WAF는 다음 1분이 시작될 때까지 후속 요청을 차단합니다.

WAF 정책 만들기

New-AzFrontDoorWafPolicy cmdlet을 사용하여 앞서 만든 사용자 지정 규칙이 포함된 WAF 정책을 만듭니다.

$wafPolicy = New-AzFrontDoorWafPolicy `
  -Name 'MyWafPolicy' `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Sku Standard_AzureFrontDoor `
  -CustomRule $promoRateLimitRule

Azure Front Door 프로필을 WAF 정책과 연결하도록 보안 정책 구성

New-AzFrontDoorCdnSecurityPolicy cmdlet을 사용하여 Azure Front Door 프로필에 대한 보안 정책을 만듭니다. 보안 정책은 WAF 정책을 WAF 규칙으로 보호하려는 도메인과 연결합니다.

이 예에서는 엔드포인트의 기본 호스트 이름을 WAF 정책과 연결합니다.

$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
  -PatternsToMatch @("/*") `
  -Domain @(@{"Id"=$($frontDoorEndpoint.Id)})

$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
  -Association $securityPolicyAssociation `
  -WafPolicyId $wafPolicy.Id

$frontDoorSecurityPolicy = New-AzFrontDoorCdnSecurityPolicy `
  -Name 'MySecurityPolicy' `
  -ProfileName $frontDoorProfile.Name `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Parameter $securityPolicyParameters

필수 조건

속도 제한 정책을 설정하기 전에 Azure CLI 환경을 설정하고 Azure Front Door 프로필을 만듭니다.

Azure CLI 환경 설정

Azure CLI는 Azure Resource Manager 모델을 사용하여 Azure 리소스를 관리하는 명령 세트를 제공합니다.

로컬 머신에 Azure CLI를 설치하고 모든 셸 세션에서 사용할 수 있습니다. 여기에서는 Azure 자격 증명으로 로그인하고 Azure Front Door 표준 또는 프리미엄용 Azure CLI 확장을 설치합니다.

로그인용 대화형 대화 상자를 사용하여 Azure에 연결

다음 명령을 실행하여 Azure에 로그인합니다.

az login

Azure CLI용 Azure Front Door 확장 설치

Azure CLI에서 Azure Front Door WAF와 함께 작동하도록 front-door 확장을 설치합니다.

az extension add --name front-door

az afd 명령을 사용하여 Azure Front Door 표준 또는 프리미엄 리소스를 사용합니다. az network front-door waf-policy 명령을 사용하여 WAF 리소스로 작업합니다.

리소스 그룹 만들기

az group create 명령을 사용하여 Azure Front Door 프로필 및 WAF 정책에 대한 새 리소스 그룹을 만듭니다. 고유한 요구 사항에 맞게 리소스 그룹 이름 및 위치를 업데이트합니다.

resourceGroupName='FrontDoorRateLimit'

az group create \
  --name $resourceGroupName \
  --location westus

Azure Front Door 프로필 만들기

az afd profile create 명령을 사용하여 새 Azure Front Door 프로필을 만듭니다.

이 예에서는 MyFrontDoorProfile이라는 Azure Front Door 표준 프로필을 만듭니다.

frontDoorProfileName='MyFrontDoorProfile'

az afd profile create \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

Azure Front Door 엔드포인트 만들기

az afd endpoint create 명령을 사용하여 Azure Front Door 프로필에 엔드포인트를 추가합니다.

Azure Front Door 엔드포인트는 전역적으로 고유한 이름을 가져야 하므로 frontDoorEndpointName 변수의 값을 고유한 값으로 업데이트합니다.

frontDoorEndpointName='<unique-front-door-endpoint-name>'

az afd endpoint create \
  --endpoint-name $frontDoorEndpointName \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \

WAF 정책 만들기

az network front-door waf-policy create 명령을 사용하여 WAF 정책을 만듭니다.

wafPolicyName='MyWafPolicy'

az network front-door waf-policy create \
  --name $wafPolicyName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

사용자 지정 속도 제한 규칙 추가 준비

az network front-door waf-policy rule create 명령을 사용하여 사용자 지정 속도 제한 규칙을 만듭니다. 다음 예제에서는 한도를 분당 요청 1,000개로 설정합니다.

속도 제한 규칙에는 다음 단계에서 만드는 일치 조건이 포함되어야 합니다. 이 명령에는 아직 Azure에 규칙을 제출하지 않도록 Azure CLI에 지시하는 --defer 인수가 포함됩니다.

az network front-door waf-policy rule create \
  --name rateLimitRule \
  --policy-name $wafPolicyName \
  --resource-group $resourceGroupName \
  --rule-type RateLimitRule \
  --rate-limit-duration 1 \
  --rate-limit-threshold 1000 \
  --action Block \
  --priority 1 \
  --defer

원본 IP 주소가 1분 이내에 1,000개가 넘는 요청을 보내면 WAF는 다음 1분이 시작될 때까지 후속 요청을 차단합니다.

일치 조건 추가

az network front-door waf-policy rule match-condition add 명령을 사용하여 사용자 지정 규칙에 일치 조건을 추가합니다. 일치 조건은 속도 제한이 적용되어야 하는 요청을 식별합니다.

다음 예제는 RequestUri 변수에 /promo 문자열이 포함된 요청과 일치합니다.

az network front-door waf-policy rule match-condition add \
  --match-variable RequestUri \
  --operator Contains \
  --values '/promo' \
  --name rateLimitRule \
  --policy-name $wafPolicyName \
  --resource-group $resourceGroupName

이 명령을 제출하면 Azure CLI는 속도 제한 규칙을 만들고 조건을 함께 일치시킵니다.

Azure Front Door 프로필을 WAF 정책과 연결하도록 보안 정책 구성

az afd security-policy create 명령을 사용하여 Azure Front Door 프로필에 대한 보안 정책을 만듭니다. 보안 정책은 WAF 정책을 WAF 규칙으로 보호하려는 도메인과 연결합니다.

이 예에서는 엔드포인트의 기본 호스트 이름을 WAF 정책과 연결합니다.

securityPolicyName='MySecurityPolicy'

wafPolicyResourceId=$(az network front-door waf-policy show --name $wafPolicyName --resource-group $resourceGroupName --query id --output tsv)
frontDoorEndpointResourceId=$(az afd endpoint show --endpoint-name $frontDoorEndpointName --profile-name $frontDoorProfileName --resource-group $resourceGroupName --query id --output tsv)

az afd security-policy create \
  --security-policy-name $securityPolicyName \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \
  --domains $frontDoorEndpointResourceId \
  --waf-policy $wafPolicyResourceId

앞의 코드는 WAF 정책 및 Azure Front Door 엔드포인트에 대한 Azure 리소스 식별자를 조회하여 보안 정책과 연결할 수 있도록 합니다.

참고 항목

WAF 정책을 변경할 때마다 Azure Front Door 보안 정책을 다시 만들 필요가 없습니다. WAF 정책 업데이트는 Azure Front Door 도메인에 자동으로 적용됩니다.

빠른 시작

Bicep을 사용하여 속도 제한 규칙이 있는 Azure Front Door 프로필을 만들려면Bicep 빠른 시작: 속도 제한이 있는 Azure Front Door 표준 또는 프리미엄을 참조하세요.

다음 단계

Azure Front Door에 대해 자세히 알아봅니다.