Azure Functions 네트워킹 옵션

이 문서에서는 Azure Functions에 대한 호스팅 옵션에서 사용할 수 있는 네트워킹 기능을 설명합니다. 다음 네트워킹 옵션을 통해 인터넷 라우팅 가능한 주소를 사용하지 않고 리소스에 액세스하거나 함수 앱에 대한 인터넷 액세스를 제한할 수 있습니다.

호스팅 모델은 서로 다른 수준의 네트워크 격리를 사용할 수 있습니다. 올바른 격리를 선택하면 네트워크 격리 요구 사항을 충족할 수 있습니다.

다음 두 가지 방법으로 함수 앱을 호스트할 수 있습니다.

  • 다양한 수준의 가상 네트워크 연결 및 확장 옵션을 사용하여 다중 테넌트 인프라에서 실행되는 요금제 옵션 중에서 선택할 수 있습니다.
    • 사용 계획은 부하에 대응하여 동적으로 확장되고 최소한의 네트워크 격리 옵션을 제공합니다.
    • 프리미엄 계획은 동적으로 확장되고 보다 포괄적인 네트워크 격리를 제공합니다.
    • Azure App Service 요금제는 고정된 규모에서 작동하며 프리미엄 계획과 비슷한 네트워크 격리를 제공합니다.
  • App Service Environment에서 함수를 실행할 수 있습니다. 이 메서드는 가상 네트워크에 함수를 배포하고 전체 네트워크 제어 및 격리를 제공합니다.

네트워킹 기능 매트릭스

기능 사용 계획 프리미엄 계획 전용 계획 ASE Kubernetes
인바운드 IP 제한 ✅예 ✅예 ✅예 ✅예 ✅예
인바운드 프라이빗 엔드포인트 ❌아니요 ✅예 ✅예 ✅예 ✅예
가상 네트워크 통합 ❌아니요 ✅예(지역) ✅예(지역 및 게이트웨이) ✅예 ✅예
가상 네트워크 트리거(비 HTTP) ❌아니요 ✅예 ✅예 ✅예 ✅예
하이브리드 연결(Windows 전용) ❌아니요 ✅예 ✅예 ✅예 ✅예
아웃바운드 IP 제한 ❌아니요 ✅예 ✅예 ✅예 ✅예

빠른 시작 리소스

Azure Functions 네트워킹 시나리오를 빠르게 시작하려면 다음 리소스를 사용합니다. 이러한 리소스는 문서 전체에서 참조됩니다.

인바운드 네트워킹 기능

다음 함수를 사용하면 함수 앱에 대한 인바운드 요청을 필터링할 수 있습니다.

인바운드 액세스 제한

액세스 제한을 사용하여 앱 액세스가 허용 또는 거부되는 IP 주소의 목록을 우선 순위대로 정의할 수 있습니다. 이 목록에는 IPv4 및 IPv6 주소나 서비스 엔드포인트를 사용하는 특정 가상 네트워크 서브넷이 포함될 수 있습니다. 하나 이상의 항목이 있는 경우 목록 끝에 암시적 "모두 거부"가 표시됩니다. IP 제한은 모든 함수 호스팅 옵션에서 작동합니다.

액세스 제한은 프리미엄, 사용량, App Service에서 사용할 수 있습니다.

참고

네트워크 제한을 사용하는 경우 가상 네트워크 내에서만 배포하거나, 사용 중인 컴퓨터의 IP 주소를 안전 수신자 목록의 Azure Portal에 액세스하는 데 사용할 수 있습니다. 그러나 포털을 사용하여 함수를 관리할 수는 있습니다.

자세히 알아보려면 Azure App Service 정적 액세스 제한을 참조하세요.

프라이빗 엔드포인트

Azure 프라이빗 엔드포인트는 Azure Private Link를 기반으로 하는 서비스에 비공개로 안전하게 연결하는 네트워크 인터페이스입니다. 프라이빗 엔드포인트는 가상 네트워크의 프라이빗 IP 주소를 사용하여 효과적으로 가상 네트워크에 서비스를 제공합니다.

프리미엄App Service 계획에서 호스팅되는 함수에 프라이빗 엔드포인트를 사용할 수 있습니다.

프라이빗 엔드포인트를 호출하려면 DNS 조회가 프라이빗 엔드포인트로 확인되는지 확인해야 합니다. 이러한 동작은 다음 방법 중 하나로 적용할 수 있습니다.

  • Azure DNS 프라이빗 영역과 통합합니다. 가상 네트워크에 사용자 지정 DNS 서버가 없으면 자동으로 수행됩니다.
  • 앱에서 사용하는 DNS 서버에서 프라이빗 엔드포인트를 관리합니다. 이렇게 하려면 프라이빗 엔드포인트 주소를 알고 있어야 하며, A 레코드를 사용하여 해당 주소에 도달하려는 엔드포인트를 가리켜야 합니다.
  • Azure DNS 프라이빗 영역으로 전달하도록 자체 DNS 서버를 구성합니다.

자세히 알아보려면 Web Apps용 프라이빗 엔드포인트 사용을 참조하세요.

