빠른 시작: Azure Front Door 표준/프리미엄 만들기 - Azure CLI

이 빠른 시작에서는 Azure CLI를 사용하여 Azure Front Door 표준/프리미엄 프로필을 만드는 방법을 알아봅니다. 두 개의 Web Apps를 원본으로 사용하여 이 프로필을 만들고 WAF 보안 정책을 추가합니다. 그런 다음, Azure Front Door 엔드포인트 호스트 이름을 사용하여 Web Apps에 대한 연결을 확인할 수 있습니다.

Diagram of Front Door deployment environment using the Azure CLI.

참고 항목

웹 워크로드의 경우 Azure DDoS Protection웹 애플리케이션 방화벽을 활용하여 새로운 DDoS 공격으로부터 보호하는 것이 좋습니다. 또 다른 옵션은 웹 애플리케이션 방화벽과 함께 Azure Front Door를 사용하는 것입니다. Azure Front Door는 네트워크 수준 DDoS 공격에 대한 플랫폼 수준 보호를 제공합니다. 자세한 내용은 Azure 서비스에 대한 보안 기준을 참조하세요.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

사전 요구 사항

리소스 그룹 만들기

Azure에서 관련 리소스를 리소스 그룹에 할당합니다. 기존 리소스 그룹을 사용하거나 리소스 그룹을 새로 만들 수 있습니다.

az group create를 실행하여 리소스 그룹을 만듭니다.

az group create --name myRGFD --location centralus

Azure Front Door 프로필 만들기

이 단계에서는 두 App Services가 원본으로 사용할 Azure Front Door 프로필을 만듭니다.

az afd profile create를 실행하여 Azure Front Door 프로필을 만듭니다.

참고 항목

프리미엄 대신 Azure Front Door 표준을 배포하려는 경우 sku 매개 변수의 값을 Standard_AzureFrontDoor로 대체합니다. 표준 SKU를 선택하면 WAF 정책으로 관리 규칙을 배포할 수 없습니다. 자세한 비교는 Azure Front Door 계층 비교를 참조하세요.

az afd profile create \
    --profile-name contosoafd \
    --resource-group myRGFD \
    --sku Premium_AzureFrontDoor

웹앱의 두 인스턴스 만들기

이 단계에서는 이 자습서를 위해 서로 다른 Azure 지역에서 실행되는 두 개의 웹앱 인스턴스를 만듭니다. 두 웹 애플리케이션 인스턴스는 모두 활성/활성 모드로 실행되므로 두 인스턴스 중 하나에서 트래픽을 서비스할 수 있습니다. 이 구성은 장애 조치로 작동하는 활성/대기 구성과 다릅니다.

앱 서비스 계획 만들기

웹앱을 만들려면 먼저 하나는 미국 중부에, 다른 하나는 미국 동부에 있는 두 개의 앱 서비스 요금제가 필요합니다.

az appservice plan create를 실행하여 앱 서비스 요금제를 만듭니다.

az appservice plan create \
    --name myAppServicePlanCentralUS \
    --resource-group myRGFD \
    --location centralus
az appservice plan create \
    --name myAppServicePlanEastUS \
    --resource-group myRGFD \
    --location eastus

웹앱 만들기

App Service 플랜이 만들어지면 az webapp create를 실행하여 이전 단계의 각 App Service 플랜에 웹앱을 만듭니다. 웹앱 이름은 전역적으로 고유해야 합니다.

az webapp create \
    --name WebAppContoso-01 \
    --resource-group myRGFD \
    --plan myAppServicePlanCentralUS
az webapp create \
    --name WebAppContoso-02 \
    --resource-group myRGFD \
    --plan myAppServicePlanEastUS

다음 단계에서 Front Door를 배포할 때 백 엔드 주소를 정의할 수 있도록 각 웹앱의 기본 호스트 이름을 적어 둡니다.

Azure Front Door 만들기

Front Door 프로필 만들기

az afd profile create를 실행하여 Azure Front Door 프로필을 만듭니다.

참고 항목

프리미엄 대신 Azure Front Door 표준을 배포하려는 경우 sku 매개 변수의 값을 Standard_AzureFrontDoor로 대체합니다. 표준 SKU를 선택하면 WAF 정책으로 관리 규칙을 배포할 수 없습니다. 자세한 비교는 Azure Front Door 계층 비교를 참조하세요.

az afd profile create \
    --profile-name contosoafd \
    --resource-group myRGFD \
    --sku Premium_AzureFrontDoor

엔드포인트 추가

