Azure App Service 액세스 제한

App Service의 액세스 제한은 트래픽을 차단하고 필터링하는 방화벽과 동일합니다. 액세스 제한은 인바운드 액세스에만 적용됩니다. 대부분의 App Service 가격 책정 계층에는 또 다른 진입점인 프라이빗 엔드포인트를 앱에 추가하는 기능도 있습니다. 프라이빗 엔드포인트를 통해 들어오는 트래픽에는 액세스 제한이 적용되지 않습니다. App Service에 호스트되는 모든 앱은 기본 진입점을 공개적으로 사용할 수 있습니다. 유일한 예외는 기본 진입점이 가상 네트워크 내부인 ILB App Service Environment에 호스트되는 앱입니다.

작동 방식

트래픽이 App Service에 도달하면 App Service는 먼저 트래픽이 프라이빗 엔드포인트에서 시작되는지 아니면 기본 엔드포인트를 통해 오는지 확인합니다. 트래픽이 프라이빗 엔드포인트를 통해 전송되는 경우 제한 없이 사이트로 직접 전송됩니다. 프라이빗 엔드포인트에 대한 제한은 네트워크 보안 그룹을 사용하여 구성됩니다.

기본 엔드포인트(종종 퍼블릭 엔드포인트)를 통해 트래픽을 보내는 경우 트래픽은 먼저 앱 액세스 수준에서 평가됩니다. 여기에서 액세스를 사용하거나 사용하지 않도록 설정할 수 있습니다. 앱 액세스를 사용하도록 설정하면 사이트 액세스 수준에서 트래픽이 평가됩니다. 앱의 기본 사이트와 고급 도구 사이트(scm 또는 kudu 사이트라고도 함)가 모두 있습니다.

각 사이트에 대한 액세스 제한 규칙 세트를 구성하는 옵션이 있습니다. 액세스 제한 규칙은 우선 순위에 따라 평가됩니다. 일부 규칙의 우선 순위가 같으면 정렬하기 전에 Azure Resource Manager API 및 Azure Portal에서 반환될 때 나열되는 순서대로 평가됩니다. 일치하는 규칙이 없는 경우 동작을 지정할 수도 있습니다. 자세한 내용은 다음 섹션을 참조하세요.

Diagram of access restrictions high-level flow.

앱 액세스

앱 액세스를 사용하면 기본(퍼블릭) 엔드포인트를 통해 액세스 가능한지 여부를 구성할 수 있습니다. 이 동작을 Disabled 또는 Enabled로 구성합니다. 액세스를 사용하도록 설정하면 사이트 액세스 제한 규칙을 추가하여 선택한 가상 네트워크 및 IP 주소에서 액세스를 제어할 수 있습니다.

설정이 지정되지 않은 경우(속성은 null) 기본 동작은 액세스를 사용하지 않도록 동작을 변경하는 프라이빗 엔드포인트가 없는 한 액세스를 사용하도록 설정하는 것입니다. Azure Portal에서 속성이 설정되지 않으면 라디오 단추도 설정되지 않고 기본 동작을 사용하게 됩니다.

Screenshot of app access option in Azure portal.

Azure Resource Manager API에서는 앱 액세스를 제어하는 속성을 publicNetworkAccess라고 합니다. ILB(내부 부하 분산 장치) App Service Environment의 경우 앱의 기본 진입점은 항상 가상 네트워크 내부에 있습니다. 앱 액세스(publicNetworkAccess)를 사용하도록 설정해도 앱에 대한 직접 공용 액세스 권한이 부여되지 않습니다. 대신 App Service Environment 내부 IP 주소에 해당하는 기본 진입점에서 액세스할 수 있습니다. ILB App Service Environment에서 앱 액세스를 사용하지 않도록 설정하면 개별 앱에 추가된 프라이빗 엔드포인트를 통해서만 앱에 액세스할 수 있습니다.

사이트 액세스

사이트 액세스 제한을 사용하여 들어오는 요청을 필터링할 수 있습니다. 사이트 액세스 제한을 사용하면 우선 순위에 따라 평가되는 허용 및 거부 규칙 목록을 작성할 수 있습니다. Azure 네트워킹의 NSG(네트워크 보안 그룹) 기능과 유사합니다.

Screenshot of site access options in Azure portal.

사이트 액세스 제한에는 다음과 같은 적용 가능한 여러 가지 유형의 규칙이 있습니다.

일치하지 않는 규칙

일치하는 규칙이 없는 경우 동작을 구성할 수 있습니다(기본 작업). 이는 항상 규칙 컬렉션의 마지막 규칙으로 표시되는 특수 규칙입니다. 설정이 구성되지 않은 경우 일치하지 않는 규칙 동작은 구성된 규칙에 따라 달라집니다. 규칙이 없는 경우 일치하지 않는 규칙 동작은 모든 액세스를 허용하는 것이지만 하나 이상의 규칙이 있는 경우 모든 액세스를 거부하도록 암시적으로 변경됩니다. 정의된 규칙에 관계없이 액세스를 허용하거나 거부하도록 이 동작을 명시적으로 구성할 수 있습니다.

