Security contact has additional email addresses configured
Microsoft Defender for Cloud security contact settings include additional email recipients defined in the emails field to receive alert notifications.
Risk
Relying only on subscription owners for alerts creates a single point of failure. Missed or delayed notifications extend attacker dwell time, enabling data exfiltration (confidentiality), unauthorized changes (integrity), and service disruption (availability). Absence or turnover can silently suppress alerts.
Run this check with Prowler
Run in Prowler Cloudprowler azure --checks defender_additional_email_configured_with_a_security_contactRecommendation
Use a monitored, team-managed distribution list as the security contact in emails. Include SOC/on-call for 24/7 coverage and enable role-based notifications for redundancy. Tune severities to reduce noise while capturing high-risk events, and integrate alerts with ticketing/SIEM for defense in depth and rapid response.
Remediation
CLI
az rest --method put --url https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/providers/Microsoft.Security/securityContacts/default?api-version=2020-01-01-preview --body '{ "properties": { "emails": "<EMAIL>" } }'Terraform
resource "azurerm_security_center_contact" "<example_resource_name>" {
email = "<EMAIL>" # Critical: ensures at least one security contact email is configured
}NativeIaC
// Configure a security contact at subscription scope
targetScope = 'subscription'
resource <example_resource_name> 'Microsoft.Security/securityContacts@2020-01-01-preview' = {
name: 'default'
properties: {
emails: '<EMAIL>' // Critical: set at least one email to pass the check
}
}Other
Check Code
from prowler.lib.check.models import Check, Check_Report_Azure
from prowler.providers.azure.services.defender.defender_client import defender_client
class defender_additional_email_configured_with_a_security_contact(Check):
def execute(self) -> Check_Report_Azure:
findings = []
for (
subscription_id,
security_contact_configurations,
) in defender_client.security_contact_configurations.items():
subscription_name = defender_client.subscriptions.get(
subscription_id, subscription_id
)
for contact_configuration in security_contact_configurations.values():
report = Check_Report_Azure(
metadata=self.metadata(), resource=contact_configuration
)
report.resource_name = (
contact_configuration.name
if contact_configuration.name
else "Security Contact"
)
report.subscription = subscription_id
if len(contact_configuration.emails) > 0:
report.status = "PASS"
report.status_extended = f"There is another correct email configured for subscription {subscription_name} ({subscription_id})."
else:
report.status = "FAIL"
report.status_extended = f"There is not another correct email configured for subscription {subscription_name} ({subscription_id})."
findings.append(report)
return findingsReferences
- https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/SecurityCenter/security-contact-email.html
- https://learn.microsoft.com/en-us/azure/defender-for-cloud/configure-email-notifications
- https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/threat-detection-configure?view=azuresql