이 단계에서는 Front Door 프로필에 엔드포인트를 만듭니다. Front Door 표준/프리미엄에서 엔드포인트는 도메인 이름과 연결된 하나 이상의 경로를 논리적으로 그룹화한 것입니다. 각 엔드포인트에는 Front Door에서 도메인 이름이 할당되며 경로를 사용하여 엔드포인트를 사용자 지정 도메인에 연결할 수 있습니다. Front Door 프로필에는 여러 엔드포인트가 포함될 수도 있습니다.

az afd endpoint create를 실행하여 프로필에 엔드포인트를 만듭니다.

az afd endpoint create \
    --resource-group myRGFD \
    --endpoint-name contosofrontend \
    --profile-name contosoafd \
    --enabled-state Enabled

Front Door의 엔드포인트에 대한 자세한 내용은 Azure Front Door의 엔드포인트를 참조하세요.

원본 그룹 만들기

앱 인스턴스에 대한 트래픽 및 예상 응답을 정의하는 원본 그룹을 만듭니다. 또한 원본 그룹은 상태 프로브에서 원본을 평가하는 방법(이 단계에서 정의 가능)을 정의합니다.

az afd origin-group create를 실행하여 두 개의 웹앱을 포함하는 원본 그룹을 만듭니다.

az afd origin-group create \
    --resource-group myRGFD \
    --origin-group-name og \
    --profile-name contosoafd \
    --probe-request-type GET \
    --probe-protocol Http \
    --probe-interval-in-seconds 60 \
    --probe-path / \
    --sample-size 4 \
    --successful-samples-required 3 \
    --additional-latency-in-milliseconds 50

그룹에 원본 추가

이전에 만든 두 앱 인스턴스를 새 원본 그룹에 원본으로 추가합니다. Front Door의 원본은 캐싱이 사용하도록 설정되지 않았거나 캐시가 누락된 경우 Front Door가 콘텐츠를 검색하는 애플리케이션을 나타냅니다.

az afd origin create를 실행하여 첫 번째 앱 인스턴스를 원본 그룹에 원본으로 추가합니다.

az afd origin create \
    --resource-group myRGFD \
    --host-name webappcontoso-01.azurewebsites.net \
    --profile-name contosoafd \
    --origin-group-name og \
    --origin-name contoso1 \
    --origin-host-header webappcontoso-01.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

이 단계를 반복하고 두 번째 앱 인스턴스를 원본 그룹에 원본으로 추가합니다.

az afd origin create \
    --resource-group myRGFD \
    --host-name webappcontoso-02.azurewebsites.net \
    --profile-name contosoafd \
    --origin-group-name og \
    --origin-name contoso2 \
    --origin-host-header webappcontoso-02.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

원본, 원본 그룹 및 상태 프로브에 대한 자세한 내용은 Azure Front Door의 원본 및 원본 그룹을 참조하세요.

경로 추가

이전에 만든 엔드포인트를 원본 그룹에 매핑하는 경로를 추가합니다. 이 경로는 엔드포인트에서 원본 그룹으로 요청을 전달합니다.

az afd route create를 실행하여 엔드포인트를 원본 그룹에 매핑합니다.

az afd route create \
    --resource-group myRGFD \
    --profile-name contosoafd \
    --endpoint-name contosofrontend \
    --forwarding-protocol MatchRequest \
    --route-name route \
    --https-redirect Enabled \
    --origin-group og \
    --supported-protocols Http Https \
    --link-to-default-domain Enabled 

Azure Front Door의 경로에 대한 자세한 내용은 원본에 대한 트래픽 라우팅 방법을 참조하세요.

새 보안 정책 만들기

Front Door의 Azure WAF(Web Application Firewall)는 웹 애플리케이션에 대한 중앙 집중식 보호를 제공하여 일반적인 악용 및 취약성으로부터 보호합니다.

이 자습서에서는 두 개의 관리형 규칙을 추가하는 WAF 정책을 만듭니다. 사용자 지정 규칙을 사용하여 WAF 정책을 만들 수도 있습니다.

WAF 정책 만들기

az network front-door waf-policy create를 실행하여 Front Door에 대한 새 WAF 정책을 만듭니다. 이 예제에서는 사용/방지 모드에 있는 정책을 만듭니다.

참고 항목

관리 규칙은 Front Door 프리미엄 계층에서만 작동합니다. 표준 계층을 선택해 onlu 사용자 지정 규칙을 사용할 수 있습니다.

az network front-door waf-policy create \
    --name contosoWAF \
    --resource-group myRGFD \
    --sku Premium_AzureFrontDoor \
    --disabled false \
    --mode Prevention

참고 항목

Detection 모드를 선택하면 WAF에서 요청을 차단하지 않습니다.

