다음을 통해 공유


Azure App Service 액세스 제한 설정

액세스 제한을 설정할 때 앱에 대한 네트워크 액세스를 제어하는 우선 순위가 지정된 허용/거부 목록을 정의할 수 있습니다. 이 목록에는 IP 주소나 Azure Virtual Network 서브넷이 포함될 수 있습니다. 하나 이상의 항목이 있는 경우 목록 끝에 암시적 모두 거부가 표시됩니다. 자세한 내용은 Azure 앱 서비스 액세스 제한을 참조하세요.

액세스 제한 기능은 모든 Azure App Service 호스팅 워크로드와 함께 작동합니다. 워크로드에는 웹앱, API 앱, Linux 앱, Linux 사용자 지정 컨테이너 및 Azure Functions 앱이 포함될 수 있습니다.

누군가가 앱 FROM 에 요청을 하면 액세스 제한 목록의 규칙에 따라 주소가 평가됩니다. 주소가 FROM 서비스 엔드포인트 Microsoft.Web로 구성된 서브넷에 있는 경우 원본 서브넷은 액세스 제한 목록의 가상 네트워크 규칙과 비교됩니다. 주소가 목록의 규칙을 기준으로 허용되지 않을 경우 서비스는 HTTP 403 상태 코드로 답변합니다.

액세스 제한 기능은 코드가 실행되는 작업자 호스트의 상위에 위치한 App Service 프런트엔드 컴포넌트에 구현됩니다. 따라서 액세스 제한은 사실상 네트워크 액세스 제어 목록입니다.

Azure 가상 네트워크에서 웹앱에 대한 액세스를 제한하는 기능은 서비스 엔드포인트 를 사용합니다. 서비스 엔드포인트를 사용하면 선택한 서브넷에서 다중 테넌트 서비스에 대한 액세스를 제한할 수 있습니다. App Service Environment에서 호스트하는 앱에 대한 트래픽을 제한하는 것은 작동하지 않습니다. App Service Environment에 있는 경우 IP 주소 규칙을 적용하여 해당 앱에 대한 액세스를 제어할 수 있습니다.

참고

서비스 엔드포인트는 네트워킹 쪽과 사용 중인 Azure 서비스에 대해 모두 사용하도록 설정해야 합니다. 서비스 엔드포인트를 지원하는 Azure 서비스 목록은 Virtual Network 서비스 엔드포인트를 참조하세요.

액세스 제한의 흐름을 보여 주는 다이어그램

포털에서 액세스 제한 규칙 관리

앱에 액세스 제한 규칙을 추가하려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. 액세스 제한을 추가하려는 앱을 선택합니다.

  3. 왼쪽 메뉴에서 네트워킹

  4. 네트워킹 창의 인바운드 트래픽 구성에서 공용 네트워크 액세스 설정을 선택합니다.

    Azure Portal의 App Service 네트워킹 옵션 창 스크린샷

  5. 액세스 제한 창에서 앱에 대해 정의된 액세스 제한 규칙 목록을 검토합니다.

    선택한 앱에 대해 정의된 액세스 제한 규칙 목록을 보여 주는 Azure Portal의 액세스 제한 창 스크린샷

    목록에는 현재 앱에 적용되는 제한 사항이 표시됩니다. 앱에 가상 네트워크 제한이 있는 경우, 이 표는 Microsoft.Web에 대해 서비스 엔드포인트가 사용 설정되어 있는지를 보여줍니다. 앱에 제한이 정의되어 있지 않고 일치하지 않는 규칙이 거부로 설정되지 않은 경우, 어디서나 앱에 액세스할 수 있습니다.

사용 권한

Azure Portal, CLI를 통해 또는 site config 속성을 직접 설정할 때 액세스 제한을 구성하려면 서브넷 또는 더 높은 수준에서 다음과 같은 역할 기반 액세스 제어 권한이 있어야 합니다.

작업 설명
Microsoft.Web/sites/config/read 웹앱 구성 설정을 가져옵니다.
Microsoft.Web/sites/config/write 웹앱의 구성 설정을 업데이트합니다.
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* 스토리지 계정 또는 SQL 데이터베이스 같은 리소스를 서브넷에 조인합니다.
Microsoft.Web/sites/write** 웹앱 설정을 업데이트합니다.

