다음을 통해 공유


Azure Functions 네트워킹 옵션

이 문서에서는 Azure Functions에 대한 호스팅 옵션에서 사용할 수 있는 네트워킹 기능을 설명합니다. 다음 네트워킹 옵션은 인바운드 및 아웃바운드 네트워킹 기능으로 분류할 수 있습니다. 인바운드 기능을 사용하면 앱에 대한 액세스를 제한할 수 있는 반면, 아웃바운드 기능을 사용하면 가상 네트워크에서 보호되는 리소스에 앱을 연결하고 아웃바운드 트래픽이 라우팅되는 방법을 제어할 수 있습니다.

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

기능 Flex 사용량 계획 사용 계획 프리미엄 계획 전용 플랜/ASE Container Apps1
인바운드 IP 제한
인바운드 프라이빗 엔드포인트
가상 네트워크 통합 2개 3
아웃바운드 IP 제한
  1. 자세한 내용은 Azure Container Apps 환경의 네트워킹을 참조하세요.
  2. 가상 네트워크 트리거를 사용할 때는 특별한 고려 사항이 있습니다.
  3. 전용/ASE 계획만 게이트웨이 필수 가상 네트워크 통합을 지원합니다.

빠른 시작 리소스

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

인바운드 네트워킹 기능

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

인바운드 액세스 제한

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

액세스 제한은 Flex 사용량 플랜, 탄력적 프리미엄, ConsumerApp Service에서 사용할 수 있습니다.

참고 항목

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

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

프라이빗 엔드포인트

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

Flex Consumption, Elastic Premium 및 Dedicated(App Service) 계획에서 호스트되는 함수에 프라이빗 엔드포인트를 사용할 수 있습니다.

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

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

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

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

서비스 엔드포인트

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

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

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

서비스 엔드포인트 사용

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

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

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

Virtual Network 유형이 선택된

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

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

아웃바운드 네트워킹 기능

이 섹션의 기능을 사용하여 앱에서 만든 아웃바운드 연결을 관리할 수 있습니다.

가상 네트워크 통합

이 섹션에서는 함수가 앱에서 데이터 아웃바운드를 제어하기 위해 지원하는 기능에 대해 자세히 설명합니다.

가상 네트워크 통합은 가상 네트워크의 리소스에 대한 함수 앱 액세스를 제공합니다. 통합되면 앱은 가상 네트워크를 통해 아웃바운드 트래픽을 라우팅합니다. 이렇게 하면 앱이 선택한 서브넷에서만 트래픽을 허용하는 규칙을 사용하여 프라이빗 엔드포인트 또는 리소스에 액세스할 수 있습니다. 대상이 가상 네트워크 외부의 IP 주소인 경우 NAT 게이트웨이를 구성하지 않은 한 앱 속성에 나열된 주소 중 하나에서 원본 IP가 계속 전송됩니다.

Azure Functions는 두 종류의 가상 네트워크 통합을 지원합니다.

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

지역 가상 네트워크 통합

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

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

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

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

참고 항목

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

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

Flex 소비 계획에 대한 고려 사항:

  • 다음 지침에 따라 구독에 대해 Microsoft.App Azure 리소스 공급자가 사용하도록 설정되어 있는지 확인합니다. 서브넷 위임에 필요합니다.
  • Flex Consumption 계획에서 실행할 때 필요한 서브넷 위임은 .입니다 Microsoft.App/environments. 이는 위임 요구 사항이 다른 Elastic Premium 및 Dedicated(App Service) 계획과 다릅니다.
  • 앱이 40개를 초과하여 크기 조정되더라도 하나의 함수 앱에 최대 40개의 IP 주소를 사용하도록 계획할 수 있습니다. 예를 들어 동일한 서브넷에 통합된 15개의 Flex Consumption 함수 앱이 있는 경우 최대 15x40 = 600개의 IP 주소를 계획해야 합니다. 이 제한은 변경될 수 있으며 적용되지 않습니다.
  • 서브넷은 이미 다른 목적(예: 프라이빗 또는 서비스 엔드포인트 또는 다른 호스팅 플랜이나 서비스에 위임)으로 사용 중일 수 없습니다. 여러 Flex Consumption 앱과 동일한 서브넷을 공유할 수 있지만 네트워킹 리소스는 이러한 함수 앱에서 공유되므로 하나의 앱이 동일한 서브넷에서 다른 앱의 성능에 영향을 미칠 수 있습니다.