Front Door의 WAF 정책 설정에 대한 자세한 내용은 Azure Front Door의 Web Application Firewall에 대한 정책 설정을 참조하세요.

WAF 정책에 관리 규칙 할당

Azure 관리형 규칙 세트는 일반적인 보안 위협으로부터 애플리케이션을 쉽게 보호할 수 있는 방법을 제공합니다.

az network front-door waf-policy managed-rules add를 실행하여 WAF 정책에 관리 규칙을 추가합니다. 이 예에서는 정책에 Microsoft_DefaultRuleSet_2.1 및 Microsoft_BotManagerRuleSet_1.0을 추가합니다.

az network front-door waf-policy managed-rules add \
    --policy-name contosoWAF \
    --resource-group myRGFD \
    --type Microsoft_DefaultRuleSet \
    --action Block \
    --version 2.1 
az network front-door waf-policy managed-rules add \
    --policy-name contosoWAF \
    --resource-group myRGFD \
    --type Microsoft_BotManagerRuleSet \
    --version 1.0

Front Door의 관리형 규칙에 대해 자세히 알아보려면 Web Application Firewall DRS 규칙 그룹 및 규칙을 참조하세요.

보안 정책 만들기

보안 정책을 만들어 Front Door에 이러한 두 WAF 정책을 적용합니다. 이 설정은 이전에 정의한 엔드포인트에 Azure 관리형 규칙이 적용됩니다.

az afd security-policy create를 실행하여 엔드포인트의 기본 도메인에 WAF 정책을 적용합니다.

참고 항목

도메인 및 waf-policy 매개 변수에서 'mysubscription'을 Azure 구독 ID로 대체합니다. az account subscription list를 실행하여 구독 ID 세부 정보를 가져옵니다.

az afd security-policy create \
    --resource-group myRGFD \
    --profile-name contosoafd \
    --security-policy-name contososecurity \
    --domains /subscriptions/mysubscription/resourcegroups/myRGFD/providers/Microsoft.Cdn/profiles/contosoafd/afdEndpoints/contosofrontend \
    --waf-policy /subscriptions/mysubscription/resourcegroups/myRGFD/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/contosoWAF

Front Door 테스트

Azure Front Door 표준/프리미엄 프로필을 만들 때 구성이 전역적으로 배포되는 데 몇 분 정도 걸립니다. 완료되면 앞서 만든 프런트 엔드 호스트에 액세스할 수 있습니다.

az afd endpoint show를 실행하여 Front Door 엔드포인트의 호스트 이름을 가져옵니다.

az afd endpoint show --resource-group myRGFD --profile-name contosoafd --endpoint-name contosofrontend

브라우저에서 엔드포인트 호스트 이름(contosofrontend-<hash>.z01.azurefd.net)으로 이동합니다. 사용자의 요청은 자동으로 원본 그룹에서 가장 지연이 적은 웹앱으로 라우팅됩니다.

Screenshot of the message: Your web app is running and waiting for your content

즉각적인 글로벌 장애 조치(failover)를 테스트하기 위해 다음 단계를 수행합니다.

  1. 브라우저를 열고 엔드포인트 호스트 이름(contosofrontend-<hash>.z01.azurefd.net)으로 이동합니다.

  2. az webapp stop을 실행하여 Web Apps 중 하나를 중지합니다.

    az webapp stop --name WebAppContoso-01 --resource-group myRGFD
    
  3. 브라우저를 새로 고칩니다. 동일한 정보 페이지가 표시됩니다.

이러한 작업에는 약간의 지연이 있습니다. 다시 새로 고쳐야 할 수도 있습니다.

  1. 다른 웹앱도 찾아서 중지합니다.

    az webapp stop --name WebAppContoso-02 --resource-group myRGFD
    
  2. 브라우저를 새로 고칩니다. 이번에는 오류 메시지가 표시됩니다.

    Screenshot of the message: Both instances of the web app stopped

  3. az webapp start를 실행하여 Web Apps 중 하나를 다시 시작합니다. 브라우저를 새로 고치면 페이지가 정상으로 돌아갑니다.

    az webapp start --name WebAppContoso-01 --resource-group myRGFD
    

리소스 정리

Front Door용 리소스가 필요하지 않은 경우 두 리소스 그룹을 모두 삭제합니다. 리소스 그룹을 삭제하면 Front Door와 관련된 모든 리소스도 삭제됩니다.

az group delete를 실행합니다.

az group delete --name myRGFD

다음 단계

사용자 지정 도메인을 Front Door에 추가하는 방법을 알아보려면 다음 문서로 계속 진행하세요.