App Service 앱에 프라이빗 엔드포인트 사용

중요

프라이빗 엔드포인트는 기본, 표준, PremiumV2, PremiumV3, IsolatedV2, Functions Premium(Elastic Premium 플랜이라고도 함) 등의 App Service 플랜에서 컨테이너화 여부에 상관없이 호스트되는 Windows 및 Linux 앱에서 사용할 수 있습니다.

App Service 앱용 프라이빗 엔드포인트를 사용하여 프라이빗 네트워크에 있는 클라이언트가 Azure Private Link를 통해 앱에 안전하게 액세스할 수 있도록 할 수 있습니다. 프라이빗 엔드포인트는 Azure 가상 네트워크 주소 공간의 IP 주소를 사용합니다. 프라이빗 네트워크에 있는 클라이언트와 앱 간의 네트워크 트래픽은 가상 네트워크와 Microsoft 백본 네트워크의 Private Link를 트래버스하여 퍼블릭 인터넷에 공개되지 않습니다.

앱용 프라이빗 엔드포인트를 사용하면 다음을 수행할 수 있습니다.

  • 프라이빗 엔드포인트를 구성하여 앱을 보호하고 퍼블릭 네트워크 액세스를 사용하지 않도록 설정하여 퍼블릭 노출을 해소합니다.
  • VPN 또는 ExpressRoute 개인 피어링을 사용하여 가상 네트워크에 연결하는 온-프레미스 네트워크에서 앱에 안전하게 연결합니다.
  • 가상 네트워크에서 데이터 반출을 방지합니다.

개념적 개요

프라이빗 엔드포인트는 가상 네트워크의 서브넷에 있는 App Service 앱에 대한 특수 NIC(네트워크 인터페이스)입니다. 앱용 프라이빗 엔드포인트를 만들면 프라이빗 네트워크의 클라이언트와 앱 간에 보안 연결을 제공합니다. 프라이빗 엔드포인트에는 가상 네트워크의 IP 주소 범위에서 IP 주소가 할당됩니다. 프라이빗 엔드포인트와 앱 간의 연결은 보안 Private Link를 사용합니다. 프라이빗 엔드포인트는 앱으로 들어오는 트래픽에만 사용됩니다. 나가는 트래픽은 이 프라이빗 엔드포인트를 사용하지 않습니다. 가상 네트워크 통합 기능을 통해 다른 서브넷의 네트워크로 나가는 트래픽을 삽입할 수 있습니다.

앱의 각 슬롯은 별도로 구성됩니다. 슬롯당 최대 100개의 프라이빗 엔드포인트를 연결할 수 있습니다. 슬롯 간에 프라이빗 엔드포인트를 공유할 수 없습니다. 슬롯의 하위 리소스 이름은 sites-<slot-name>입니다.

프라이빗 엔드포인트를 연결하는 서브넷에 다른 리소스가 있을 수 있고 빈 전용 서브넷이 필요하지 않습니다. 앱과는 다른 지역에 프라이빗 엔드포인트를 배포할 수도 있습니다.

참고

가상 네트워크 통합 기능은 프라이빗 엔드포인트와 동일한 서브넷을 사용할 수 없습니다. 이는 가상 네트워크 통합 기능의 제한 사항입니다.

보안 관점에서

  • 프라이빗 엔드포인트 및 퍼블릭 액세스가 앱에 공존할 수 있습니다. 자세한 내용은 액세스 제한 개요를 참조하세요.
  • 앱에 프라이빗 엔드포인트를 사용하도록 설정하는 경우 격리를 보장하기 위해 퍼블릭 네트워크 액세스를 사용하지 않도록 설정해야 합니다.
  • 다른 지역의 가상 네트워크를 포함하여 다른 가상 네트워크 및 서브넷에서 여러 프라이빗 엔드포인트를 사용하도록 설정할 수 있습니다.
  • 앱의 액세스 제한 규칙은 프라이빗 엔드포인트를 통과하는 트래픽에 대해 평가되지 않습니다.
  • 대상이 태그 인터넷 또는 Azure 서비스인 모든 NSG 규칙을 제거하여 가상 네트워크에서 데이터 반출 위험을 제거할 수 있습니다.

앱의 웹 HTTP 로그에서 클라이언트 원본 IP를 찾을 수 있습니다. 이 기능은 클라이언트 IP 속성을 앱까지 전달하는 TCP 프록시 프로토콜을 사용하여 구현됩니다. 자세한 내용은 TCP 프록시 v2를 사용하여 연결 정보 가져오기를 참조하세요.

App Service 앱 프라이빗 엔드포인트 전역 개요

DNS

App Service 앱에 프라이빗 엔드포인트를 사용하는 경우 요청된 URL은 앱의 이름과 일치해야 합니다. 기본값은 mywebappname.azurewebsites.net입니다.

기본적으로 프라이빗 엔드포인트를 사용하지 않는 웹 앱의 공개 이름은 클러스터에 대한 정식 이름입니다. 예를 들어 이름 확인은 다음과 같습니다.

이름 형식
mywebapp.azurewebsites.net CNAME clustername.azurewebsites.windows.net
clustername.azurewebsites.windows.net CNAME cloudservicename.cloudapp.net
cloudservicename.cloudapp.net A 40.122.110.154

