ILB App Service Environment와 Azure Application Gateway 통합

App Service Environment는 고객의 Azure 가상 네트워크 서브넷에 Azure App Service를 배포한 환경입니다. 앱 액세스를 위해 외부 또는 내부 엔드포인트로 배포할 수 있습니다. 내부 엔드포인트를 사용하여 App Service 환경을 배포하는 것을 ILB(내부 부하 분산 장치) ASE(App Service Environment)라고 합니다.

웹 애플리케이션 방화벽을 통해 SQL 삽입, 사이트 간 스크립팅, 맬웨어 업로드 및 애플리케이션 DDoS와 기타 공격을 차단하기 위해 인바운드 웹 트래픽을 검사하여 웹 애플리케이션을 보호할 수 있습니다. Azure Marketplace에서 WAF 디바이스를 얻거나 Azure Application Gateway를 사용할 수 있습니다.

Azure Application Gateway는 7계층 부하 분산, TLS/SSL 오프로딩, WAF(웹 애플리케이션 방화벽) 보호를 제공하는 가상 어플라이언스입니다. 공용 IP 주소에서 수신 대기하고, 트래픽을 애플리케이션 엔드포인트로 라우팅할 수 있습니다. 여기서는 WAF가 구성된 애플리케이션 게이트웨이를 ILB App Service 환경의 앱과 통합하는 방법에 대해 설명합니다.

애플리케이션 게이트웨이와 ILB App Service 환경의 통합은 앱 수준입니다. ILB App Service Environment에서 애플리케이션 게이트웨이를 구성하는 경우 ILB App Service 환경의 특정 앱에 대해 이를 구성합니다. 이 기술을 사용하면 단일 ILB App Service 환경에서 안전한 다중 테넌트 애플리케이션을 호스트할 수 있습니다.

Screenshot of High level integration diagram

이 연습에서는 다음을 수행합니다.

  • Azure Application Gateway를 만듭니다.
  • ILB App Service 환경의 앱을 가리키도록 애플리케이션 게이트웨이를 구성합니다.
  • 애플리케이션 게이트웨이를 가리키는 공용 DNS 호스트 이름을 편집합니다.

필수 조건

애플리케이션 게이트웨이를 ILB App Service 환경과 통합하려면 다음이 필요합니다.

  • ILB App Service 환경.
  • ILB App Service 환경에 대한 프라이빗 DNS 영역.
  • ILB App Service 환경에서 실행되는 앱.
  • 나중에 애플리케이션 게이트웨이를 가리키는 데 사용되는 공용 DNS 이름.
  • 애플리케이션 게이트웨이에 TLS/SSL 암호화를 사용해야 하는 경우 애플리케이션 게이트웨이에 바인딩하는 데 사용되는 유효한 공용 인증서가 필요합니다.

ILB App Service 환경

ILB App Service Environment를 만드는 방법에 대한 자세한 내용은 Azure Portal에서 ASE 만들기ARM 템플릿을 사용하여 ASE 만들기를 참조하세요.

  • ILB ASE를 만든 후 기본값 도메인은 <YourAseName>.appserviceenvironment.net입니다.

    Screenshot of ILB ASE Overview

  • 인바운드 액세스를 위해 내부 부하 분산 장치가 프로비전됩니다. ASE 설정의 IP 주소에서 인바운드 주소를 확인할 수 있습니다. 나중에 이 IP 주소에 매핑된 프라이빗 DNS 영역을 만들 수 있습니다.

    Screenshot of getting the inbound address from ILB ASE IP addresses settings.

프라이빗 DNS 영역

내부 이름 확인을 위한 프라이빗 DNS 영역이 필요합니다. 다음 표에 표시된 레코드 집합을 사용한 ASE 이름을 사용하여 만듭니다(지침은 빠른 시작 - Azure Portal을 사용하여 Azure 프라이빗 DNS 영역 만들기 참조).

이름 타입
* A ASE 인바운드 주소
@ A ASE 인바운드 주소
@ SOA ASE DNS 이름
*.scm A ASE 인바운드 주소

ILB ASE의 App Service

ILB ASE에서 App Service 요금제 및 앱을 만들어야 합니다. 포털에서 앱을 만들 때 ILB ASE를 지역으로 선택합니다.

애플리케이션 게이트웨이에 대한 공용 DNS 이름

인터넷에서 애플리케이션 게이트웨이에 연결하려면 라우팅 가능한 도메인 이름이 필요합니다. 이 경우 라우팅 가능한 도메인 이름 asabuludemo.com을(를) 사용하고 이 도메인 이름 app.asabuludemo.com을(를) 사용하여 App Service에 연결하려고 계획했습니다. 이 앱에 매핑된 IP 주소는 애플리케이션 게이트웨이를 만든 후 기본 이름을 Application Gateway 공용 IP 주소로 설정해야 합니다. 애플리케이션 게이트웨이에 매핑된 공용 도메인을 사용하면 App Service에서 사용자 지정 도메인을 구성할 필요가 없습니다. App Service 도메인을 사용하여 사용자 지정 도메인 이름을 구입할 수 있습니다.

