HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Intune IntuneWindowsHealthAttestationAzureAttestationComplianceConditionalAccessBitLockerSecureBootFirewall

Intune Is Moving Windows Health Attestation to Azure Attestation — Update Your Firewall Before Devices Become Noncompliant

IA
Imran Awan
21 September 2026
The short version

In H1 2027, Intune will automatically migrate Windows 11 device health attestation from the Device Health Attestation (DHA) service to Microsoft Azure Attestation (MAA). Any compliance policy that checks BitLocker, Secure Boot, or Code Integrity uses this attestation chain. If your firewall or proxy blocks the new intunemaape*.attest.azure.net endpoints — or performs SSL inspection on them — those devices will report "Not compliant" with no other warning. This post shows you how to find the affected policies, test connectivity from the right context, add the correct firewall rules, and exclude these endpoints from SSL inspection before the migration fires.

Watch this post — YouTube walkthrough
Intune Health Attestation Moves to Azure Attestation — Fix Your Firewall Before H1 2027
Intune Health Attestation Moves to Azure Attestation — Fix Your Firewall Before H1 2027
Endpoint Weekly
Watch on YouTube Subscribe at @EndpointWeekly

The problem: how a firewall gap becomes a Conditional Access lockout

Microsoft announced on 17 September 2026 that Intune will automatically migrate Windows 11 device health attestation from Device Health Attestation (DHA) to Microsoft Azure Attestation (MAA) in H1 2027. No admin opt-in is required. The migration happens in the background, and Intune will start routing attestation traffic to new regional endpoints instead of the legacy DHA service.

The risk is not the migration itself. It is what happens on the day a device in your estate tries to attest against an MAA endpoint for the first time, and your firewall has no rule to allow it.

Any Windows 10/11 compliance policy that evaluates these three settings uses the health attestation chain:

None of these settings can be evaluated by the device directly. Intune sends the device's TPM-attested boot log to the health attestation service, the service validates it against its signing chain, and the resulting health certificate is what drives the compliance verdict. Break the path to the attestation service, and the compliance verdict goes to "Not compliant" — the policy cannot return "Compliant" for any of those three settings when it cannot reach the service to validate them.

In an estate where a Conditional Access policy requires a compliant device, a broken attestation chain is not just a reporting problem. It is an access problem.

Warning: This is not a gradual degradation. When the MAA endpoint is unreachable, Intune marks the device "Not compliant" for health-attested settings immediately. In a Conditional Access environment with a "Require compliant device" grant control, users on affected devices can be blocked from Microsoft 365, Teams, SharePoint, and any other CA-protected resource at the next sign-in evaluation.

Windows 10 devices and tenants in the GCCH (Government Community Cloud High) and DoD clouds are not affected — they remain on the DHA service. Only Windows 11 devices in commercial and GCC tenants will use MAA.

Intune Admin Center — Device compliance
DESKTOP-{REDACTED}
Windows 11 Enterprise 24H2 · Managed by Intune
Not compliant
Noncompliant settings
Require BitLocker — Not compliant (health attestation unavailable)
Require Secure Boot — Not compliant (health attestation unavailable)
Require code integrity — Not compliant (health attestation unavailable)

Why it happens: the DHA to MAA architecture shift

Device Health Attestation has been part of Windows since Windows 10. At compliance evaluation time, Windows runs HealthAttestationClientAgent.exe — a component in %windir%\System32\HealthAttestationClient\ — which collects a signed measurement of the boot sequence from the device's TPM and sends it to Microsoft's cloud attestation service. The cloud service validates the TPM-signed boot log against known good values for Secure Boot, BitLocker, and Code Integrity, and returns a signed health certificate that Intune can verify.

Until now, all commercial tenants have used the same shared DHA service at has.spserv.microsoft.com. Microsoft Azure Attestation (MAA) replaces this with a per-tenant, regionally hosted attestation service. Your Intune tenant will be assigned to an MAA endpoint in the Azure region closest to your tenant's home location — intunemaape1.attest.azure.net through intunemaape9.attest.azure.net, depending on region.