스토리지 또는 Service Bus와 같은 개인 엔드포인트 연결이 있는 다른 서비스를 호출하려면 프라이빗 엔드포인트에 대한 아웃바운드 호출을 수행하도록 앱을 구성해야 합니다. 함수 앱의 스토리지 계정으로 프라이빗 엔드포인트를 사용하는 방법에 대한 자세한 내용은 스토리지 계정을 가상 네트워크로 제한을 참조하세요.

서비스 엔드포인트

서비스 엔드포인트를 사용하면 선택한 가상 네트워크 서브넷으로 여러 Azure 서비스를 제한하여 더 높은 수준의 보안을 제공할 수 있습니다. 지역 가상 네트워크 통합을 통해 함수 앱이 서비스 엔드포인트로 보호되는 Azure 서비스에 연결할 수 있습니다. 이 구성은 가상 네트워크 통합을 지원하는 모든 요금제에서 지원됩니다. 서비스 엔드포인트 보안 서비스에 액세스하려면 다음을 수행해야 합니다.

  1. 특정 서브넷에 연결하도록 함수 앱과 지역 가상 네트워크 통합을 구성합니다.
  2. 대상 서비스로 이동하여 통합 서브넷에 대해 서비스 엔드포인트를 구성합니다.

자세한 내용은 가상 네트워크 서비스 엔드포인트를 참조하세요.

서비스 엔드포인트 사용

특정 서브넷에 대한 액세스를 제한하려면 Virtual Network 유형을 사용하여 제한 규칙을 만듭니다. 그런 다음 액세스를 허용하거나 거부할 구독, 가상 네트워크 및 서브넷을 선택할 수 있습니다.

선택한 서브넷에 대한 서비스 엔드포인트가 아직 Microsoft 웹에서 사용하도록 설정되지 않은 경우 누락된 Microsoft.Web 서비스 엔드포인트를 무시 확인란을 선택하지 않으면 자동으로 사용하도록 설정됩니다. 앱에서 서비스 엔드포인트는 사용하고 서브넷은 사용하지 않도록 설정할 수 있는 시나리오는 대체로 서브넷에서 사용하도록 설정할 권한이 있는지에 따라 달라집니다.

다른 사용자가 서브넷에서 서비스 엔드포인트를 사용하도록 설정해야 하는 경우 누락된 Microsoft.Web 서비스 엔드포인트를 무시 확인란을 선택합니다. 앱은 나중에 서브넷에서 사용하도록 설정할 것을 예측하여 서비스 엔드포인트에 대해 구성됩니다.

Virtual Network 유형이 선택된

서비스 엔드포인트를 사용하여 App Service Environment에서 실행되는 앱에 대한 액세스를 제한할 수 없습니다. 앱이 App Service Environment에 있는 경우 IP 액세스 규칙을 적용하여 해당 앱에 대한 액세스를 제어할 수 있습니다.

서비스 엔드포인트를 설정하는 방법을 알아보려면 Azure Functions 프라이빗 사이트 액세스 설정을 참조하세요.

가상 네트워크 통합

가상 네트워크 통합을 사용하면 함수 앱이 가상 네트워크 내의 리소스에 액세스할 수 있습니다. Azure Functions는 두 종류의 가상 네트워크 통합을 지원합니다.

  • 전용 컴퓨팅 가격 책정 계층 - 기본, 표준, 프리미엄, 프리미엄 v2 및 프리미엄 v3가 있습니다.
  • App Service Environment - 전용 지원 인프라를 사용하여 가상 네트워크에 직접 배포하며, 격리된 v2 가격 책정 계층을 사용합니다.

가상 네트워크 통합 기능은 Azure App Service 전용 컴퓨팅 가격 책정 계층에서 사용됩니다. 앱이 App Service Environment에 있는 경우 앱은 이미 가상 네트워크에 있으므로 VNet 통합 기능을 사용하여 동일한 가상 네트워크의 리소스에 연결할 필요가 없습니다. 모든 네트워킹 기능에 대한 자세한 내용은 App Service 네트워킹 기능을 참조하세요.

가상 네트워크 통합은 가상 네트워크의 리소스에 대한 액세스 권한을 앱에 부여하지만, 가상 네트워크에서 앱에 액세스할 수 있는 인바운드 프라이빗 액세스 권한은 부여하지 않습니다. 프라이빗 사이트 액세스는 Azure 가상 네트워크 내에서와 같은 프라이빗 네트워크에서만 앱에 액세스할 수 있도록 합니다. 가상 네트워크 통합은 앱에서 가상 네트워크로의 아웃바운드 호출을 수행하는 데만 사용됩니다. 가상 네트워크 통합 기능은 동일한 지역의 가상 네트워크에 사용할 때와 다른 지역의 가상 네트워크에 사용할 때 서로 다르게 동작 합니다. 가상 네트워크 통합 기능에는 다음과 같은 두 가지 변형이 있습니다.

  • 지역 가상 네트워크 통합: 동일한 지역의 가상 네트워크에 연결하는 경우 통합하려는 가상 네트워크에 전용 서브넷이 있어야 합니다.
  • 게이트웨이 필요 가상 네트워크 통합: 다른 지역의 가상 네트워크 또는 동일한 지역의 클래식 가상 네트워크에 직접 연결하는 경우 대상 가상 네트워크에서 만든 Azure Virtual Network 게이트웨이가 필요합니다.