유효한 공용 인증서

보안 향상을 위해 세션 암호화를 위해 TLS/SSL 인증서를 바인딩하는 것이 좋습니다. TLS/SSL 인증서를 애플리케이션 게이트웨이에 바인딩하려면 다음 정보가 포함된 유효한 공용 인증서가 필요합니다. App Service 인증서를 사용하면 TLS/SSL 인증서를 구입하고 .pfx 형식으로 내보낼 수 있습니다.

속성 설명
일반 이름 <yourappname>.<yourdomainname>, 예: app.asabuludemo.com
또는 *.<yourdomainname>, 예: *.asabuludemo.com
애플리케이션 게이트웨이에 대한 표준 인증서 또는 와일드카드 인증서
주체 대체 이름 <yourappname>.scm.<yourdomainname>, 예: app.scm.asabuludemo.com
또는 *.scm.<yourdomainname>, 예: *.scm.asabuludemo.com
App Service kudu 서비스에 연결할 수 있는 SAN입니다. App Service kudu 서비스를 인터넷에 게시하지 않으려면 선택적 설정입니다.

인증서 파일에는 프라이빗 키가 있어야 하고 .pfx 형식으로 저장해야 하며 나중에 애플리케이션 게이트웨이로 가져옵니다.

애플리케이션 게이트웨이 만들기

기본 애플리케이션 게이트웨이 만들기의 경우 자습서: Azure Portal을 사용하여 웹 애플리케이션 방화벽을 사용하여 애플리케이션 게이트웨이 만들기를 참조하세요.

이 자습서에서는 Azure Portal을 사용하여 ILB App Service 환경을 사용하여 애플리케이션 게이트웨이를 만듭니다.

Azure Portal에서 새로 만들기>네트워크>네트워크 게이트웨이를 선택하여 애플리케이션 게이트웨이를 만듭니다.

  1. 기본 설정

    계층 드롭다운 목록에서 표준 V2 또는 WAF V2를 선택하여 애플리케이션 게이트웨이에서 WAF 기능을 사용하도록 설정할 수 있습니다.

  2. 프런트 엔드 설정

    공용, 프라이빗 또는 둘 다에 프런트 엔드 IP 주소 유형을 선택합니다. 프라이빗 또는 둘 다로 설정한 경우 애플리케이션 게이트웨이 서브넷 범위에서 고정 IP 주소를 할당해야 합니다. 이 경우 공용 엔드포인트에 대해서만 공용 IP로 설정합니다.

    • 공용 IP 주소 - 애플리케이션 게이트웨이 공용 액세스에 대한 공용 IP 주소를 연결해야 합니다. 이 IP 주소를 기록합니다. 나중에 DNS 서비스에 레코드를 추가해야 합니다.

      Screenshot of getting a public IP address from the application gateway frontends setting.

  3. 백 엔드 설정

    백 엔드 풀 이름을 입력하고 대상 유형에서 App Services 또는 IP 주소 또는 FQDN을 선택합니다. 이 경우 App Services로 설정하고 대상 드롭다운 목록에서 App Service 이름을 선택합니다.

    Screenshot of adding a backend pool name in backends setting.

  4. 구성 설정

    구성 설정에서 회람 규칙 추가 아이콘을 선택하여 회람 규칙을 추가해야 합니다.

    Screenshot of adding a routing rule in configuration setting.

    회람 규칙에서 수신기백 엔드 대상을 구성해야 합니다. 개념 증명 배포를 위해 HTTP 수신기를 추가하거나 보안 향상을 위해 HTTPS 수신기를 추가할 수 있습니다.

    • HTTP 프로토콜을 사용하여 애플리케이션 게이트웨이에 연결하려면 다음 설정을 사용하여 수신기를 만들 수 있습니다.

      매개 변수 설명
      규칙 이름 예: http-routingrule 라우팅 이름
      수신기 이름 예: http-listener 수신기 이름
      프런트 엔드 IP 공용 인터넷 액세스의 경우 공용으로 설정
      프로토콜 HTTP TLS/SSL 암호화 사용 안 함
      포트 80 기본값 HTTP 포트
      수신기 유형 다중 사이트 애플리케이션 게이트웨이에서 다중 사이트 수신 대기 허용
      Host type 다중/와일드카드 수신기 유형이 다중 사이트로 설정된 경우 다중 또는 와일드카드 웹 사이트 이름으로 설정합니다.
      호스트 이름 예: app.asabuludemo.com App Service에 대한 라우팅 가능한 도메인 이름으로 설정

      Screenshot of HTTP Listener of the application gateway Routing Rule.

    • TLS/SSL 암호화를 사용하여 애플리케이션 게이트웨이에 연결하려면 다음 설정을 사용하여 수신기를 만들 수 있습니다.

      매개 변수 설명
      규칙 이름 예: https-routingrule 라우팅 이름
      수신기 이름 예: https-listener 수신기 이름
      프런트 엔드 IP 공용 인터넷 액세스의 경우 공용으로 설정
      프로토콜 HTTPS TLS/SSL 암호화 사용
      포트 443 기본값 HTTPS 포트
      Https 설정 인증서 업로드 CN 및 .pfx 형식의 프라이빗 키를 포함하는 인증서 업로드.
      수신기 유형 다중 사이트 애플리케이션 게이트웨이에서 다중 사이트 수신 대기 허용
      Host type 다중/와일드카드 수신기 유형이 다중 사이트로 설정된 경우 다중 또는 와일드카드 웹 사이트 이름으로 설정합니다.
      호스트 이름 예: app.asabuludemo.com App Service에 대한 라우팅 가능한 도메인 이름으로 설정

      HTTPS listener of the application gateway Routing Rule.

    • 백 엔드 대상에서 백 엔드 풀HTTP 설정을 구성해야 합니다. 백 엔드 풀은 이전 단계에서 구성되었습니다. 새로 추가 링크를 선택하여 HTTP 설정을 추가합니다.

      Screenshot of adding new link to add an H T T P setting.

    • 아래와 같이 나열된 HTTP 설정:

      매개 변수 설명
      HTTP 설정 이름 예: https-setting HTTP 설정 이름
      백 엔드 프로토콜 HTTPS TLS/SSL 암호화 사용
      백 엔드 포트 443 기본값 HTTPS 포트
      잘 알려진 CA 인증서 사용 ILB ASE의 기본값 도메인 이름은 신뢰할 수 있는 공용 루트 기관에서 이 도메인의 인증서를 발급하는 .appserviceenvironment.net입니다. 신뢰할 수 있는 루트 인증서 설정에서 잘 알려진 CA 신뢰할 수 있는 루트 인증서를 사용하도록 설정할 수 있습니다.
      새 호스트 이름으로 재정의 ILB ASE에서 앱에 연결할 때 호스트 이름 헤더를 덮어쓰게 됩니다
      호스트 이름 재정의 백 엔드 대상에서 호스트 이름 선택 백 엔드 풀을 App Service로 설정할 때 백 엔드 대상에서 호스트를 선택할 수 있습니다
      사용자 지정 프로브 만들기 아니요 기본값 상태 프로브 사용

      Screenshot of **Add an H T T P setting** dialog.