Note: MAA is a general Azure service already used by Azure Kubernetes Service, Confidential Computing, and Azure Virtual Desktop attestation workflows. Intune's adoption of it for Windows compliance is the same service, extended to the device management use case. This means the endpoint is real, stable, and already in Microsoft's published networking requirements — it was previously optional, and is now required for Windows 11 compliance.

The attestation flow after migration:

  1. HealthAttestationClientAgent.exe collects a TPM-attested boot log (same as before)
  2. Instead of sending to has.spserv.microsoft.com, it sends to your tenant's MAA endpoint — e.g. intunemaape2.attest.azure.net
  3. MAA validates the measurement log and returns a signed token
  4. The Intune Management Extension (IME) collects the token and sends compliance evaluation results to Intune
  5. Intune evaluates BitLocker, Secure Boot, and Code Integrity using the MAA-signed token

The change is transparent to the end user and to the device — except at the network layer. Any firewall rule that was written for has.spserv.microsoft.com will not match the new endpoint. And because the new endpoint is tenant-specific, a generic Microsoft 365 or Intune allowlist that has not been updated to include MAA will not cover it either.

When the MAA endpoint is unreachable, HealthAttestationClientAgent.exe cannot obtain a signed attestation token. After exhausting retries, Intune reports the health-attested compliance settings as unable to be verified — the affected settings surface as "Not compliant" in the Intune admin center and in any Conditional Access evaluation for that device. The compliance failure is reported through the standard Intune MDM compliance pipeline and appears in the device's compliance details in the Intune portal.

How to verify: find affected policies and test MAA reachability

Step 1 — Identify compliance policies that use health attestation

The fastest way to find every affected policy is to query the Graph API for Windows compliance policies and check their health attestation settings. You can do this with the companion script below, or with a quick Graph Explorer query.

In Graph Explorer (or via PowerShell), query all compliance policies and filter for Windows 10/11 policies with any of the three health-attested settings enabled:

Get-MAAReadinessReport.ps1 — identify affected compliance policies
# Connect to Graph with Intune read access
Connect-MgGraph -Scopes "DeviceManagementConfiguration.Read.All"

$policies = Invoke-MgGraphRequest -Method GET `
    "/beta/deviceManagement/deviceCompliancePolicies"

$affected = $policies.value | Where-Object {
    $_['@odata.type'] -eq "#microsoft.graph.windows10CompliancePolicy" -and (
        $_['bitLockerEnabled']       -eq $true -or
        $_['secureBootEnabled']      -eq $true -or
        $_['codeIntegrityEnabled']   -eq $true
    )
}

$affected | Select-Object displayName, bitLockerEnabled, secureBootEnabled, codeIntegrityEnabled | Format-Table -AutoSize

# Example output — healthy attestation chain:
# displayName               bitLockerEnabled  secureBootEnabled  codeIntegrityEnabled
# -----------               ----------------  -----------------  --------------------
# Win11 Compliance Baseline         True              True                 True
# BYOD Windows Policy               False             True                 False

Any policy returned here is affected by the MAA migration. Take note of the policy names — you will need them when you pilot the fix later.

Step 2 — Identify how many Windows 11 devices are in scope

Not every device in your Intune tenant is affected. Only Windows 11 devices with a health-attested compliance policy assigned are at risk. Use the Graph API to get the count:

Count Windows 11 devices in scope
# Count Windows 11 managed devices
$win11 = Invoke-MgGraphRequest -Method GET `
    "/beta/deviceManagement/managedDevices?`$filter=operatingSystem eq 'Windows' and osVersion startsWith '10.0.2'&`$count=true&`$top=1" -Headers @{'ConsistencyLevel'='eventual'}

Write-Host "Windows 11 managed devices in tenant:" $win11['@odata.count']

# Windows 11 OS versions start at 10.0.22000 (21H2) through 10.0.26xxx (25H2+)
# Windows 10 stays at 10.0.19xxx - not affected by MAA migration
Note: Windows 10 devices (OS versions 10.0.19xxx) remain on the DHA service and are not affected by this migration. If your fleet is mixed Windows 10 and Windows 11, only the Windows 11 portion needs the MAA endpoint allowlist.

