Introduction
In today’s cloud-first world, DNS traffic is often overlooked—but it’s a vital part of your cloud security surface. Attackers frequently exploit DNS for exfiltration, command and control, or domain hijacking. Microsoft Azure’s DNS Security Policy equips you with the tools to filter DNS queries, block threats, and gain full visibility into DNS behavior within your virtual networks (VNets).
This comprehensive guide walks you through how to filter and log DNS traffic using Azure DNS Security Policy—from core components and setup to advanced monitoring.
What Is Azure DNS Security Policy?
Azure DNS Security Policy allows Azure customers to filter, alert, and log DNS queries within a virtual network. It supports both private and public DNS queries, offering:
- Rule-based blocking of malicious or unwanted domains
- Detailed logging of DNS traffic
- The ability to alert on suspicious queries without disrupting service
This feature is critical for organizations seeking to enforce DNS hygiene, detect DNS tunneling, and enhance overall network observability.
Core Features for DNS Filtering & Logging
Policy Scope & Location
Each DNS Security Policy is region-specific and can only be linked to VNets in the same region. For instance, a policy created in East US can only govern VNets deployed in East US.

📌 Note: You can associate multiple VNets with a single DNS security policy, but each VNet can only be linked to one policy at a time.
DNS Traffic Rules: The Filtering Engine
These rules define how DNS queries should be handled. Each rule includes:
- Priority: Integer from 100–65000 (lower numbers = higher priority)
- Domain lists: Predefined lists of domains to which the rule applies
- Action: One of:
- Allow – Permit and log the query
- Block – Deny and log the query
- Alert – Allow the query but log an alert for analysis
- Enable/Disable toggle

Important Rule Behaviors:
- DNS rules respect hierarchy. If
contoso.comis allowed at higher priority,sub.contoso.comis also allowed even if blocked in a lower-priority rule. - You can apply rules to all domains using the
"."wildcard. But be cautious—this could block essential Azure services.
Virtual Network Links: Binding Policy to Traffic
These links bind DNS policies to VNets, enabling policy enforcement.
- Each link connects a single DNS policy to one or more VNets
- VNets must reside in the same region as the policy
- Once linked, all DNS traffic from the VNet is subject to the rules
This enables centralized policy management while keeping per-region compliance intact.

DNS Domain Lists: Organize Your Filters
Domain lists are collections of DNS domain names – like allowlists or blocklists.
🔍 Key Capabilities:
- A list can include specific domains (e.g.,
malicious.contoso.com) or wildcards (e.g.,*.example.com) - CNAME “chasing” is supported. If a domain resolves to a blocked target via CNAME, the rule still applies
- A domain list must contain at least one domain and can be reused across multiple rules or policies
⚠️ Be cautious with wildcard entries. Blocking
"."or"*"may unintentionally prevent legitimate traffic.
Security Use Cases
With Azure DNS Security Policy, you can:
- Block known malicious domains from being resolved
- Log DNS queries for forensic analysis
- Alert on suspicious behavior without disruption
- Enforce domain usage policies within VNets (e.g., block social media, torrent trackers, etc.)
📊 Monitoring & Logging
Azure allows extensive telemetry via diagnostic settings. Logs can be sent to:
- Azure Monitor / Log Analytics
- Storage Accounts (for archiving)
- Event Hubs (for integration with SIEM tools)
Each log record includes:
- Timestamp
- Domain queried
- Source IP
- Action taken (allow, block, alert)
- CNAME resolution path (if applicable)
This visibility allows real-time threat detection and integration with Microsoft Sentinel for custom alerting and automation.
Configuration Limits & Considerations
| Component | Limit |
|---|---|
| Security Policies per Region | 1000 |
| DNS Traffic Rules per Policy | 10 |
| Domain Lists per Policy | 1000 |
| Domains per Domain List | 100,000 |
| VNets per Policy | Multiple (same region) |
| Policies per VNet | 1 |
Step-by-Step: How to Set Up DNS Filtering & Logging
You can configure DNS Security Policy through the Azure Portal or Azure PowerShell.
1. Create the DNS Security Policy
- Navigate to
Azure DNS>Security Policies - Choose region and resource group
2. Create Domain Lists
- Add domains (e.g., blocklist of known threats)
- Use wildcards cautiously
- Group domains logically (e.g., “malware-domains”, “social-media”, etc.)
3. Define Traffic Rules
- Set priority and action (Allow, Block, Alert)
- Assign domain lists
4. Link to VNets
- Under “Virtual Network Links,” add VNets in the same region
5. Enable Logging
- Go to Diagnostics
- Forward logs to Log Analytics for analysis
Pro Tips & Best Practices
- Start with
Alertrules before enforcingBlockactions—this helps tune your lists without risk - Use CNAME chasing to catch indirect domain abuse
- Build rules using granular domain lists for fine control
- Integrate logs into Sentinel to detect patterns like:
- DGA (domain generation algorithm) behaviors
- DNS tunneling
- Beaconing traffic to suspicious domains
Final Thoughts
Azure DNS Security Policy offers a powerful, native method for securing DNS resolution within VNets. By providing policy-driven DNS controls, rich logging, and integration with Azure Monitor, it enables you to protect your cloud workloads against DNS-based attacks – without needing to route traffic through third-party appliances.
Whether you’re a security engineer, cloud architect, or network administrator, adopting DNS security policies helps bolster your zero-trust architecture and improve network observability.
Related Resources
- Secure and view DNS traffic (Microsoft Docs)
- Azure DNS Security Policy Docs
- Microsoft Defender for DNS
P.S. Modern AI tool has been used for creating some of the content. Technical validation and proofing are done by the author.