ILB ASE와 애플리케이션 게이트웨이 통합 구성

애플리케이션 게이트웨이에서 ILB ASE에 액세스하려면 프라이빗 DNS 영역에 대한 가상 네트워크 링크가 있는지 확인해야 합니다. 애플리케이션 게이트웨이의 VNet에 연결된 가상 네트워크가 없는 경우 다음 단계를 사용하여 가상 네트워크 링크를 추가합니다.

  • 프라이빗 DNS 영역을 사용하여 가상 네트워크 링크를 구성하려면 프라이빗 DNS 영역 구성 평면으로 이동합니다. 가상 네트워크 링크>추가 선택

Add a virtual network link to private DNS zone.

  • 링크 이름을 입력하고 애플리케이션 게이트웨이가 있는 해당 구독 및 가상 네트워크를 선택합니다.

Screenshot of input link name details to virtual network links setting in private DNS zone.

  • 애플리케이션 게이트웨이 평면의 백 엔드 상태에서 백 엔드 상태를 확인할 수 있습니다.

Screenshot of confirm the backend health status from backend health.

공용 DNS 레코드 추가

인터넷에서 애플리케이션 게이트웨이에 액세스할 때 적절한 DNS 매핑을 구성해야 합니다.

  • 애플리케이션 게이트웨이의 공용 IP 주소는 애플리케이션 게이트웨이 평면의 프런트 엔드 IP 구성에서 찾을 수 있습니다.

Application gateway frontend IP address can be found in Frontend IP configuration.

  • 예를 들어 Azure DNS 서비스를 사용하여 앱 도메인 이름을 애플리케이션 게이트웨이의 공용 IP 주소에 매핑하는 레코드 집합을 추가할 수 있습니다.

Screenshot of adding a record set to map the app domain name to the public IP address of the application gateway.

연결 유효성 검사

  • 인터넷의 컴퓨터 액세스에서 애플리케이션 게이트웨이 공용 IP 주소에 대한 앱 도메인 이름의 이름 확인을 확인할 수 있습니다.

validate the name resolution from a command prompt.

  • 인터넷의 컴퓨터 액세스에서 브라우저에서 웹 액세스를 테스트합니다.

Screenshot of opening a browser, access to the web.