Step 3 — Test MAA endpoint reachability from SYSTEM context

This step is where most administrators get caught. Running Test-NetConnection from a regular PowerShell window tests connectivity from your user account, using your user-level proxy settings. Health attestation runs under the SYSTEM account, which uses WinHTTP system-wide proxy settings — a completely separate proxy configuration.

A test that passes from a user session can still fail for HealthAttestationClientAgent.exe if your proxy is configured differently for the SYSTEM context.

Gotcha: netsh winhttp show proxy shows the system-level proxy that SYSTEM uses. netsh winhttp import proxy source=ie copies the current user's IE proxy settings into the system-level WinHTTP config — but this command requires admin rights and replaces the existing system config. Check what's actually in WinHTTP before assuming it matches your user proxy settings.

To test MAA connectivity from the SYSTEM context, create a scheduled task that runs the connectivity test as SYSTEM and writes the result to a file:

Test MAA connectivity from SYSTEM context — run as admin
# MAA endpoints to test (all 9 regional variants)
$endpoints = 1..9 | ForEach-Object { "intunemaape$_.attest.azure.net" }

$scriptBlock = @"
`$results = @()
`$endpoints = $(($endpoints | ConvertTo-Json -Compress))
foreach (`$ep in (`$endpoints | ConvertFrom-Json)) {
    `$test = Test-NetConnection `$ep -Port 443 -InformationLevel Quiet -WarningAction SilentlyContinue
    `$results += [PSCustomObject]@{ Endpoint=`$ep; TcpTestSucceeded=`$test }
}
`$results | Export-Clixml C:\Temp\maa-connectivity-test.xml
"@

# Create scheduled task running as SYSTEM
$encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($scriptBlock))
$action   = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NonInteractive -EncodedCommand $encoded"
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "MAAConnTest" -Action $action -Principal $principal -Force | Out-Null
Start-ScheduledTask -TaskName "MAAConnTest"
Start-Sleep -Seconds 15

# Read results
$results = Import-Clixml "C:\Temp\maa-connectivity-test.xml"
$results | Format-Table -AutoSize
Unregister-ScheduledTask -TaskName "MAAConnTest" -Confirm:$false

# BLOCKED - output looks like:
# Endpoint                          TcpTestSucceeded
# --------                          ----------------
# intunemaape1.attest.azure.net     False
# intunemaape2.attest.azure.net     False
#
# HEALTHY - output looks like:
# Endpoint                          TcpTestSucceeded
# --------                          ----------------
# intunemaape1.attest.azure.net     True
# intunemaape2.attest.azure.net     True

If any endpoint shows TcpTestSucceeded: False from SYSTEM context, you have a firewall or proxy block that will cause attestation failures after the MAA migration. Proceed to the fix section.

Also check the current WinHTTP proxy configuration to understand what SYSTEM is routing through:

cmd (Admin) netsh winhttp show proxy
Current WinHTTP proxy settings:
Proxy Server(s) : proxy.contoso.com:8080
Bypass List : (none)
← No bypass list means ALL traffic, including MAA endpoints, routes through the proxy. If the proxy inspects TLS, attestation will fail.

Step 4 — Check MDM compliance events on a representative device

There is no standalone HealthAttestation event log channel on Windows 11. The attestation client (HealthAttestationClientAgent.exe) runs in SYSTEM context as part of the MDM compliance evaluation pipeline — it is an executable agent, not a Windows service, so it does not appear in services.msc or respond to Get-Service.

Attestation failures surface in two places. First, in the Intune admin center on the device's compliance detail page — the health-attested settings (BitLocker, Secure Boot, Code Integrity) will show as "Not compliant" or "Error" with a message indicating the compliance result could not be retrieved. Second, general MDM compliance events appear in the Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider/Admin log in Event Viewer:

Event Viewer Applications and Services Logs Microsoft Windows DeviceManagement-Enterprise-Diagnostics-Provider Admin

For deeper diagnostics — particularly if devices are reporting "Error" rather than "Not compliant" — use MdmDiagnosticsTool.exe to collect a full MDM diagnostic bundle:

