설명
인증이 필요한 Function App의 HTTP 엔드포인트에 익명 요청이 허용되면 승인되지 않은 사용자가 기능이나 데이터에 접근할 수 있습니다. 플랫폼 인증 설정이 없다는 사실만으로 애플리케이션의 모든 인증이 없다고 판단할 수는 없습니다. 함수 키, 애플리케이션 인증과 실제 접근 경로도 확인하세요.
잠재적 영향
- 보호해야 할 함수가 원하지 않는 호출을 받을 수 있습니다.
- 함수의 권한에 따라 데이터 조회나 변경이 허용될 수 있습니다.
- 자동화된 호출로 자원 사용량과 비용이 증가할 수 있습니다.
해결 방법
엔드포인트의 공개 범위에 맞는 인증 방식을 구성하세요. 플랫폼 인증을 사용한다면 ID 제공자와 인증되지 않은 요청의 처리 방식을 설정하고, 보호 대상 경로가 익명 요청을 거부하는지 테스트하세요. 인증된 사용자에게도 필요한 작업만 허용하세요.
예시
아래는 AzureRM 3.x의 기존 azurerm_function_app 설정 일부이며 스토리지 등 필수 구성은 생략했습니다. 현재 구성은 운영체제에 맞는 Function App 리소스를 사용하세요.
변경 전
hcl
resource "azurerm_function_app" "example" {
name = "example-app-service"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
app_service_plan_id = azurerm_app_service_plan.example.id
site_config {
dotnet_framework_version = "v4.0"
scm_type = "LocalGit"
}
}
변경 후
hcl
resource "azurerm_function_app" "example" {
name = "example-app-service"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
app_service_plan_id = azurerm_app_service_plan.example.id
auth_settings {
enabled = true
}
}
변경 후에는 auth_settings를 활성화하지만 이 설정만으로 익명 요청이 차단되지는 않습니다. ID 제공자와 요청 처리 정책을 완성하고 실제 엔드포인트의 인증·인가를 확인하세요.