설명
Function App이 암호화되지 않은 FTP 연결을 허용하고 실제 배포에 사용하면 게시 자격 증명과 함수 파일이 전송 중 노출될 수 있습니다. FTPS 전용으로 제한하거나 FTP 게시를 사용하지 않으면 비활성화하세요. 이 설정은 함수의 웹 요청을 보호하는 HTTPS 설정과 별개입니다.
잠재적 영향
- 평문 FTP로 보낸 게시 자격 증명이 유출될 수 있습니다.
- 함수 코드와 설정 파일의 전송 내용을 보호하지 못할 수 있습니다.
- 탈취한 게시 자격 증명으로 배포 내용이 변경될 수 있습니다.
해결 방법
FTP 게시가 필요하면 site_config.ftps_state를 FtpsOnly로, 사용하지 않으면 Disabled로 설정하세요. 승인된 암호화 배포 경로를 사용하고 게시 자격 증명과 배포 권한을 제한하세요. 실제 배포가 정상 동작하고 평문 FTP 연결이 거부되는지 확인하세요.
예시
AzureRM 3.x의 기존 azurerm_function_app에서 FTP 설정을 비교하는 부분 예제입니다. 스토리지 등 필수 설정은 생략했습니다. 현재 리소스에서는 기본값이 다를 수 있으므로 실제 게시 설정을 확인하세요.
변경 전
hcl
resource "azurerm_function_app" "example" {
name = "test-azure-functions"
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 {
http2_enabled = true
ftps_state = "AllAllowed"
}
}
변경 후
hcl
resource "azurerm_function_app" "example" {
name = "test-azure-functions"
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 {
ftps_state = "FtpsOnly"
}
}
변경 전의 AllAllowed는 평문 FTP도 허용합니다. 변경 후의 FtpsOnly는 파일 전송을 FTPS로 제한합니다. FTP 게시가 필요하지 않다면 Disabled가 적합합니다.