Admin Command Prompt
MdmDiagnosticsTool.exe -area Autopilot;TPM;DeviceProvisioning;DeviceEnrollment -cab C:\Temp\MDMDiag.cab

Windows components reference: what is actually installed

The health attestation stack on Windows 11 is file-based. There is no standalone HealthAttestation Windows service. The files installed in %windir%\System32\HealthAttestationClient\ handle the entire attestation flow:

FileVersion (Windows 11 24H2)Role
HealthAttestationClientAgent.exe10.0.26100.8972The attestation agent. Invoked by the MDM compliance pipeline. Runs as SYSTEM. Collects the TPM boot log and calls the attestation endpoint.
AzureAttestManager.dll10.0.10011.16384Manages the MAA attestation request lifecycle — selects the correct regional endpoint, handles retry logic, and verifies the signed response.
AzureAttestNormal.dll10.0.10011.16384Azure Attestation protocol library. Implements the HTTPS communication to intunemaape[N].attest.azure.net.

Additionally, %windir%\System32\AttestationWmiProvider.dll exposes a WMI v2 interface so the MDM client can query attestation state, and hgattest.dll handles the low-level TPM interaction for collecting the signed boot measurement.

Note: The Group Policy setting that controls whether DHA is enabled — Enable Device Health Attestation Service — is located under Computer Configuration › Administrative Templates › System › Device Health Attestation Service. When enabled via GPO, it writes EnableDeviceHealthAttestationService = 1 to HKLM\SOFTWARE\Policies\Microsoft\DeviceHealthAttestationService. On Intune-managed devices, this is configured via the Settings Catalog or OMA-URI instead. Do not configure both GPO and Intune for the same setting.
Gotcha: The attestation client runs as SYSTEM. A connectivity test from your own user session — or from a PowerShell window you launched yourself — uses your profile's proxy settings, not the SYSTEM WinHTTP proxy. A test that passes from your session can still fail for the attestation client. Always verify from SYSTEM context using the Proactive Remediation detect script below, or via a SYSTEM-context scheduled task.

The fix: firewall rules, SSL inspection bypass, and piloting

Step 1 — Add the MAA endpoints to your firewall allowlist

Microsoft requires outbound HTTPS (port 443) to the following endpoint pattern for all Windows 11 devices managed by Intune in public cloud:

Required endpoints — allow outbound HTTPS/443
intunemaape1.attest.azure.net intunemaape2.attest.azure.net intunemaape3.attest.azure.net intunemaape4.attest.azure.net intunemaape5.attest.azure.net intunemaape6.attest.azure.net intunemaape7.attest.azure.net intunemaape8.attest.azure.net intunemaape9.attest.azure.net
Or use the wildcard: *.attest.azure.net — this covers all regional MAA endpoints and will not need updating when Microsoft adds new regions
Tip: Use the wildcard *.attest.azure.net rather than listing each numbered endpoint individually. Microsoft assigns tenant-specific MAA endpoints from this pool, and the specific number suffix depends on your tenant's Intune home region. The wildcard covers all current and future regional endpoints without requiring a rule update when Microsoft adds capacity.

For network devices that do not support wildcard FQDN rules, list all nine endpoints explicitly. You do not need to know in advance which one your tenant will use — allowlisting all of them is the correct approach. The individual endpoints that do not match your tenant's assigned MAA instance will simply not receive traffic.

Step 2 — Exclude MAA endpoints from SSL/TLS inspection

Microsoft's networking documentation for Intune explicitly states that MAA endpoints must not have SSL inspection performed on them. This is not optional guidance. The health attestation flow uses TPM-attested tokens that are signed by the device's TPM and verified by the MAA service. An SSL-inspecting proxy that presents its own certificate instead of the MAA service's certificate will cause the attestation flow to fail, even if the proxy allows the traffic through.

Warning: Do NOT add *.attest.azure.net to your firewall's "allow" list and stop there if you use SSL/TLS inspection (Zscaler, Palo Alto SSL Decryption, Microsoft Entra Private Access, or similar). The proxy must also be configured to bypass inspection for these endpoints — allowing encrypted traffic to pass through unchanged. Allowing without bypassing inspection is equivalent to blocking — the attestation client cannot validate the response when a proxy substitutes its own certificate for the MAA service's certificate.