가상 네트워크 통합 기능:

  • 지원되는 기본 또는 표준, 프리미엄, 프리미엄 v2, 프리미엄 v3 또는 탄력적 프리미엄 App Service 가격 책정 계층이 필요합니다.
  • TCP 및 UDP를 지원합니다.
  • App Service 앱 및 함수 앱과 함께 작동합니다.

가상 네트워크 통합에서 지원하지 않는 다음과 같은 몇 가지 항목이 있습니다.

  • 드라이브 탑재
  • Windows Server Active Directory 도메인 가입.
  • NetBIOS.

게이트웨이 필요 가상 네트워크 통합은 대상 가상 네트워크 또는 피어링이나 VPN을 통해 대상 가상 네트워크에 연결된 네트워크 내부의 리소스에 대한 액세스만 제공합니다. 게이트웨이 필요 가상 네트워크 통합은 Azure ExpressRoute 연결에서 사용할 수 있는 리소스에 액세스하거나 서비스 엔드포인트와 함께 작동할 수 없습니다.

어떤 버전을 사용하든, 가상 네트워크 통합은 가상 네트워크의 리소스에 대한 액세스 권한을 앱에 부여하지만, 가상 네트워크에서 앱에 액세스할 수 있는 인바운드 프라이빗 액세스 권한은 부여하지 않습니다. 프라이빗 사이트 액세스는 Azure 가상 네트워크 내에서와 같은 프라이빗 네트워크에서만 앱에 액세스할 수 있도록 합니다. 가상 네트워크 통합은 앱에서 가상 네트워크로의 아웃바운드 호출에만 사용됩니다.

Azure Functions의 가상 네트워크 통합은 App Service 웹 앱에 공유 인프라를 사용합니다. 가상 네트워크 통합의 두 유형을 자세히 알아보려면 다음을 참조하세요.

가상 네트워크 통합을 설정하는 방법을 알아보려면 가상 네트워크 통합 사용을 참조하세요.

가상 네트워크 통합 사용

  1. 함수 앱 포털에서 네트워킹 블레이드로 이동합니다. VNet 통합에서 구성하려면 클릭을 선택하세요.

  2. VNet 추가를 선택합니다.

    VNET 통합 선택

  3. 드롭다운 목록에는 동일한 지역에서 사용자가 구독하는 모든 Azure Resource Manager 가상 네트워크가 포함됩니다. 통합할 가상 네트워크를 선택합니다.

    VNet을 선택

    • Functions 프리미엄 플랜은 지역 가상 네트워크 통합만 지원합니다. 가상 네트워크가 동일한 지역에 있는 경우 새 서브넷을 만들거나 비어 있는 기존 서브넷을 선택합니다.
    • 다른 지역에서 가상 네트워크를 선택하려면 사이트 간 지점을 사용하도록 프로비저닝된 가상 네트워크 게이트웨이가 있어야 합니다. 지역 간 가상 네트워크 통합은 전용 플랜에서만 지원되지만 글로벌 피어링은 지역 가상 네트워크 통합과 함께 작동합니다.

통합하는 동안에 앱이 다시 시작됩니다. 통합이 완료되면 통합된 가상 네트워크에 대한 세부 정보가 표시됩니다. 기본적으로 모두 라우팅이 사용하도록 설정되고 모든 트래픽이 가상 네트워크로 라우팅됩니다.

프라이빗 트래픽(RFC1918 트래픽)만 라우팅하려면 App Service 설명서의 단계를 따릅니다.

지역 가상 네트워크 통합

지역 가상 네트워크 통합을 사용하면 앱에서 다음에 액세스할 수 있습니다.

  • 앱과 동일한 가상 네트워크에 있는 리소스입니다.
  • 앱이 통합된 가상 네트워크에 피어링된 가상 네트워크의 리소스입니다.
  • 서비스 엔드포인트 보안 서비스
  • Azure ExpressRoute 연결의 리소스
  • Azure ExpressRoute 연결을 포함하는 피어링된 연결의 리소스
  • 프라이빗 엔드포인트

지역 가상 네트워크 통합을 사용하는 경우 다음 Azure 네트워킹 기능을 사용할 수 있습니다.

  • NSG(네트워크 보안 그룹) : 통합 서브넷에 배치된 NSG를 사용하여 아웃바운드 트래픽을 차단할 수 있습니다. 인바운드 규칙은 적용되지 않습니다. 가상 네트워크 통합을 사용하여 앱에 대한 인바운드 액세스를 제공할 수 없기 때문입니다.
  • 경로 테이블(UDR) : 통합 서브넷에 경로 테이블을 배치하여 원하는 위치에 아웃바운드 트래픽을 보낼 수 있습니다.

참고

모든 아웃바운드 트래픽을 가상 네트워크로 라우팅하는 경우 통합 서브넷에 적용되는 NSG 및 UDR이 적용됩니다. 가상 네트워크가 통합되면 트래픽을 다른 곳으로 보내는 경로를 제공하지 않는 한 함수 앱의 공용 IP 주소에 대한 아웃바운드 트래픽이 앱 속성에 나열된 주소에서 계속 전송됩니다.