Elastic Premium, Dedicated(App Service)Container Apps 계획에 대한 고려 사항:

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

가상 네트워크 통합 사용

  1. Azure Portal의 함수 앱에서 네트워킹을 선택한 다음, VNet 통합 아래에서 구성하려면 여기를 클릭을 선택합니다.

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

    앱에서 가상 네트워크 통합을 사용하도록 설정할 수 있는 VNet 통합 페이지의 스크린샷

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

    VNet을 선택

    • Flex 소비 및 탄력적 프리미엄 호스팅 계획은 지역 가상 네트워크 통합만 지원합니다. 가상 네트워크가 동일한 지역에 있는 경우 새 서브넷을 만들거나 기존의 빈 서브넷을 선택합니다.

    • 다른 지역에서 가상 네트워크를 선택하려면 사이트 간 지점을 사용하도록 프로비저닝된 가상 네트워크 게이트웨이가 있어야 합니다. 지역 간 가상 네트워크 통합은 전용 계획에서만 지원되지만 글로벌 피어링은 지역 가상 네트워크 통합과 함께 작동합니다.

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

프라이빗 트래픽(RFC1918 트래픽)만 라우팅하려는 경우 이 App Service 문서의 단계를 따르세요.

서브넷

가상 네트워크 통합은 전용 서브넷에 따라 다릅니다. 서브넷을 프로비전할 때 Azure 서브넷은 처음부터 5개의 IP를 잃습니다. 탄력적 프리미엄 및 App Service 요금제의 경우 각 계획 인스턴스의 통합 서브넷에서 하나의 주소가 사용됩니다. 앱을 4개의 인스턴스로 스케일링하면 4개의 주소가 사용됩니다. Flex 소비의 경우 이 기능은 적용되지 않으며 인스턴스는 IP 주소를 공유합니다.

Elastic Premium 및 Dedicated(App Service) 계획에서 인스턴스 크기로 확장 또는 축소할 때 짧은 기간 동안 필요한 주소 공간이 두 배로 증가합니다. 이렇게 되면 지정된 서브넷 크기에 대해 실제로 사용 가능한 지원되는 인스턴스에 영향을 줍니다. 다음 표는 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이 필요합니다.

Flex 소비 계획을 사용하면 Flex Consumption 계획에서 실행되는 여러 앱이 동일한 서브넷과 통합할 수 있습니다. Elastic Premium 및 Dedicated(App Service) 호스팅 계획의 경우는 그렇지 않습니다. 이러한 계획은 두 개의 가상 네트워크만 각 App Service 계획과 연결할 수 있도록 허용합니다. 단일 App Service 계획의 여러 앱은 동일한 서브넷에 조인할 수 있지만 다른 계획의 앱은 동일한 서브넷을 사용할 수 없습니다.

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

네트워크 보안 그룹

네트워크 보안 그룹을 사용하여 가상 네트워크의 리소스 간 트래픽을 제어할 수 있습니다. 예를 들어 앱의 아웃바운드 트래픽이 가상 네트워크의 리소스에 도달하거나 네트워크를 벗어나지 못하도록 차단하는 보안 규칙을 만들 수 있습니다. 이러한 보안 규칙은 가상 네트워크 통합을 구성한 앱에 적용됩니다. 공용 주소에 대한 트래픽을 차단하려면 가상 네트워크 통합 및 모두 라우팅을 사용하도록 설정해야 합니다. NSG의 인바운드 규칙은 앱에 적용되지 않습니다. 가상 네트워크 통합은 앱의 아웃바운드 트래픽에만 영향을 미치기 때문입니다.

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

경로

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

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

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

아웃바운드 IP 제한

