Introduction

Azure Security Center (Microsoft Defender for Cloud) generates security alerts based on threat detection rules. False positives occur when legitimate activity matches alert criteria, causing alert fatigue and reducing security team efficiency.

Symptoms

Alert notification:

json
{
  "alertDisplayName": "Suspicious process executed",
  "alertType": "SuspiciousProcessExecution",
  "severity": "Medium",
  "description": "Process 'powershell.exe' executed with suspicious arguments",
  "status": "Active"
}

Repeated alerts:

```bash $ az security alert list \ --query "[?properties.alertDisplayName=='Suspicious process executed'].{Time:properties.eventDateTime,VM:properties.resourceDetails.id}"

# Returns many alerts for the same legitimate process ```

Alert noise ratio:

```bash # Query alert history az security alert list \ --query 'length(@)'

# If >50% are false positives, tuning needed ```

Common Causes

  1. 1.Legitimate tool matches signature - Known admin tools flagged
  2. 2.Baseline not established - New activity treated as suspicious
  3. 3.Policy too aggressive - High-sensitivity detection rules
  4. 4.Custom scripts flagged - Organization-specific automation
  5. 5.Third-party software - Unknown vendor behavior patterns
  6. 6.Scheduled tasks - Regular maintenance processes flagged
  7. 7.Dev/test environments - Non-production activity patterns

Step-by-Step Fix

  1. 1.Check logs for specific error messages
  2. 2.Verify configuration settings
  3. 3.Test network connectivity
  4. 4.Review recent changes
  5. 5.Apply corrective action
  6. 6.Verify the fix

Step 1: Identify False Positive Pattern

```bash # List recent alerts az security alert list \ --query "[?properties.status=='Active'].{Name:name,Type:properties.alertType,Severity:properties.severity,VM:properties.resourceDetails.id}" \ -o table

# Filter specific alert type az security alert list \ --query "[?properties.alertType=='SuspiciousProcessExecution']"

# Identify pattern in alert details az security alert show \ --name alert-id \ --query 'properties.{Type:alertType,Description:description,Evidence:extendedProperties}' ```

Step 2: Analyze Alert Details

```bash # Get detailed alert information az security alert show \ --name alert-id \ --query 'properties.extendedProperties'

# Check process details: # - Command line arguments # - Parent process # - User context # - Frequency pattern

# Validate if activity is legitimate: # 1. Check if process is known admin tool # 2. Verify user is authorized admin # 3. Confirm scheduled task configuration # 4. Review documentation for automation ```

Step 3: Suppress Alert

```bash # Create suppression rule for legitimate pattern az security alert-suppression-rule create \ --name suppress-powershell-admin \ --alert-type SuspiciousProcessExecution \ --scope /subscriptions/SUB/resourceGroups/my-rg/providers/Microsoft.Compute/virtualMachines/my-vm \ --condition "{\"processName\":\"powershell.exe\",\"user\":\"admin@company.com\"}" \ --comment "Legitimate admin automation script"

# List suppression rules az security alert-suppression-rule list \ --query '[].{Name:name,AlertType:properties.alertType,State:state}' ```

Step 4: Dismiss False Positive Alerts

```bash # Dismiss specific false positive alert az security alert update \ --name alert-id \ --status Dismissed \ --comment "Legitimate scheduled maintenance task"

# Bulk dismiss matching alerts az security alert list \ --query "[?properties.alertType=='SuspiciousProcessExecution' && properties.status=='Active'].name" \ -o tsv | while read alert; do az security alert update --name "$alert" --status Dismissed --comment "False positive - admin automation" done ```

Step 5: Adjust Security Policy

```bash # Get current security policy az security policy show \ --query '{Assessment:properties.assessments,Threshold:properties.threshold}'

# Disable overly sensitive detection az security setting update \ --name MCAS_Integration \ --value false

# Adjust alert severity thresholds az security workspace-setting update \ --workspace /subscriptions/SUB/resourcegroups/my-rg/providers/microsoft.operationalinsights/workspaces/my-workspace ```

Step 6: Configure ASC Baseline

```bash # Enable adaptive application controls # This creates baseline of legitimate processes

az security adaptive-application-controls list \ --query '[].{Group:name,VMs:properties.vmGroups,Controls:properties.controls}'

# Update baseline with legitimate applications az security adaptive-application-controls update \ --name my-vm-group \ --applications '[{"path":"C:\\Scripts\\admin-task.ps1","type":"script"}]'

# Enforcement mode az security adaptive-application-controls update \ --name my-vm-group \ --enforcement-mode Audit # Start with Audit, then Enforce ```

Step 7: Tag Production vs Non-Production

```bash # Tag VMs to differentiate environments az vm update \ --name my-test-vm \ --resource-group my-rg \ --set tags.Environment='Dev'

# Adjust policy based on environment az security policy assignment create \ --name dev-policy \ --scope /subscriptions/SUB/resourceGroups/my-rg \ --policy-definition-id /subscriptions/SUB/providers/Microsoft.Authorization/policyDefinitions/dev-security-baseline ```

Step 8: Create Custom Detection Rules

bash
# Exclude legitimate patterns from detection
az sentinel alert-rule create \
  --resource-group my-rg \
  --workspace-name my-workspace \
  --kind Scheduled \
  --display-name "Exclude Admin Processes" \
  --query 'SecurityEvent