*가상 네트워크(서비스 엔드포인트) 규칙을 추가할 때만 필요

**Azure Portal을 통해 액세스 제한을 업데이트하는 경우에만 필요

서비스 엔드포인트 기반 규칙을 추가하고 가상 네트워크가 앱과 다른 구독에 있는 경우 가상 네트워크가 있는 구독이 리소스 공급자에 대해 Microsoft.Web 등록되었는지 확인합니다. 공급자를 명시적으로 등록할 수 있지만 구독에서 첫 번째 웹앱을 만들 때 자동으로 등록됩니다. 자세한 내용은 리소스 공급자 등록을 참조하세요.

액세스 제한 규칙 추가

앱에 액세스 제한 규칙을 추가하려면 액세스 제한 창에서 추가를 선택합니다. 규칙은 저장한 후에만 적용됩니다.

규칙은 Priority 열에서 가장 낮은 숫자 순서로 적용됩니다. 일치하지 않는 규칙을 구성하지 않으면, 암시적 기본 규칙으로 모두 거부가 적용되며, 이는 하나의 규칙을 추가할 때 유효합니다.

액세스 제한 추가 창에서 규칙을 만들 때 다음을 수행합니다.

  1. 작업에서 허용 또는 거부를 선택합니다.
  2. 규칙의 이름과 설명을 입력합니다(선택 사항).
  3. 우선 순위 상자에서 우선 순위 값을 입력합니다.
  4. 형식 드롭다운 목록에서 규칙 유형을 선택합니다. 다양한 규칙 형식은 다음 섹션에서 설명합니다.
  5. 규칙별 입력을 입력합니다. 규칙 추가를 선택하여 목록에 규칙을 추가합니다.
  6. 액세스 제한 창에서 저장을 선택합니다.

참고

액세스 제한 규칙은 512개입니다. 512개 이상의 액세스 제한 규칙이 필요한 경우 독립 실행형 보안 제품을 고려하는 것이 좋습니다. Azure Front Door, Azure Application Gateway 또는 다른 WAF(웹 애플리케이션 방화벽)를 고려합니다.

IP 주소 기반 규칙 설정

이전 섹션에 간략히 설명된 프로시저를 따르되, 다음과 같은 추가 작업을 수행합니다.

  • 4단계의 경우 유형 드롭다운 목록에서 IPv4 또는 IPv6을 선택합니다.

IPv4 및 IPv6 주소 모두에 대한 CIDR(클래스리스 Inter-Domain 라우팅) 표기법에서 IP 주소 블록을 지정합니다. 주소를 지정하려면 처음 네 개의 8진수가 IP 주소를 나타내고 1.2.3.4/32 마스크인 것과 같은 /32항목을 사용할 수 있습니다. 모든 주소에 대한 IPv4 CIDR 표기법은 0.0.0.0/0.

참고

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

서비스 엔드포인트 기반 규칙 설정

  • 4단계의 경우 유형 드롭다운 목록에서 Virtual Network를 선택합니다.

    가상 네트워크 유형이 선택된 제한 추가 창의 스크린샷

액세스를 제한하려는 항목과 일치하는 구독, Virtual Network서브넷 드롭다운 목록을 지정합니다.

서비스 엔드포인트를 사용하여 선택한 Azure 가상 네트워크 서브넷에 대한 액세스를 제한할 수 있습니다. 선택한 서브넷에 대해 서비스 엔드포인트를 아직 사용하도록 설정하지 않은 경우 누락된 Microsoft.Web Microsoft.Web 서비스 엔드포인트 무시를 선택 하지 않는 한 자동으로 사용하도록 설정됩니다. 서브넷이 아닌 앱에서 서비스 엔드포인트를 사용하도록 설정할지 여부는 서브넷에서 서비스 엔드포인트를 사용하도록 설정할 수 있는 권한이 있는지 여부에 따라 달라집니다.

서브넷에서 서비스 엔드포인트를 사용하도록 설정하기 위해 다른 사람이 필요한 경우 누락된 Microsoft.Web 서비스 엔드포인트 무시를 선택합니다. 앱이 서비스 엔드포인트에 대해 구성됩니다. 나중에 서브넷에서 사용하도록 설정할 수 있습니다.

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