아웃바운드 IP 제한은 Flex 사용량 플랜, 탄력적 프리미엄 플랜, App Service 요금제 또는 App Service Environment에서 사용할 수 있습니다. App Service Environment가 배포되는 가상 네트워크에 대한 아웃바운드 제한을 구성할 수 있습니다.

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

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

Azure DNS 프라이빗 영역

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

자동화

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

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

하이브리드 연결

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

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

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

Important

하이브리드 연결은 함수 앱이 Windows에서 실행되는 경우에만 지원됩니다. Linux 앱은 지원되지 않습니다.

가상 네트워크를 통해 Azure 서비스에 연결

가상 네트워크 통합을 사용하면 함수 앱이 가상 네트워크의 리소스에 액세스할 수 있습니다. 이 섹션에서는 특정 서비스에 앱을 연결하려고 할 때 고려해야 할 사항을 간략하게 설명합니다.

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

참고 항목

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

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

Flex Consumption, Elastic Premium 및 Dedicated(App Service) 계획에서 함수 앱과 함께 네트워크 제한 스토리지 계정을 사용할 수 있습니다. 소비 계획은 지원되지 않습니다. Elastic Premium 및 Dedicated 플랜의 경우 프라이빗 콘텐츠 공유 라우팅 이 구성되어 있는지 확인해야 합니다. 가상 네트워크로 보호된 스토리지 계정으로 함수 앱을 구성하는 방법을 알아보려면 스토리지 계정을 가상 네트워크로 제한하세요.

Key Vault 참조 사용

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

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

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

워크로드에서 가상 네트워크로 보호되는 이벤트 원본에서 앱을 트리거해야 할 수 있습니다. 비 HTTP 트리거 원본에서 수신된 이벤트 수에 따라 앱의 크기를 동적으로 조정하려는 경우 두 가지 옵션이 있습니다.

  • Flex Consumption에서 함수 앱을 실행합니다.
  • 탄력적 프리미엄 플랜에서 함수 앱을 실행하고 가상 네트워크 트리거 지원을 사용하도록 설정합니다.

Dedicated(App Service) 계획에서 실행되는 함수 앱은 이벤트에 따라 동적으로 확장되지 않습니다. 대신 스케일 아웃은 사용자가 정의하는 자동 크기 조정 규칙에 따라 결정됩니다.

가상 네트워크 트리거가 포함된 탄력적 프리미엄 플랜

Elastic Premium 계획을 사용하면 가상 네트워크에서 보호되는 서비스에 의해 트리거되는 함수를 만들 수 있습니다. 이러한 비 HTTP 트리거를 가상 네트워크 트리거라고 합니다.

기본적으로 가상 네트워크 트리거는 함수 앱이 미리 생성된 인스턴스 수를 초과하여 확장되지 않습니다. 그러나 특정 확장은 함수 앱이 동적으로 스케일링되도록 하는 가상 네트워크 트리거를 지원합니다. 다음 방법 중 하나로 지원되는 확장에 대해 함수 앱에서 이 동적 스케일링 모니터링을 사용하도록 설정할 수 있습니다.

  1. Azure Portal에서 함수 앱으로 이동합니다.

  2. 설정에서 구성을 선택하고 함수 런타임 설정 탭에서 런타임 스케일링 모니터링켜기로 설정합니다.

  3. 저장을 선택하여 함수 앱 구성을 업데이트하고 앱을 다시 시작합니다.

VNETToggle

가상 네트워크 트리거의 모니터링을 사용하도록 설정하면 애플리케이션 성능에 영향을 미칠 수 있지만 이 영향은 매우 작을 수 있습니다.

가상 네트워크 트리거의 동적 스케일링 모니터링에 대한 지원은 Functions 런타임 버전 1.x에서 사용할 수 없습니다.

이 표에 나온 확장은 가상 네트워크 트리거의 동적 스케일링 모니터링을 지원합니다. 최상의 스케일링 성능을 얻으려면 대상 기반 스케일링도 지원하는 버전으로 업그레이드해야 합니다.