IP 기반 액세스 제한 규칙

IP 기반 액세스 제한 기능은 앱을 연결하는 데 사용할 수 있는 IP 주소를 제한하려는 경우에 유용합니다. IPv4 및 IPv6 모두 지원됩니다. 이 기능에 대한 몇 가지 사용 사례:

  • 잘 정의된 주소 집합에서 앱으로의 액세스 제한.
  • 외부 부하 분산 서비스 또는 알려진 송신 IP 주소가 있는 다른 네트워크 어플라이언스를 통해 들어오는 트래픽에 대한 액세스 제한.

이 기능을 사용하도록 설정하는 방법에 대한 자세한 내용은 액세스 제한 구성을 참조하세요.

참고 항목

IP 기반 액세스 제한 규칙은 앱이 App Service Environment에 있는 경우 가상 네트워크 주소 범위만 처리합니다. 앱이 다중 테넌트 서비스에 있는 경우 서비스 엔드포인트를 사용하여 가상 네트워크의 일부 서브넷으로 트래픽을 제한해야 합니다.

서비스 엔드포인트 기반 액세스 제한 규칙

소스 주소는 선택한 서브넷 집합에서 와야 하므로 서비스 엔드포인트를 사용하여 앱에 대한 인바운드 액세스를 잠글 수 있습니다. 이 기능은 IP 액세스 제한과 함께 작동합니다. 서비스 엔드포인트는 원격 디버깅과 호환되지 않습니다. 앱에서 원격 디버깅을 사용하려는 경우 클라이언트는 서비스 엔드포인트가 사용하도록 설정된 서브넷에 있을 수 없습니다. 서비스 엔드포인트를 설정하는 프로세스는 IP 액세스 제한을 설정하는 프로세스와 유사합니다. 가상 네트워크의 공용 주소 및 서브넷을 포함하는 액세스 규칙의 허용/거부 목록을 작성할 수 있습니다.

참고 항목

프라이빗 엔드포인트가 구성된 앱 또는 IP 기반 SSL(앱 할당 주소)을 사용하는 앱에서는 서비스 엔드포인트 기반 액세스 제한 규칙이 지원되지 않습니다.

앱을 사용하여 서비스 엔드포인트를 구성하는 방법에 대한 자세한 내용은 Azure App Service 액세스 제한을 참조하세요.

모든 서비스 엔드포인트 원본

테스트 또는 특정 시나리오에서 서비스 엔드포인트 사용 서브넷의 트래픽을 허용할 수 있습니다. 이렇게 하려면 IP 범위 대신 "AnyVnets" 텍스트를 사용하여 IP 기반 규칙을 정의하면 됩니다. 포털에서는 이러한 규칙을 만들 수 없지만, 기존 IP 기반 규칙을 수정하고 IP 주소를 "AnyVnets" 문자열로 바꿀 수 있습니다.

서비스 태그 기반 액세스 제한 규칙

Azure 서비스 태그는 Azure 서비스에 대한 잘 정의된 IP 주소 집합입니다. 서비스 태그는 다양한 Azure 서비스에서 사용되는 IP 범위를 그룹화하고, 범위가 특정 지역으로 추가 지정되는 경우가 많습니다. 이 유형의 규칙은 특정 Azure 서비스의 인바운드 트래픽을 필터링할 수 있습니다.

태그의 전체 목록 및 자세한 내용은 서비스 태그 링크를 방문하세요.

이 기능을 사용하도록 설정하는 방법에 대한 자세한 내용은 액세스 제한 구성을 참조하세요.

다중 원본 규칙

다중 원본 규칙을 사용하면 단일 규칙에 최대 8개의 IP 범위 또는 8개의 서비스 태그를 결합할 수 있습니다. IP 범위가 512개가 넘는 경우 다중 원본 규칙을 사용할 수 있습니다. 여러 IP 범위가 단일 http 헤더 필터와 결합되는 논리 규칙을 만들려는 경우 다중 원본 규칙을 사용할 수도 있습니다.

다중 원본 규칙은 단일 원본 규칙을 정의하는 것과 같은 방식으로 정의되지만 각 범위는 쉼표로 구분됩니다.

포털에서는 이러한 규칙을 만들 수 없지만, 기존 서비스 태그 또는 IP 기반 규칙을 수정하고 규칙에 더 많은 원본을 추가할 수 있습니다.

사이트 액세스 제한 규칙에 대한 Http 헤더 필터링