지역 가상 네트워크 통합은 포트 25를 사용할 수 없습니다.

가상 네트워크 사용에는 몇 가지 제한 사항이 있습니다.

  • 이 기능은 프리미엄 V2 및 프리미엄 V3의 모든 App Service 배포에서 사용할 수 있습니다. 표준에서도 사용할 수 있지만 최신 App Service 배포에서만 사용할 수 있습니다. 이전 배포를 사용하는 경우 프리미엄 V2 App Service 요금제의 기능만 사용할 수 있습니다. 표준 App Service 요금제에서 이 기능을 사용할 수 있도록 하려면 프리미엄 V3 App Service 요금제에서 앱을 만듭니다. 이러한 요금제는 최신 배포에서만 지원됩니다. 그 후에 원하는 경우 스케일 다운할 수 있습니다.
  • 통합 서브넷은 App Service 요금제 하나에서만 사용할 수 있습니다.
  • 이 기능은 App Service Environment에 있는 격리 요금제 앱에서 사용할 수 없습니다.
  • 이 기능을 사용하려면 Azure Resource Manager 가상 네트워크에서 /28 이상의 사용되지 않은 서브넷이 필요합니다.
  • 앱과 가상 네트워크는 동일한 지역에 있어야 합니다.
  • 앱이 통합된 가상 네트워크는 삭제할 수 없습니다. 가상 네트워크를 삭제하려면 통합을 먼저 제거해야 합니다.
  • App Service 요금제당 하나의 지역 가상 네트워크 통합만 가능합니다. 동일한 App Service 요금제의 여러 앱이 동일한 통합 서브넷을 사용할 수 있습니다.
  • 지역 가상 네트워크 통합을 사용하는 앱이 있는 경우에는 앱 또는 요금제의 구독을 변경할 수 없습니다.

서브넷

가상 네트워크 통합은 전용 서브넷에 따라 다릅니다. 서브넷을 프로비전할 때 Azure 서브넷은 처음부터 5개의 IP를 잃습니다. 각 플랜 인스턴스에 대해 통합 서브넷에서 하나의 주소가 사용됩니다. 앱을 4개의 인스턴스로 스케일링하면 4개의 주소가 사용됩니다.

크기를 스케일 업 또는 스케일 다운하면, 짧은 시간 동안 필요한 주소 공간이 2배가 됩니다. 이렇게 되면 지정된 서브넷 크기에 대해 실제로 사용 가능한 지원되는 인스턴스에 영향을 줍니다. 다음 표는 CIDR 블록당 사용 가능한 최대 주소와 이것이 수평 스케일링에 미치는 영향을 보여줍니다.

CIDR 블록 크기 사용 가능한 최대 주소 최대 수평 스케일링(인스턴스)*
/28 11 5
/27 27 13
/26 59 29

*어느 시점에서든 SKU 또는 크기를 스케일 업 또는 스케일 다운해야 한다고 가정합니다.

할당 후에는 서브넷 크기를 변경할 수 없으므로 앱이 도달할 수 있는 모든 규모를 수용할 수 있을 정도로 충분히 큰 서브넷을 사용합니다. Functions 프리미엄 플랜의 서브넷 용량 문제를 방지하려면 Windows의 경우 주소가 256개인 /24를 사용하고 Linux의 경우 주소가 64개인 /26을 사용해야 합니다. 가상 네트워크와의 통합의 일부로 Azure Portal에서 서브넷을 만들 때 Windows 및 Linux에 각각 최소 크기 /24 및 /26이 필요합니다.

다른 플랜의 앱이 다른 플랜의 앱을 통해 이미 연결된 가상 네트워크에 도달하도록 하려면 기존 가상 네트워크 통합에서 사용 중인 서브넷과 다른 서브넷을 선택합니다.

이 기능은 사용자 지정 컨테이너를 포함하여 Windows 및 Linux 앱 모두에서 완벽하게 지원됩니다. 모든 동작은 Windows 앱과 Linux 앱 간에 동일하게 작동합니다.

네트워크 보안 그룹

네트워크 보안 그룹을 사용하여 가상 네트워크의 리소스에 대한 인바운드 및 아웃바운드 트래픽을 차단할 수 있습니다. 지역 가상 네트워크 통합을 사용하는 앱은 네트워크 보안 그룹을 사용하여 가상 네트워크 또는 인터넷의 리소스에 대한 아웃바운드 트래픽을 차단할 수 있습니다. 공용 주소에 대한 트래픽을 차단하려면 모두 라우팅과 가상 네트워크 통합이 사용하도록 설정되어 있어야 합니다. NSG의 인바운드 규칙은 앱에 적용되지 않습니다. 가상 네트워크 통합은 앱의 아웃바운드 트래픽에만 영향을 미치기 때문입니다.

앱에 대한 인바운드 트래픽을 제어하려면 액세스 제한 기능을 사용합니다. 통합 서브넷에 적용된 NSG는 통합 서브넷에 적용된 경로에 관계없이 적용됩니다. 함수 앱이 모두 라우팅이 사용하도록 설정된 통합 가상 네트워크이고 통합 서브넷의 공용 주소 트래픽에 영향을 주는 경로가 없는 경우 모든 아웃바운드 트래픽은 여전히 통합 서브넷에 할당된 NSG의 적용을 받습니다. 모두 라우팅이 사용하도록 설정되지 않은 경우 NSG는 RFC1918 트래픽에만 적용됩니다.