확장(최소 버전) 런타임 스케일링 모니터링 전용 대상 기반 스케일링 사용
Microsoft.Azure.WebJobs.Extensions.CosmosDB > 3.0.5 > 4.1.0
Microsoft.Azure.WebJobs.Extensions.DurableTask > 2.0.0 해당 없음
Microsoft.Azure.WebJobs.Extensions.EventHubs > 4.1.0 > 5.2.0
Microsoft.Azure.WebJobs.Extensions.ServiceBus > 3.2.0 > 5.9.0
Microsoft.Azure.WebJobs.Extensions.Storage > 3.0.10 > 5.1.0*

* 큐 스토리지 전용

Important

가상 네트워크 트리거 모니터링을 사용하도록 설정하면 이러한 확장에 대한 트리거가 있어야만 앱이 동적으로 스케일링할 수 있습니다. 이 표에 없는 확장에서 트리거를 계속 사용할 수 있지만 예열된 인스턴스 수 이상으로 스케일링되지 않습니다. 모든 트리거 및 바인딩 확장의 전체 목록은 트리거 및 바인딩을 참조하세요.

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

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

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

테스트 고려 사항

프라이빗 엔드포인트를 사용하여 함수 앱에서 함수를 테스트하는 경우 해당 네트워크의 VM(가상 머신)과 같은 동일한 가상 네트워크 내에서 테스트를 수행해야 합니다. 해당 VM의 포털에서 코드 + 테스트 옵션을 사용하려면 함수 앱에 다음 CORS 원본을 추가해야 합니다.

  • https://functions-next.azure.com
  • https://functions-staging.azure.com
  • https://functions.azure.com
  • https://portal.azure.com

프라이빗 엔드포인트 또는 기타 액세스 제한을 사용하여 함수 앱에 대한 액세스를 제한한 경우 서비스 태그 AzureCloud도 허용 목록에 추가해야 합니다. 허용 목록을 업데이트하려면:

  1. 함수 앱으로 이동하여 설정>네트워킹을 선택한 다음 인바운드 액세스 구성>공용 네트워크 액세스를 선택합니다.

  2. 공용 네트워크 액세스선택한 가상 네트워크 및 IP 주소에서 사용으로 설정되어 있는지 확인합니다.

  3. 사이트 액세스 및 규칙 아래에 규칙을 추가합니다.

    1. 원본 설정 형식으로 Service Tag를 선택하고 서비스 태그AzureCloud를 선택합니다.

    2. 작업이 허용인지 확인하고 원하는 이름과 우선 순위를 설정합니다.

문제 해결

이 기능은 쉽게 설정할 수 있지만 그렇다고 해서 환경에 문제가 발생하지 않는 것은 아닙니다. 원하는 엔드포인트에 액세스하다가 문제가 발생하는 경우, 앱 콘솔에서 연결을 테스트하는 데 사용할 수 있는 유틸리티가 있습니다. 사용할 수 있는 두 개의 콘솔이 있습니다. 하나는 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 Portal에서 해당 앱으로 이동합니다. 진단 및 문제 해결을 선택한 다음, 네트워크 문제 해결사를 검색합니다.

연결 문제 - 개인 IP가 플랜의 모든 인스턴스 및 DNS 설정에 할당되었는지 확인하는 것과 같이 가상 네트워크 통합의 상태를 확인합니다. 사용자 지정 DNS가 구성되지 않은 경우 기본 Azure DNS가 적용됩니다. 문제 해결사도 Azure Storage 및 기타 바인딩 종속성에 대한 연결을 포함하여 일반적인 함수 앱 종속성을 확인합니다.

연결 문제에 대한 문제 해결사 실행을 보여 주는 스크린샷.

구성 문제 - 이 문제 해결사에서는 서브넷이 가상 네트워크 통합에 유효한지 확인합니다.

구성 문제에 대한 문제 해결사 실행을 보여 주는 스크린샷.

서브넷/VNet 삭제 문제 - 이 문제 해결사에서는 서브넷에 잠금이 있는지 여부와 VNet/서브넷 삭제를 차단할 수 있는 사용하지 않은 서비스 연결 링크가 있는지 확인합니다.

다음 단계

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