모든 규칙은 형식에 관계없이 http 헤더 필터링을 추가할 수 있습니다. Http 헤더 필터링을 사용하면 들어오는 요청을 더 자세히 검사하고 특정 http 헤더 값을 기준으로 필터링할 수 있습니다. 헤더마다 값이 규칙별로 최대 8개까지 있을 수 있습니다. 다음은 지원되는 http 헤더를 나열합니다.

  • X-Forwarded-For. 프록시 서버를 통해 연결하는 클라이언트의 원래 IP 주소를 식별하는 표준 헤더입니다. 유효한 IP 주소를 허용합니다.
  • X-Forwarded-Host. 클라이언트에서 요청한 원래 호스트를 식별하는 표준 헤더입니다. 최대 64자까지 문자열을 허용합니다.
  • X-Azure-FDID. 역방향 프록시 인스턴스를 식별하는 사용자 지정 헤더입니다. Azure Front Door는 인스턴스를 식별하는 GUID를 보내지만 Microsoft 이외의 프록시에서 특정 인스턴스를 식별하는 데 사용할 수도 있습니다. 최대 64자까지 문자열을 허용합니다.
  • X-FD-HealthProbe. 역방향 프록시의 상태 프로브를 식별하는 사용자 지정 헤더입니다. Azure Front Door는 상태 프로브 요청을 고유하게 식별하기 위해 "1"을 보냅니다. 이 헤더는 Microsoft 이외의 프록시에 사용하여 상태 프로브를 식별할 수도 있습니다. 최대 64자까지 문자열을 허용합니다.

http 헤더 필터링의 몇 가지 사용 사례는 다음과 같습니다.

  • 호스트 이름을 전달하는 프록시 서버에서의 트래픽에 대한 액세스 제한
  • 서비스 태그 규칙 및 X-Azure-FDID 헤더 제한을 통해 특정 Azure Front Door 인스턴스에 대한 액세스 제한

진단 로깅

App Service는 다양한 로깅 범주를 Azure Monitor로 보낼 수 있습니다. 이러한 범주 중 하나를 IPSecurity Audit logs라고 하며 액세스 제한의 활동을 나타냅니다. 허용 및 거부 규칙과 일치하는 모든 요청(일치하지 않는 규칙 제외)은 허용 및 거부 모두 기록되며 액세스 제한 구성의 유효성을 검사하는 데 사용할 수 있습니다. 로깅 기능은 규칙 구성 문제를 해결할 때에도 강력한 도구입니다.

고급 사용 사례

위의 기능을 결합하면 다음 섹션에 설명된 몇 가지 특정 사용 사례를 해결할 수 있습니다.

단일 IP 주소 차단

하나 이상의 특정 IP 주소를 거부/차단하려면 IP 주소를 거부 규칙으로 추가하고 일치하지 않는 모든 트래픽을 허용하도록 불일치 규칙을 구성하면 됩니다.

고급 도구 사이트에 대한 액세스 제한

scm 또는 kudu라고도 하는 고급 도구 사이트에는 사용자가 구성할 수 있는 개별 규칙 컬렉션이 있습니다. 이 사이트에 대한 불일치 규칙을 구성할 수도 있습니다. 설정을 통해 기본 사이트에 대해 구성된 규칙을 사용할 수 있습니다. 특정 고급 도구 사이트 기능에 대한 액세스를 선택적으로 허용할 수 없습니다. 예를 들어 고급 도구 사이트의 WebJobs 관리 콘솔에 대한 액세스만 선택적으로 허용할 수 없습니다.

프라이빗 엔드포인트를 통해 배포

공개적으로 액세스할 수 있는 사이트가 있지만 배포 시스템은 가상 네트워크에 있는 경우가 있습니다. 프라이빗 엔드포인트를 추가하여 배포 트래픽을 비공개로 유지할 수 있습니다. 그런 다음, 퍼블릭 앱 액세스를 사용하도록 설정해야 합니다. 마지막으로, 고급 도구 사이트에서 거부하도록 불일치 규칙을 설정해야 합니다. 그러면 해당 엔드포인트에 대한 모든 퍼블릭 트래픽이 차단됩니다.

프라이빗 엔드포인트로 보호된 사이트에 대한 외부 파트너 액세스 허용

이 시나리오에서는 프라이빗 엔드포인트를 통해 사이트에 액세스하고 프라이빗 엔드포인트를 통해 배포합니다. 외부 파트너를 일시적으로 초대하여 사이트를 테스트할 수 있습니다. 이 경우 퍼블릭 앱 액세스를 사용하도록 설정하면 됩니다. 파트너의 클라이언트를 식별하는 규칙(IP 기반)을 추가합니다. 기본 및 고급 도구 사이트를 모두 거부하도록 불일치 규칙 작업을 구성합니다.

특정 Azure Front Door 인스턴스에 대한 액세스 제한

Azure Front Door에서 애플리케이션으로 이동하는 트래픽은 AzureFrontDoor.Backend 서비스 태그에 정의된 잘 알려진 IP 범위 세트에서 시작됩니다. 서비스 태그 제한 규칙을 사용하여 Azure Front Door에서 시작되는 트래픽으로만 제한할 수 있습니다. 트래픽이 특정 인스턴스에서만 시작되도록 하려면 Azure Front Door가 보내는 고유한 HTTP 헤더인 X-Azure-FDID를 기준으로 들어오는 요청을 추가로 필터링해야 합니다. Front Door ID는 포털에서 찾을 수 있습니다.

다음 단계

참고 항목

사이트에 대한 공용 액세스를 차단하는 액세스 제한 규칙은 로그 스트리밍과 같은 서비스도 차단할 수 있습니다. 필요한 경우 제한 사항에서 App Service의 IP 주소를 허용해야 합니다.