프라이빗 엔드포인트를 배포할 때 정식 이름 mywebapp.privatelink.azurewebsites.net을 가리키도록 DNS 항목을 업데이트합니다. 예를 들어 이름 확인은 다음과 같습니다.

이름 형식 설명
mywebapp.azurewebsites.net CNAME mywebapp.privatelink.azurewebsites.net
mywebapp.privatelink.azurewebsites.net CNAME clustername.azurewebsites.windows.net
clustername.azurewebsites.windows.net CNAME cloudservicename.cloudapp.net
cloudservicename.cloudapp.net A 40.122.110.154 <--이 공용 IP는 프라이빗 엔드포인트가 아니므로 403 오류를 받게 됩니다.

프라이빗 DNS 서버 또는 Azure DNS 프라이빗 영역을 설정해야 합니다. 테스트의 경우 테스트 머신의 호스트 항목을 수정할 수 있습니다. 만들어야 하는 DNS 영역은 privatelink.azurewebsites.net입니다. A 레코드와 프라이빗 엔드포인트 IP를 사용하여 앱에 대한 레코드를 등록합니다. 예를 들어 이름 확인은 다음과 같습니다.

이름 형식 설명
mywebapp.azurewebsites.net CNAME mywebapp.privatelink.azurewebsites.net <--Azure는 앱 주소가 프라이빗 엔드포인트 주소로 가리키도록 Azure 퍼블릭 DNS에 이 CNAME 항목을 만듭니다.
mywebapp.privatelink.azurewebsites.net A 10.10.10.8 <--프라이빗 엔드포인트 IP 주소를 가리키도록 DNS 시스템에서 이 항목을 관리합니다.

이 DNS 구성 후에는 기본 이름인 mywebappname.azurewebsites.net을 사용하여 비공개로 앱에 연결할 수 있습니다. 기본 인증서가 *.azurewebsites.net에 대해 발급되었으므로 이 이름을 사용해야 합니다.

사용자 지정 DNS 이름을 사용해야 하는 경우 앱에 사용자 지정 이름을 추가해야 하며 퍼블릭 DNS 확인을 사용하여 사용자 지정 이름과 같은 사용자 지정 이름의 유효성을 검사해야 합니다. 자세한 내용은 사용자 지정 DNS 유효성 검사를 참조하세요.

Kudu 콘솔 또는 Kudu REST API(예: Azure DevOps 자체 호스팅 에이전트로 배포)의 경우, Azure DNS 프라이빗 영역 또는 사용자 지정 DNS 서버에서 프라이빗 엔드포인트를 가리키는 두 개의 레코드를 만들어야 합니다. 첫 번째는 앱용이고, 두 번째는 앱의 SCM용입니다.

이름 형식
mywebapp.privatelink.azurewebsites.net A PrivateEndpointIP
mywebapp.scm.privatelink.azurewebsites.net A PrivateEndpointIP

App Service Environment v3 특별 고려 사항

IsolatedV2 플랜(App Service Environment v3)에서 호스트되는 앱에 프라이빗 엔드포인트를 사용하도록 설정하려면 App Service Environment 수준에서 프라이빗 엔드포인트 지원을 사용하도록 설정해야 합니다. App Service Environment 구성 창에서 또는 다음 CLI를 통해 Azure Portal에서 기능을 활성화할 수 있습니다.

az appservice ase update --name myasename --allow-new-private-endpoint-connections true

특정 요구 사항

가상 네트워크가 앱과 다른 구독에 있는 경우 가상 네트워크가 있는 구독이 Microsoft.Web 리소스 공급자에 대해 등록되었는지 확인해야 합니다. 이 설명서에 따라 공급자를 명시적으로 등록할 수 있지만, 구독에서 첫 번째 웹앱을 만들 때에도 공급자가 자동으로 등록됩니다.

가격 책정

가격 책정에 대한 자세한 내용은 Azure Private Link 가격 책정을 참조하세요.

제한 사항

  • 탄력적 프리미엄 플랜에서 Azure 함수를 프라이빗 엔드포인트와 함께 사용하는 경우 Azure Portal에서 함수를 실행하려면 직접 네트워크에 액세스할 수 있어야 합니다. 그렇지 않으면 HTTP 403 오류가 발생합니다. 즉, 브라우저가 Azure Portal에서 함수를 실행하기 위해 프라이빗 엔드포인트에 연결할 수 있어야 합니다.
  • 최대 100개의 프라이빗 엔드포인트를 특정 앱에 연결할 수 있습니다.
  • 원격 디버깅 기능은 프라이빗 엔드포인트를 통해 사용할 수 없습니다. 슬롯에 코드를 배포하고 원격으로 디버그하는 것이 좋습니다.
  • FTP 액세스는 인바운드 공용 IP 주소를 통해 제공됩니다. 프라이빗 엔드포인트는 앱에 대한 FTP 액세스를 지원하지 않습니다.
  • IP 기반 SSL은 프라이빗 엔드포인트에서 지원되지 않습니다.
  • 프라이빗 엔드포인트로 구성하는 앱은 서비스 엔드포인트 기반 액세스 제한 규칙을 사용할 수 없습니다.

Azure Private Link 기능 및 프라이빗 엔드포인트는 정기적으로 개선되고 있습니다. 제한 사항에 대한 최신 정보는 이 문서를 확인하세요.

다음 단계