서비스 엔드포인트를 사용하면 애플리케이션 게이트웨이 또는 다른 WAF(웹 애플리케이션 방화벽) 디바이스를 사용하여 앱을 구성할 수 있습니다. 또한 보안 백 엔드를 사용하여 다중 계층 애플리케이션을 구성할 수 있습니다. 자세한 내용은 App Service 네트워킹 기능Application Gateway 통합을 참조하세요.

참고

가상 IP와 함께 IP 기반 TLS/SSL 바인딩을 사용하는 웹앱에는 서비스 엔드포인트가 지원되지 않습니다.

서비스 태그 기반 규칙 설정

  • 4단계의 경우 유형 드롭다운 목록에서 서비스 태그를 선택합니다.

    서비스 태그 유형이 선택된 제한 추가 창의 스크린샷

공개적으로 사용할 수 있는 모든 서비스 태그는 액세스 제한 규칙에서 지원됩니다. 각 서비스 태그는 Azure 서비스의 IP 범위 목록을 나타냅니다. 이 서비스 목록과 특정 범위의 링크는 서비스 태그 문서에서 찾을 수 있습니다. Azure Resource Manager 템플릿이나 스크립팅을 사용하여 지역 범위 규칙과 같은 고급 규칙을 구성합니다.

참고

Azure Portal 또는 Azure CLI를 통해 서비스 태그 기반 규칙을 만들 때 선택/유효성 검사에 대한 서비스 태그의 전체 목록을 얻으려면 구독 수준에서 읽기 액세스 권한이 필요합니다. 또한 리소스 공급자를 Microsoft.Network 구독에 등록해야 합니다.

규칙 편집

  1. 기존 액세스 제한 규칙을 편집하려면 액세스 제한 창으로 이동하여 편집할 규칙을 선택합니다.

  2. 액세스 제한 편집 창에서 변경한 후 규칙 업데이트를 선택합니다.

  3. 저장을 선택하여 변경 내용을 저장합니다.

    참고

    규칙을 편집할 때 규칙 형식 간에 전환할 수 없습니다.

규칙 삭제

  1. 규칙을 삭제하려면 액세스 제한 창에서 삭제할 규칙 또는 규칙을 선택한 다음 삭제를 선택합니다.

  2. 저장을 선택하여 변경 내용을 저장합니다.

삭제할 액세스 제한 규칙 옆에 있는 줄임표 제거를 보여 주는 액세스 제한 창의 스크린샷

액세스 제한 고급 시나리오

다음 섹션에서는 고급 시나리오에서 액세스 제한을 사용하는 방법에 대해 설명합니다.

HTTP 헤더로 필터링

모든 규칙에 HTTP 헤더 필터를 추가할 수 있습니다. 지원되는 HTTP 헤더 이름은 다음과 같습니다.

  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Azure-FDID
  • X-FD-HealthProbe

각 헤더 이름에 대해 쉼표로 구분된 최대 8개의 값을 추가할 수 있습니다. HTTP 헤더 필터는 규칙 자체 후에 평가되며 규칙이 적용되려면 두 조건이 모두 true여야 합니다.

다중 원본 규칙

다중 소스 규칙을 사용하면 단일 규칙에서 최대 8개의 IP 범위 또는 8개의 서비스 태그를 결합할 수 있습니다. IP 범위가 512개 이상이거나 논리 규칙을 만들려는 경우 다중 원본 규칙을 사용합니다. 예를 들어 논리 규칙에는 단일 HTTP 헤더 필터와 결합된 여러 IP 범위가 포함될 수 있습니다.

다중 소스 규칙은 단일 소스 규칙과 동일한 방식으로 정의되지만 각 범위는 쉼표로 구분됩니다.

PowerShell 예제:

Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Multi-source rule" -IpAddress "192.168.1.0/24,192.168.10.0/24,192.168.100.0/24" `
  -Priority 100 -Action Allow

단일 IP 주소 차단

단일 IP 주소 또는 IP 주소 블록을 명시적으로 차단하지만 다른 모든 항목에 대한 액세스를 허용하려면 특정 IP 주소에 대한 거부 규칙을 추가할 수 있습니다. 그런 다음 일치하지 않는 규칙 작업을 허용하도록 구성합니다.

