Subscription has at least one Application Insights resource configured
Azure subscription contains at least one Application Insights resource collecting application telemetry (metrics, traces, logs) for monitored workloads.
The check determines whether telemetry collection exists at the subscription level, indicating that application monitoring is configured.
Risk
If Application Insights is missing, applications run with reduced observability, limiting detection of anomalies and attacks.
This undermines integrity and accountability (fewer traces), degrades availability by slowing troubleshooting, and increases exposure to undetected data exfiltration or injection at the app layer.
Run this check with Prowler
Run in Prowler Cloudprowler azure --checks appinsights_ensure_is_configuredRecommendation
Deploy Application Insights for all critical workloads and centralize data in a Log Analytics workspace. Configure actionable alerts and dashboards, enforce least privilege on telemetry, and set retention/export policies. Use private connectivity and appropriate sampling, and integrate with SIEM for defense in depth.
Remediation
CLI
az monitor app-insights component create --app <APP_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --application-type web --subscription <SUBSCRIPTION_ID>Terraform
# Critical: This resource creates an Application Insights component to satisfy the check
resource "azurerm_application_insights" "main" {
name = "<example_resource_name>"
location = "<location>"
resource_group_name = "<example_resource_name>"
application_type = "web" # Critical: ensures creation of the component
}NativeIaC
// Create a minimal Application Insights resource
resource appInsights 'Microsoft.Insights/components@2020-02-02' = {
name: '<example_resource_name>'
location: '<location>'
properties: {
Application_Type: 'web' // Critical: creates the App Insights component required to pass the check
}
}Other
Check Code
from prowler.lib.check.models import Check, Check_Report_Azure
from prowler.providers.azure.services.appinsights.appinsights_client import (
appinsights_client,
)
class appinsights_ensure_is_configured(Check):
def execute(self) -> Check_Report_Azure:
findings = []
for subscription_id, components in appinsights_client.components.items():
subscription_name = appinsights_client.subscriptions.get(
subscription_id, subscription_id
)
report = Check_Report_Azure(metadata=self.metadata(), resource={})
report.status = "PASS"
report.subscription = subscription_id
report.resource_name = subscription_id
report.resource_id = f"/subscriptions/{subscription_id}"
report.status_extended = f"There is at least one AppInsight configured in subscription {subscription_name} ({subscription_id})."
if len(components) < 1:
report.status = "FAIL"
report.status_extended = f"There are no AppInsight configured in subscription {subscription_name} ({subscription_id})."
findings.append(report)
return findings