경로

경로 테이블을 사용하여 앱의 아웃바운드 트래픽을 원하는 위치로 라우팅할 수 있습니다. 기본적으로 경로 테이블은 RFC1918 대상 트래픽에만 영향을 줍니다. 모두 라우팅이 사용하도록 설정되면 모든 아웃바운드 통화가 영향을 받습니다. 모두 라우팅이 사용하지 않도록 설정되면 프라이빗 트래픽(RFC1918)만 경로 테이블의 영향을 받습니다. 통합 서브넷에 설정된 경로는 인바운드 앱 요청에 대한 응답에 영향을 주지 않습니다. 일반적인 대상에는 방화벽 디바이스나 게이트웨이가 포함될 수 있습니다.

모든 아웃바운드 트래픽을 온-프레미스로 라우팅하려면 경로 테이블을 사용하여 모든 아웃바운드 트래픽을 ExpressRoute 게이트웨이로 보낼 수 있습니다. 게이트웨이로 트래픽을 라우팅하는 경우에는 응답을 다시 보내도록 외부 네트워크에서 경로를 설정해야 합니다.

BGP(Border Gateway Protocol) 경로도 앱 트래픽에 영향을 줍니다. ExpressRoute 게이트웨이와 같은 항목의 BGP 경로가 있는 경우 앱 아웃바운드 트래픽이 영향을 받습니다. 기본적으로 BGP 경로는 RFC1918 대상 트래픽에만 영향을 줍니다. 함수 앱이 모두 라우팅이 사용하도록 설정된 통합 가상 네트워크인 경우 모든 아웃바운드 트래픽은 BGP 경로의 영향을 받을 수 있습니다.

Azure DNS 프라이빗 영역

앱이 가상 네트워크와 통합되면 가상 네트워크가 구성된 것과 동일한 DNS 서버를 사용하고 가상 네트워크에 연결된 Azure DNS 프라이빗 영역과 함께 작동합니다.

가상 네트워크에 대한 스토리지 계정 제한

참고

스토리지 계정에서 프라이빗 엔드포인트가 사용하도록 설정된 함수 앱을 빠르게 배포하려면 Azure Storage 프라이빗 엔드포인트가 있는 함수 앱 템플릿을 참조하세요.

함수 앱을 만들 때 Blob, 큐 및 Table Storage을 지원하는 범용 Azure Storage 계정을 만들거나 연결해야 합니다. 이 스토리지 계정은 서비스 엔드포인트 또는 프라이빗 엔드포인트로 보호되는 계정으로 바꿀 수 있습니다.

이 기능은 전용(App Service) 플랜으로 모든 Windows 및 Linux 가상 네트워크 지원 SKU에서 지원되며 프리미엄 플랜에서도 지원됩니다. 사용량 요금제는 지원되지 않습니다. 개인 네트워크로 제한된 스토리지 계정을 사용하여 함수를 설정하는 방법을 알아보려면 가상 네트워크에 대한 스토리지 계정 제한을 참조하세요.

Key Vault 참조 사용

Azure Key Vault 참조를 사용하여 코드 변경 없이도 Azure Functions 애플리케이션에서 Azure Key Vault의 비밀을 사용할 수 있습니다. Azure Key Vault는 액세스 정책 및 감사 기록에 대한 전체 제어와 함께 중앙 집중식 비밀 관리를 제공하는 서비스입니다.

앱에 대해 가상 네트워크 통합이 구성된 경우 Key Vault 참조를 사용하여 네트워크 제한 자격 증명 모음에서 비밀을 검색할 수 있습니다.

가상 네트워크 트리거(비 HTTP)

현재 다음 두 가지 방법 중 하나로 가상 네트워크 내에서 비 HTTP 트리거 함수를 사용할 수 있습니다.

  • 프리미엄 계획에서 함수 앱을 실행하고 가상 네트워크 트리거 지원을 사용 설정합니다.
  • App Service 계획 또는 App Service Environment에서 함수 앱을 실행합니다.

가상 네트워크 트리거를 사용하는 프리미엄 계획

프리미엄 계획을 실행하는 경우 비 HTTP 트리거 함수를 가상 네트워크 내에서 실행되는 서비스에 연결할 수 있습니다. 이렇게 하려면 함수 앱에 대한 가상 네트워크 트리거 지원을 사용하도록 설정해야 합니다. 런타임 크기 조정 모니터링 설정은 구성>함수 런타임 설정Azure Portal에서 확인할 수 있습니다.

VNETToggle

다음 Azure CLI 명령을 사용하여 가상 네트워크 트리거를 사용하도록 설정할 수도 있습니다.

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

가상 네트워크 트리거를 사용하도록 설정하면 애플리케이션 성능에 영향을 줄 수 있습니다. App Service 요금제 인스턴스는 크기를 조정하는 시기를 결정하기 위해 트리거를 모니터링해야 하기 때문입니다. 이러한 영향은 매우 작을 가능성이 높습니다.