The bypass configuration process varies by proxy product:

SSL inspection bypass configuration — common products
ProductWhere to configureRule type
Palo Alto Networks (NGFW)Policies › Decryption › Add SSL/TLS Inspection Profile exclusionNo Decrypt rule targeting destination FQDN *.attest.azure.net
Zscaler Internet AccessPolicy › SSL Inspection › Add bypass ruleDestination: Custom URL category containing .attest.azure.net
Fortinet FortiGatePolicy & Objects › SSL/SSH Inspection › Custom deep inspection profileExempt URL list: *.attest.azure.net
Cisco FMC / FirepowerPolicies › Access Control › SSL Policy › Add Do Not Decrypt ruleNetwork application or URL condition: *.attest.azure.net
WinHTTP proxy bypass (device-side)Group Policy / Intune Settings CatalogComputer Configuration › Windows Settings › Proxy Settings: add *.attest.azure.net to bypass list

Step 3 — Configure WinHTTP proxy bypass on devices (Intune)

If your devices use a WinHTTP proxy and you cannot modify the proxy's SSL inspection rules, you can configure the bypass on the device side. The WinHTTP proxy bypass list tells the SYSTEM account to connect directly to the listed endpoints without routing through the proxy. This is the device-level equivalent of a "no decrypt" rule on the proxy itself.

Deploy this via Intune Settings Catalog or Group Policy:

Intune Settings Catalog path:

Devices Configuration Create New policy Settings catalog Network Proxy › Proxy Bypass List
Setting: Network Proxy / Proxy Bypass List
Value: *.attest.azure.net
Note: Separate multiple bypass entries with semicolons if you have existing entries to preserve.

Group Policy path (equivalent GPO for hybrid-managed devices):

  1. Open gpmc.msc and create or edit a GPO linked to the OU containing your Windows 11 devices.
  2. Navigate to Computer Configuration › Administrative Templates › Windows Components › Internet Explorer › Internet Control Panel › Connections › Proxy Settings.
  3. Enable Do not use proxy server for addresses beginning with and add *.attest.azure.net.
  4. Alternatively, use the OMA-URI custom profile in Intune: ./Device/Vendor/MSFT/NetworkProxy/ProxySettingsPerUser set to 0 (system-wide proxy, not per-user) and ./Device/Vendor/MSFT/NetworkProxy/Exceptions containing *.attest.azure.net.
Note: The OMA-URI approach is the most reliable for Intune-managed devices. The Settings Catalog "Proxy Bypass List" setting writes to the same CSP path and is the recommended method for Intune-only environments.

Step 4 — Deploy as an Intune Proactive Remediation

Before the H1 2027 migration fires, use the companion detect script to find every device in your fleet where MAA endpoints are currently unreachable from SYSTEM context. Deploy it as a Proactive Remediation to get a count without taking any action on the devices.

  1. Sign in to the Intune admin center.
  2. Go to Devices › Scripts and remediations › Proactive remediations.
  3. Select Create and give it a name, e.g. "MAA Endpoint Reachability — Pre-migration audit".
  4. On the Settings page, paste Detect-MAAConnectivity.ps1 into Detection script file.
  5. Leave the Remediation script file blank (this is an audit-only deployment).
  6. Set Run this script using the logged-on credentials to No — it must run as SYSTEM to test the correct network context.
  7. Set Enforce script signature check based on your environment's requirements.
  8. Assign to your pilot Windows 11 device group first, then expand to all Windows 11 devices once you have confirmed the expected result.
  9. Set the schedule to Daily and select Next › Create.
Devices Scripts and remediations Proactive remediations › Create

Any device where the detect script exits 1 cannot reach MAA endpoints from SYSTEM context. Those are your at-risk devices. The Proactive Remediation report in Intune gives you a count and a device list — export it and use it to target your network fix rollout.

Step 5 — Pilot compliance evaluation after the network fix

Once you have added the MAA endpoint rules to your firewall and SSL inspection bypass, verify the fix is working before the migration date by triggering a manual compliance evaluation on a pilot device:

Trigger Intune sync and compliance re-evaluation — run as admin on pilot device
# Trigger Intune device sync (forces compliance re-evaluation)
$session = New-CimSession
Invoke-CimMethod -Namespace "root\ccm" -ClassName "SMS_Client" -MethodName "TriggerSchedule" -Arguments @{sScheduleID="{00000000-0000-0000-0000-000000000121}"} -ErrorAction SilentlyContinue

# If ConfigMgr client not present, use Intune Management Extension sync:
Get-ScheduledTask -TaskName "Schedule #3" -TaskPath "\Microsoft\Windows\EnterpriseMgmt\*" |
  Start-ScheduledTask

# Or trigger via Company Portal: Settings -> Sync -> Sync now
# Wait 3-5 minutes, then check compliance in Intune admin center

Proof it worked: clean attestation and compliance confirmation

After applying the firewall rules and SSL inspection bypass, run the SYSTEM-context connectivity test again. Every MAA endpoint should now return TcpTestSucceeded: True:

SYSTEM-context MAA connectivity — healthy output after fix
Endpoint                          TcpTestSucceeded
--------                          ----------------
intunemaape1.attest.azure.net     True
intunemaape2.attest.azure.net     True
intunemaape3.attest.azure.net     True
intunemaape4.attest.azure.net     True
intunemaape5.attest.azure.net     True
intunemaape6.attest.azure.net     True
intunemaape7.attest.azure.net     True
intunemaape8.attest.azure.net     True
intunemaape9.attest.azure.net     True

# All 9 endpoints reachable from SYSTEM context.
# HealthAttestationClientAgent.exe will successfully reach MAA after migration.

After verifying connectivity, trigger a compliance re-evaluation on the pilot device. In the Intune admin center, navigate to the device and use Sync to force an immediate compliance check. Wait 5–10 minutes for the policy cycle to complete, then refresh the compliance detail page.

In the Intune admin center, navigate to the pilot device and confirm all three health-attested compliance settings return to "Compliant":

Intune Admin Center — Device compliance — post-fix state
DESKTOP-{REDACTED} (pilot)
Windows 11 Enterprise 24H2 · Managed by Intune
Compliant
All settings compliant
Require BitLocker — Compliant
Require Secure Boot — Compliant
Require code integrity — Compliant

Once the pilot device is confirmed compliant, expand the Proactive Remediation to the full Windows 11 device population. Any device that was previously exit-1 (blocked) should move to exit-0 (reachable) as the network changes propagate. Monitor the Proactive Remediation report in Intune for 48 hours after the network changes are applied to confirm the fleet-wide result.

PowerShell Scripts — MAA Readiness

Scripts for this post are in Imran76Awan/Daily-Tasks. Download and run in your own environment. Read-only — no changes are made to any policy or device.

Get-MAAReadinessReport.ps1 — queries Graph for affected compliance policies and tests MAA endpoint reachability
Detect-MAAConnectivity.ps1 — Intune Proactive Remediation detect script; runs as SYSTEM, exits 1 if MAA endpoints blocked
View all scripts on GitHub

References

Microsoft official documentation for this migration and the required networking changes:

Microsoft MVP community deep-dives

AuthorPostWhat it adds
Peter van der Woude (MVP)Configure device compliance policies via Microsoft IntuneStep-by-step breakdown of all Windows compliance policy settings including health attestation, with Intune console walkthroughs
Anoop C Nair (MVP)Intune Compliance Policy Settings for WindowsReference table of all Windows compliance settings with CSP paths and enforcement behaviour, including TPM and health attestation settings
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Intune
Microsoft Graph PowerShell v3 Drops Windows PowerShell 5.1…
Microsoft started a 12-month retirement countdown for Windows PowerShell 5.1 support in…
Intune
Moving Off Group Policy? Don't Lift and Shift - Here's the Tool…
Copying every GPO into Intune one-for-one just moves your technical debt to the cloud.…
Intune
What's Actually Changing in Intune and Windows for 2026 (No…
Licensing got simpler, Windows devices now have two ways to talk to the cloud, and new…