차단된 단일 IP 주소를 보여 주는 Azure Portal의 액세스 제한 창 스크린샷

SCM 사이트에 대한 액세스 제한

앱에 대한 액세스를 제어할 수 있을 뿐만 아니라 앱에서 사용하는 SCM(소스 제어 관리) 고급 도구 사이트에 대한 액세스를 제한할 수 있습니다. SCM 사이트는 웹 배포 엔드포인트이자 Kudu 콘솔입니다. 앱에서 SCM 사이트에 대한 액세스 제한을 별도로 할당하거나 앱과 SCM 사이트 모두에 대해 같은 제한 세트를 사용할 수 있습니다. 기본 사이트 규칙 사용을 선택하면 규칙 목록이 숨겨집니다. SCM 사이트는 기본 사이트의 규칙을 사용합니다. 확인란을 선택 취소하면 SCM 사이트 설정이 다시 표시됩니다.

SCM 사이트 또는 앱에 대한 액세스 제한이 설정되지 않음을 보여 주는 Azure Portal의 액세스 제한 창 스크린샷

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

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

Azure Front Door 제한을 추가하는 방법을 보여 주는 Azure Portal의 액세스 제한 창 스크린샷

PowerShell 예제:

$afd = Get-AzFrontDoor -Name "MyFrontDoorInstanceName"
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Front Door example rule" -Priority 100 -Action Allow -ServiceTag AzureFrontDoor.Backend `
  -HttpHeader @{'x-azure-fdid' = $afd.FrontDoorId}

프로그래밍 방식으로 액세스 제한 관리

프로그래밍 방식으로 액세스 제한을 관리할 수도 있습니다. 다음 예제에서는 액세스 제한에 규칙을 추가하는 방법과 기본 사이트고급 도구 사이트 모두에 대해 일치하지 않는 규칙 작업을 변경하는 방법을 보여 줍니다.

기본 사이트에 대한 액세스 제한 규칙 추가

다음 옵션 중 하나를 선택하여 기본 사이트에 대한 액세스 제한 규칙을 프로그래밍 방식으로 추가할 수 있습니다.

Azure Cloud Shell에서 다음 명령을 실행할 수 있습니다. 명령에 대한 자세한 내용은 다음을 참조하세요 az webapp config access-restriction.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name "Azure Front Door example" --action Allow --priority 200 --service-tag AzureFrontDoor.Backend \
  --http-header x-azure-fdid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

고급 도구 사이트에 대한 액세스 제한 규칙 추가

고급 도구 사이트에 대한 액세스 제한 규칙을 프로그래밍 방식으로 추가할 수 있습니다. 다음 옵션 중 하나를 선택합니다:

Cloud Shell에서 다음 명령을 실행할 수 있습니다. 명령에 대한 자세한 내용은 다음을 참조하세요 az webapp config access-restriction.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100 --scm-site true

기본 사이트에 대한 일치하지 않는 규칙 작업 변경

다음 옵션 중 하나를 선택하여 프로그래밍 방식으로 기본 사이트에 대한 일치하지 않는 규칙 작업을 변경할 수 있습니다.

Cloud Shell에서 다음 명령을 실행할 수 있습니다. 명령에 대한 자세한 내용은 다음을 참조하세요 az resource. ipSecurityRestrictionsDefaultAction에 허용되는 값은 Allow 또는 Deny입니다.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Allow

고급 도구 사이트에 대한 일치하지 않는 규칙 작업 변경

다음 옵션 중 하나를 선택하여 프로그래밍 방식으로 고급 도구 사이트에 대한 일치하지 않는 규칙 작업을 변경할 수 있습니다.

Cloud Shell에서 다음 명령을 실행할 수 있습니다. 명령에 대한 자세한 내용은 다음을 참조하세요 az resource. scmIpSecurityRestrictionsDefaultAction에 허용되는 값은 Allow 또는 Deny입니다.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow

Azure Functions 액세스 제한 설정

App Service 플랜과 같은 기능을 사용하는 함수 앱에 대한 액세스 제한도 사용할 수 있습니다. 액세스 제한을 사용하는 경우 허용되지 않는 IP에 대해 Azure Portal 코드 편집기도 사용하지 않게 설정합니다.