가상 네트워크 트리거는 Functions 런타임의 버전 2.x 이상에서 지원됩니다. 다음과 같은 비 HTTP 트리거 형식이 지원됩니다.

내선 번호 최소 버전
Microsoft.Azure.WebJobs.Extensions.Storage 3.0.10 이상
Microsoft.Azure.WebJobs.Extensions.EventHubs 4.1.0 이상
Microsoft.Azure.WebJobs.Extensions.ServiceBus 3.2.0 이상
Microsoft.Azure.WebJobs.Extensions.CosmosDB 3.0.5 이상
Microsoft.Azure.WebJobs.Extensions.DurableTask 2.0.0 이상

중요

가상 네트워크 트리거 지원을 사용하도록 설정하면 이전 표에 표시된 트리거 유형만 애플리케이션을 사용하여 동적으로 확장됩니다. 표에 없는 트리거는 계속 사용할 수 있지만 예열된 인스턴스 수 이상으로 크기가 조정되지 않습니다. 트리거의 전체 목록은 트리거 및 바인딩을 참조하세요.

가상 네트워크 트리거를 사용하는 App Service 계획 및 App Service Environment

함수 앱이 App Service 계획 또는 App Service Environment에서 실행되는 경우 비 HTTP 트리거 함수를 사용할 수 있습니다. 함수가 올바르게 트리거되려면 트리거 연결에 정의된 리소스에 대한 액세스 권한이 있는 가상 네트워크에 연결되어야 합니다.

예를 들어 가상 네트워크의 트래픽만 허용하도록 Azure Cosmos DB를 구성하고자 한다고 가정하겠습니다. 이 경우 해당 가상 네트워크에 가상 네트워크 통합을 제공하는 App Service 계획에 함수 앱을 배포해야 합니다. 통합을 사용하면 해당 Azure Cosmos DB 리소스에서 함수를 트리거할 수 있습니다.

하이브리드 연결

하이브리드 연결은 다른 네트워크의 애플리케이션에 액세스하는 데 사용할 수 있는 Azure Relay의 기능입니다. 이를 통해 앱에서 애플리케이션 엔드포인트에 액세스할 수 있습니다. 이를 사용하여 애플리케이션 액세스할 수 없습니다. 하이브리드 연결은 사용 계획을 제외한 Windows에서 실행되는 함수에서 사용할 수 있습니다.

Azure Functions에서 사용되는 것처럼 각 하이브리드 연결은 단일 TCP 호스트 및 포트 조합에 상호 연결됩니다. 즉, TCP 수신 대기 포트에 액세스하는 한, 하이브리드 연결 엔드포인트는 모든 운영 체제 및 모든 애플리케이션에 있을 수 있습니다. 하이브리드 연결 기능은 애플리케이션 프로토콜이 무엇인지 또는 사용자가 무엇에 액세스하고 있는지 인식하거나 상관하지 않습니다. 네트워크 액세스만 제공합니다.

자세한 내용은 하이브리드 연결 관련 App Service 설명서를 참조하세요. 동일한 구성 단계는 Azure Functions를 지원합니다.

중요

하이브리드 연결은 Windows 플랜에서만 지원됩니다. Linux는 지원되지 않습니다.

아웃바운드 IP 제한

아웃바운드 IP 제한은 프리미엄 계획, App Service 계획 또는 App Service Environment에서 사용할 수 있습니다. App Service Environment가 배포되는 가상 네트워크에 대한 아웃바운드 제한을 구성할 수 있습니다.

프리미엄 계획 또는 App Service 계획에서 함수 앱과 가상 네트워크를 통합하는 경우 앱에서 기본적으로 인터넷에 아웃바운드 호출을 수행할 수 있습니다. 모두 라우팅이 사용하도록 설정된 가상 네트워크와 함수 앱을 통합하면 모든 아웃바운드 트래픽을 가상 네트워크로 강제 전송합니다. 여기서 네트워크 보안 그룹 규칙을 사용하여 트래픽을 제한할 수 있습니다.

가상 네트워크를 사용하여 아웃바운드 IP를 제어하는 방법을 알아보려면 자습서: Azure 가상 네트워크 NAT 게이트웨이를 사용하여 Azure Functions 아웃바운드 IP 제어를 참조하세요.

Automation

다음 API를 사용하면 프로그래매틱 방식으로 지역 가상 네트워크 통합을 관리할 수 있습니다.

  • Azure CLI: az functionapp vnet-integration 명령을 사용하여 지역 가상 네트워크 통합을 추가, 나열 또는 제거합니다.
  • ARM 템플릿: 지역 가상 네트워크 통합은 Azure Resource Manager 템플릿을 사용하여 사용하도록 설정할 수 있습니다. 전체 예제를 보려면 이 함수 빠른 시작 템플릿을 참조하세요.

문제 해결

이 기능은 쉽게 설정할 수 있지만 그렇다고 해서 환경에 문제가 발생하지 않는 것은 아닙니다. 원하는 엔드포인트에 액세스하다가 문제가 발생하는 경우, 앱 콘솔에서 연결을 테스트하는 데 사용할 수 있는 유틸리티가 있습니다. 사용할 수 있는 두 개의 콘솔이 있습니다. 하나는 Kudu 콘솔이고, 다른 하나는 Azure Portal의 콘솔입니다. 앱에서 Kudu 콘솔에 연결하려면 도구>Kudu로 차례로 이동합니다. [sitename].scm.azurewebsites.net에서 Kudo 콘솔에 연결할 수도 있습니다. 웹 사이트가 로드된 후 디버그 콘솔 탭으로 이동합니다. Azure Portal에서 호스트되는 콘솔에 연결하려면 앱에서 도구>콘솔로 이동합니다.

