Check ID:
Provider: Azure
Service:
Severity: MEDIUM
Categories:
Resource type:
app_function_vnet_integration_enabledProvider: Azure
Service:
appSeverity: MEDIUM
Categories:
trust-boundariesResource type:
microsoft.web/sitesWhat this check verifies
Azure Function apps configured with Virtual Network integration uses a chosen subnet so outbound traffic is routed via the VNet and can reach private or service-endpoint-secured resources. The finding reflects whether a function app is associated with a subnet resource ID.Risk
Without VNet integration, function apps send egress directly to the public Internet and cannot reach private endpoints. This weakens confidentiality and integrity by bypassing NSG/UDR controls, enables data exfiltration from compromised code, and may force exposing backends publicly, increasing attack surface.Recommendation
Enable Virtual Network integration and attach function apps to a dedicated subnet to enforce least privilege network access. Route egress through the VNet (e.g.,Route All), apply NSGs/UDRs, and use private endpoints or service endpoints for dependencies. Restrict outbound traffic by default as part of defense in depth.
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
az functionapp vnet-integration add —name <function_app_name> —resource-group <resource_group_name> —vnet <vnet_name> —subnet <subnet_name>
References
- https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/Functions/azure-function-vnet-integration-on.html
- https://docs.microsoft.com/en-us/azure/azure-functions/functions-networking-options#enable-virtual-network-integration
- https://docs.microsoft.com/en-us/azure/azure-functions/functions-networking-options#virtual-network-integration
Where this check fires
This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable byCheck ID = app_function_vnet_integration_enabled. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Azure checks