| where EventID == 4688
| where Process =~ "powershell.exe"
| where SubjectUserName contains "admin"
| where CommandLine contains "ScheduledTask"'

Step 9: Set Up Alert Monitoring

# Create alert for high false positive rate az monitor metrics alert create \ --name high-fp-rate \ --resource-group my-rg \ --scopes /subscriptions/SUB/resourceGroups/my-rg/providers/Microsoft.Security/locations/eastus \ --condition "avg FalsePositiveRate > 50" ```

Step 10: Document Legitimate Patterns

```bash # Create runbook documenting legitimate patterns # Store in automation account

az automation runbook create \ --automation-account-name my-automation \ --resource-group my-rg \ --name "LegitimatePatterns" \ --type PowerShell

# Update suppression rules quarterly az security alert-suppression-rule list \ --query "[?properties.state=='Enabled'].{Name:name,Expires:properties.expiryDate}" \ -o table ```

Common False Positive Categories

Alert TypeCommon False PositivesSolution
Suspicious ProcessPowerShell admin scriptsSuppress by user/script
Unusual LoginAdmin remote accessBaseline admin IPs
Data ExfiltrationBackup/replicationSuppress by destination
Malware DetectionCustom dev toolsWhitelist path
Network ScanMonitoring toolsSuppress by source

Verification

```bash # After applying suppression rules # Check if alert count reduced az security alert list \ --query "[?properties.status=='Active' && properties.alertType=='SuspiciousProcessExecution'].length(@)"

# Should show 0 for suppressed pattern

# Verify suppression rule active az security alert-suppression-rule show \ --name suppress-powershell-admin \ --query '{Name:name,State:state,Enabled:properties.isEnabled}'

# Should show state: "Enabled" ```

Prevention

To prevent Azure Security Center false positive alert issues from recurring, implement these proactive measures:

1. Document Known Good Patterns

bash
# Create documentation for allowed patterns
cat << 'EOF' > /etc/azure-security/allowed_patterns.json
{
  "allowed_processes": [
    {"pattern": "powershell -Command Get-ADUser", "reason": "Admin user audit script"},
    {"pattern": "nmap -sV", "reason": "Vulnerability scanning"},
    {"pattern": "/usr/sbin/logrotate", "reason": "Log rotation"}
  ],
  "allowed_network_connections": [
    {"source": "10.0.0.0/24", "dest": "any", "port": 22, "reason": "Admin subnet"}
  ]
}
EOF

2. Configure Suppression Rules Proactively

```bash # Create suppression rule for known patterns az security alert-suppression-rule create \ --name suppress-admin-tools \ --alert-type SuspiciousProcessExecution \ --comment "Suppress admin audit scripts" \ --suppression-duration-type "NoExpiry"

# Set up automation for common false positives az security automation create \ --name auto-suppress-false-positives \ --resource-group my-rg \ --actions '[{"actionType":"Suppression","suppressDuration":{"durationType":"NoExpiry"}}]' ```

3. Regular Alert Review Process

```bash # Weekly alert review script cat << 'EOF' > /usr/local/bin/review_security_alerts.sh #!/bin/bash # Get alerts from last 7 days az security alert list \ --query "[?properties.status=='Active' && properties.startTimeUtc >= '$(date -d '7 days ago' -Iseconds)']" \ -o table > /tmp/recent_alerts.txt

# Email to security team mail -s "Weekly Security Alert Review" security@company.com < /tmp/recent_alerts.txt EOF

chmod +x /usr/local/bin/review_security_alerts.sh ```

Best Practices Checklist

  • [ ] Document known good patterns
  • [ ] Configure suppression rules proactively
  • [ ] Regular alert review process
  • [ ] Work with security team on patterns
  • [ ] Keep suppression rules documented
  • [ ] Review suppressed alerts quarterly
  • [Fix Azure Sentinel Connector Broken](/articles/fix-azure-sentinel-connector-broken)
  • [Fix Azure Log Analytics Workspace Not Collecting](/articles/fix-azure-log-analytics-workspace-not-collecting)
  • [Fix Azure Monitor Alerts Not Triggering](/articles/fix-azure-monitor-alerts-not-triggering)
  • [Technical troubleshooting: Fix Azure Aks Pod Crashloopbackoff Issue in Azure](azure-aks-pod-crashloopbackoff)
  • [Technical troubleshooting: Fix Azure Api Management Policy Expression Runtime](azure-api-management-policy-expression-runtime-error)
  • [Technical troubleshooting: Fix Azure App Configuration Feature Flag Not Refre](azure-app-configuration-feature-flag-not-refreshing)
  • [Technical troubleshooting: Fix Azure App Service 503 Always On Disabled Issue](azure-app-service-503-always-on-disabled)
  • [Technical troubleshooting: Fix Azure Application Gateway Err SSL Unrecognized](azure-application-gateway-err-ssl-unrecognized-name-alert)

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "Fix Azure Security Center False Positive Alerts", "description": "Troubleshoot Azure Defender false positive alerts. Suppress legitimate patterns and tune security policies.", "url": "https://www.fixwikihub.com/fix-azure-security-center-alert-false", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2026-04-03T11:35:47.784Z", "dateModified": "2026-04-03T11:35:47.784Z" } </script>