도구

네이티브 Windows 앱에서 ping, nslookuptracert 도구는 보안 제약 조건으로 인해 콘솔을 통해 작동하지 않습니다(사용자 지정 Windows 컨테이너에서 작동). 공백을 채우기 위해 별도의 두 가지 도구가 추가되었습니다. DNS 기능을 테스트하기 위해 nameresolver.exe라는 도구가 추가되었습니다. 구문은 다음과 같습니다.

nameresolver.exe hostname [optional: DNS Server]

nameresolver를 사용하여 앱이 의존하는 호스트 이름을 확인합니다. 이렇게 하면 DNS에 잘못 구성된 항목이 있는지 또는 DNS 서버에 대한 액세스가 없는지 테스트할 수 있습니다. 환경 변수 WEBSITE_DNS_SERVER 및 WEBSITE_DNS_ALT_SERVER를 살펴보면 콘솔에서 앱이 사용하는 DNS 서버를 볼 수 있습니다.

참고

nameresolver.exe 도구는 현재 사용자 지정 Windows 컨테이너에서 작동하지 않습니다.

다음 도구를 사용하여 호스트와 포트 조합에 대한 TCP 연결을 테스트할 수 있습니다. 이 도구는 tcpping이라고 하며, 구문은 다음과 같습니다.

tcpping.exe hostname [optional: port]

특정 호스트 및 포트에 연결할 수 있으면 tcpping 유틸리티에서 이를 알려줍니다. 호스트 및 포트 조합에서 수신 대기하는 애플리케이션이 있고 네트워크를 통해 앱에서 지정된 호스트 및 포트에 액세스할 수 있는 경우에만 성공으로 표시될 수 있습니다.

가상 네트워크에서 호스트되는 리소스에 대한 액세스 디버그

특정 호스트와 포트에 앱이 도달하지 못하도록 방해할 만한 요소는 많이 있습니다. 대부분의 경우 다음 중 하나입니다.

  • 중간에 방화벽이 있음. 중간에 방화벽이 있으면 TCP 시간 제한에 도달합니다. 이 경우 TCP 시간 제한은 21초입니다. tcpping 도구를 사용하여 연결을 테스트합니다. 방화벽 뒤에 있는 많은 항목으로 인해 TCP 시간 초과가 발생할 수 있지만 이 부분에서 시작하세요.
  • DNS에 액세스할 수 없음. DNS 시간 제한은 DNS 서버당 3초입니다. DNS 서버가 2개 있으면 제한 시간은 6초입니다. DNS가 작동하는지 확인하려면 nameresolver를 사용합니다. nslookup은 가상 네트워크가 구성된 DNS를 사용하지 않으므로 사용할 수 없습니다. 액세스할 수 없는 경우 DNS에 대한 액세스를 차단하는 방화벽 또는 NSG가 있거나 DNS가 다운되었을 수 있습니다.

해당 항목이 문제에 응답하지 않는 경우 먼저 다음과 같은 사항을 확인합니다.

지역 가상 네트워크 통합

  • 대상이 RFC1918 주소가 아니고 모두 라우팅을 사용하도록 설정하지 않았나요?
  • 통합 서브넷에서 송신을 차단하는 NSG가 있나요?
  • Azure ExpressRoute 또는 VPN을 통하는 경우 온-프레미스 게이트웨이가 Azure로 트래픽을 다시 라우팅하도록 구성되어 있나요? 가상 네트워크의 엔드포인트에 연결할 수 있지만 온-프레미스에는 연결할 수 없는 경우 경로를 확인하세요.
  • 통합 서브넷에 대한 위임을 설정할 충분한 권한이 있나요? 지역 가상 네트워크 통합 구성 중에 통합 서브넷이 Microsoft.Web/serverFarms에 위임됩니다. VNet 통합 UI는 서브넷을 Microsoft.Web/serverFarms에 자동으로 위임합니다. 계정에 위임 설정을 위한 충분한 네트워킹 권한이 없는 경우 통합 서브넷에 특성을 설정하여 서브넷을 위임할 수 있는 사용자가 필요합니다. 통합 서브넷을 수동으로 위임하려면 Azure Virtual Network 서브넷 UI로 이동하여 Microsoft.Web/serverFarms에 대한 위임을 설정합니다.

