Security contact and alert notifications: the basics
What does a subscription with no security contact actually look like?
Defender for Cloud watches your subscriptions and raises a security alert when it sees something that looks like an attack: a brute-force sign-in, a crypto-mining process, a suspicious storage access, a privilege escalation. The alert is only useful if it reaches a person who can act on it. Two settings decide whether that happens. The first is the security contact: the email address, or set of addresses, that Microsoft notifies when there is a potential security issue on the subscription. The second is alert notifications: the switch that says 'send an email when an alert of this severity or higher fires', set to a minimum severity of High. Each is a separate Defender for Cloud recommendation, but they are one job: make sure a high-severity alert lands in a human's inbox.
Both recommendations map to the same Microsoft Cloud Security Benchmark control, IR-2, which is about preparing to respond to incidents by getting notifications to the right people. 'Subscriptions should have a contact email address for security issues' checks that a contact is set at all. 'Email notification for high severity alerts should be enabled' checks that the notification switch is on and set to notify at High severity or higher. They read as two findings, but a subscription that fails one usually fails the other, because both come from the same empty security-contact configuration.
Most of this gap is omission, not intent. A subscription gets created, workloads get deployed, Defender starts watching, and nobody ever opens the email notifications page to type in a distribution list. By default Microsoft notifies subscription owners about high-severity alerts, but 'owner' is often a person who left, a break-glass account nobody reads, or a service principal with no inbox at all. The work is to set an explicit, monitored contact on every subscription, set the notification threshold to High, and stop relying on whoever happens to hold the Owner role to be watching.
In this lesson you will learn how Defender for Cloud routes security alerts to people, why a subscription can be fully monitored yet notify no one, and how to set a monitored security contact and high-severity alert emails across every subscription and keep them set. The Controls this lesson covers section lists every Defender for Cloud recommendation in this capability, each linking to a deep page with the exact check and a copy-and-paste fix.
The alert nobody was listening for
A recurring finding in cloud breach post-mortems is that the platform had already raised the alarm. The detection fired, the alert was generated, it was sitting in the security console: and nobody saw it for days because the notification was never wired to a monitored inbox. By default Defender for Cloud emails subscription owners about high-severity alerts, but in real estates the 'owner' is frequently a person who has left the company, a shared break-glass account no one reads, or a service principal with no mailbox at all. The detection was never the weak link. The wire from the detection to a human was.
Finding subscriptions with no security contact
Priya is the security lead at a scale-up running across four Azure subscriptions, preparing for a SOC 2 audit. Defender for Cloud flags 'Subscriptions should have a contact email address for security issues' on two of them, and 'Email notification for high severity alerts should be enabled' on three.
Rather than open each subscription in the portal, Priya reads the security contact configuration straight from the API to see exactly which subscriptions have no contact, and which have a contact but the alert switch turned off or set too low.
Read the security contact on each subscription. An empty email and an Off alert state are the two failure modes you are looking for.
A blank email with alerts Off is the worst case: a fully monitored subscription that can detect an attack and tell nobody. Fix these first.
How Defender for Cloud decides who to notifydeep dive
Both recommendations resolve to a single object: the security contact at 'Microsoft.Security/securityContacts/default' on the subscription. Its properties decide everything. 'emails' is the explicit recipient list, a set of addresses Microsoft notifies directly. 'notificationsByRole' can additionally notify everyone holding a given Azure role, such as Owner. 'alertNotifications' carries a 'state' of On or Off and a 'minimalSeverity' of Low, Medium or High, which is the threshold at or above which an alert generates an email. The contact-email recommendation passes when 'emails' is populated; the high-severity recommendation passes when 'alertNotifications.state' is On and 'minimalSeverity' is set to High or, since High is the top tier, exactly High.
The default behaviour is the trap. With no explicit configuration, Defender for Cloud still emails subscription owners about high-severity alerts, so it can feel like notifications are handled. But that route depends entirely on the Owner role being held by people who read the inbox it points at. When the Owner is a departed employee, a break-glass account or a service principal, the alert is emailed into the void. Setting an explicit 'emails' value to a monitored distribution list is what turns this from 'whoever happens to be Owner' into 'a team we know is watching.'
Defender for Cloud evaluates these recommendations against the Microsoft Cloud Security Benchmark on a periodic cycle, so a fix does not flip the finding to Healthy instantly. The control-plane change is immediate, but the posture catches up on the next assessment. The strongest position pairs the per-subscription contact with an Azure Policy assignment that audits for the contact and the High-severity switch across every subscription, so a new subscription created without them is flagged the moment it appears rather than discovered at the next audit.
What is the impact of having no security contact?
The direct impact is dwell time. A subscription that detects an attack but notifies no one is one where an incident runs until someone happens to look at the console or notices a downstream symptom. Every credible breach study points the same way: the longer an attacker is in undetected, the more they exfiltrate, the wider they move, and the more the eventual clean-up and notification costs. A high-severity alert that emails a monitored team the moment it fires is the single cheapest way to shrink that window.
The second-order impact is cost and blast radius. A compromised subscription is frequently used to spin up expensive resources, crypto-mining fleets, mass data egress, before it is used to steal anything, so the first visible sign is often a bill anomaly. Wiring high-severity alerts to a human is both your earliest security warning and your earliest financial warning. Without it, you find out from the invoice.
On the compliance side, every modern framework, ISO 27001, SOC 2, NIST and the Microsoft Cloud Security Benchmark control IR-2 this capability maps to, expects evidence that security incidents are routed to identified responders. 'We can detect, but we never told the platform who to tell' is a finding no auditor accepts. A populated security contact and an enabled high-severity alert on every subscription is the cheapest and most defensible incident-response artefact you can produce.
How do you wire alerts to a human, properly?
Work the capability as one loop across every subscription rather than fixing one finding at a time. The order matters: choose a durable recipient before you set anything, so you do not wire alerts to an inbox that will go stale.
1. Choose a monitored recipient, not a person
Set the contact to a security distribution list or a shared mailbox that a team actually watches, ideally one that also feeds a ticketing or on-call system, never a single named individual who can leave. The whole point is that the recipient outlives any one person's tenure and role assignment.
2. Set the contact and enable High-severity alerts on every subscription
Populate 'emails' with the monitored list and set 'alertNotifications' to On with 'minimalSeverity' of High. Do this on every subscription, because the security contact is a per-subscription object: a clean parent does not cover a child subscription. Optionally add 'notificationsByRole' for Owner as a belt-and-braces second route, but never rely on it alone.
3. Confirm an alert actually arrives
A populated contact is necessary but not sufficient: verify the email genuinely lands. Use Defender for Cloud's sample-alert capability or wait for a benign test alert, and confirm it reaches the distribution list and creates a ticket. A contact that is set but bounces is no better than a blank one.
4. Ratchet it shut with Azure Policy
Assign the built-in audit policies so any subscription without a security contact email, or with high-severity alert notifications off, is flagged the moment it appears. This turns 'we set it on the subscriptions we knew about' into 'every subscription, including ones created next month, is checked automatically.'
# Set a monitored security contact and enable High-severity alert emails
# on the current subscription. --alert-notifications and --notifications-by-role
# take a JSON object, not a bare string; the role list lives inside that object.
az security contact create \
--name default \
--emails "[email protected]" \
--alert-notifications '{"state":"On","minimalSeverity":"High"}' \
--notifications-by-role '{"state":"On","roles":["Owner"]}'
# Apply it across every subscription you can see.
for sub in $(az account list --query "[].id" -o tsv); do
az account set --subscription "$sub"
az security contact create --name default \
--emails "[email protected]" \
--alert-notifications '{"state":"On","minimalSeverity":"High"}'
echo "$sub: security contact set, high-severity alerts on"
done
# Ratchet it shut: audit any subscription missing a contact email.
az policy assignment create \
--name audit-security-contact \
--policy 4f4f78b8-e367-4b10-a341-d9a4ad5cf1c7 \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000" Quick quiz
Question 1 of 5Defender for Cloud flags both 'Subscriptions should have a contact email address' and 'Email notification for high severity alerts should be enabled' on the same subscription. What is the most efficient way to think about them?
You scored
0 / 5
Keep learning
Go deeper on how Defender for Cloud routes alerts to people and how to keep the security contact set across the estate.
- Configure email notifications for alerts and attack paths How to choose recipients and severity thresholds, in the portal and via the REST API.
- Security Contacts REST API reference The exact 'securityContacts/default' object: emails, notificationsByRole and alertNotifications.
- Manage and respond to security alerts in Defender for Cloud What a security alert contains and how to triage one once it reaches your team, including sample alerts.
You can now treat the security contact as one capability rather than two stray findings: choose a monitored recipient that outlives any one person, set the contact and enable High-severity alerts on every subscription, confirm an alert actually arrives, and audit for both with Azure Policy so a new subscription is never left silent. The Controls this lesson covers section below links every recommendation in this group to its deep page and fix.
Back to the library