게이트웨이 필요 가상 네트워크 통합

  • 지점과 사이트 간 주소 범위가 RFC 1918 범위(10.0.0.0-10.255.255.255 / 172.16.0.0-172.31.255.255 / 192.168.0.0-192.168.255.255)에 있나요?
  • 게이트웨이가 포털에서 실행되고 있나요? 게이트웨이가 다운되어 있으면 다시 가동시킵니다.
  • 인증서가 동기화된 것으로 표시되거나 네트워크 구성이 변경된 것으로 의심되나요? 인증서가 동기화되지 않았거나 ASP와 동기화되지 않은 가상 네트워크 구성이 변경된 것으로 의심되는 경우 네트워크 동기화를 선택합니다.
  • VPN을 통하는 경우 온-프레미스 게이트웨이가 Azure로 트래픽을 다시 라우팅하도록 구성되어 있나요? 가상 네트워크의 엔드포인트에 연결할 수 있지만 온-프레미스에는 연결할 수 없는 경우 경로를 확인하세요.
  • 지점과 사이트 간 및 ExpressRoute를 모두 지원하는 공존 게이트웨이를 사용하려고 하나요? 공존 게이트웨이는 가상 네트워크 통합에서 지원되지 않습니다.

특정 호스트:포트 조합에 대한 액세스를 차단하는 문제를 확인할 수 없기 때문에 네트워킹 문제를 디버깅하는 것은 어렵습니다. 몇 가지 원인은 다음과 같습니다.

  • 지점과 사이트 간 IP 범위에서 애플리케이션 포트에 대한 액세스를 차단하는 방화벽이 호스트에서 실행 중입니다. 보통 서브넷을 넘어갈 때는 공용 액세스 권한이 필요합니다.
  • 대상 호스트가 다운되었습니다.
  • 애플리케이션이 다운되었습니다.
  • IP 또는 호스트 이름이 잘못되었습니다.
  • 애플리케이션이 예상치 않은 다른 포트를 수신 대기 중입니다. 엔드포인트 호스트에서 "netstat -aon"을 사용하여 프로세스 ID를 수신 대기 포트와 일치시킬 수 있습니다.
  • 네트워크 보안 그룹이 지점과 사이트 간 IP 범위에서 애플리케이션 호스트 및 포트에 대한 액세스를 차단하도록 구성되어 있습니다.

앱이 실제로 사용하는 주소를 알 수 없습니다. 통합 서브넷 또는 지점과 사이트 간 주소 범위의 주소일 수 있으므로 전체 주소 범위의 액세스를 허용해야 합니다.

더 많은 디버그 단계에는 다음이 포함됩니다.

  • 가상 네트워크의 VM에 연결하고 이 위치에서 리소스 호스트:포트에 연결하려고 시도합니다. TCP 액세스를 테스트하려면 test-netconnection PowerShell 명령을 사용합니다. 구문은 다음과 같습니다.
Test-NetConnection hostname [optional: -Port]
  • VM에서 애플리케이션을 실행하고, tcpping을 사용하여 앱에서 콘솔의 해당 호스트와 포트에 대한 액세스를 테스트합니다.

온-프레미스 리소스

앱에서 온-프레미스 리소스에 연결할 수 없으면 가상 네트워크에서 리소스에 연결할 수 있는지 확인합니다. test-netconnection PowerShell 명령을 사용하여 TCP 액세스를 확인합니다. VM이 온-프레미스 리소스에 연결할 수 없는 경우 VPN 또는 ExpressRoute 연결이 제대로 구성되어 있지 않을 수 있습니다.

가상 네트워크에서 호스트되는 VM에서 온-프레미스 시스템에 연결할 수 있지만 앱에서는 연결할 수 없는 경우 다음과 같은 이유 중 하나 때문일 수 있습니다.

  • 온-프레미스 게이트웨이의 서브넷 또는 지점과 사이트 간 주소 범위에 사용자의 경로가 구성되어 있지 않습니다.
  • 네트워크 보안 그룹에서 지점과 사이트 간 IP 범위에 대한 액세스를 차단하고 있습니다.
  • 온-프레미스 방화벽에서 지점과 사이트 간 IP 범위의 트래픽을 차단하고 있습니다.
  • 지역 가상 네트워크 통합 기능을 사용하여 비 RFC 1918 주소에 연결하려고 합니다.

VNet 통합 연결을 끊기 전에 App Service 요금제 또는 웹앱 삭제

VNet 통합 연결을 끊지 않고 웹앱 또는 App Service 요금제를 삭제한 경우 삭제된 리소스와의 통합에 사용된 가상 네트워크 또는 서브넷에서 업데이트/삭제 작업을 수행할 수 없습니다. 서브넷 위임 'Microsoft.Web/serverFarms'는 서브넷에 할당된 상태로 유지되며 업데이트/삭제 작업을 차단합니다.

서브넷 또는 가상 네트워크를 다시 업데이트/삭제하려면 VNet 통합을 다시 만들고 연결을 끊어야 합니다.

  1. App Service 요금제 및 웹앱을 다시 만듭니다(이전과 정확히 동일한 웹앱 이름을 사용해야 함).
  2. 웹앱의 '네트워킹' 블레이드로 이동하여 VNet 통합을 구성합니다.
  3. VNet 통합이 구성되었으면 '연결 끊기' 단추를 선택합니다.
  4. App Service 요금제 또는 웹앱을 삭제합니다.
  5. 서브넷 또는 가상 네트워크를 업데이트/삭제합니다.

위의 단계를 수행한 후에도 VNet 통합에 문제가 있는 경우 Microsoft 지원에 문의하세요.

다음 단계

네트워킹 및 Azure Functions에 대한 자세한 내용은 다음을 확인하세요.