Most of my Intune experience up to this point had been Windows-first โ a tenant that already had a mature policy baseline. This project started from the opposite end: a Mac already in daily use under a local account, and a tenant that had never enrolled a macOS device before. That meant working through the platform from absolute zero โ tenant prerequisites, enrollment, then rebuilding an existing Windows policy set as macOS equivalents, and finally a full Defender for Endpoint deployment now that the client’s on Business Premium.
Phase 1 โ Tenant prerequisites (one-time)
Before any Mac can enroll, the tenant needs an Apple MDM Push certificate โ this is what lets Intune talk to Apple’s push notification service at all.
Intune admin center โ Devices โ Enrollment โ Apple tab โ Apple MDM Push Certificate
The flow is a two-way handshake between Intune and Apple:
- Generate and download a CSR from Intune
- Upload that CSR to Apple’s own Push Certificates Portal (
identity.apple.com/pushcert), signed in with an Apple ID - Download the resulting
.pemcertificate from Apple - Upload that
.pemback into Intune, along with the same Apple ID used to generate it
One detail worth getting right from day one: use a shared/company Apple ID for this, not a personal one โ ideally something like a distribution list mailbox rather than an individual’s account. The certificate needs renewing every 365 days, and whoever’s Apple ID is tied to it becomes a dependency for that renewal indefinitely.
Beyond the push certificate, two more prerequisites:
- Licensing โ every user enrolling a Mac needs an Intune license, whether standalone or bundled via Microsoft 365 E3/E5/Business Premium
- Enrollment restrictions โ worth checking
Devices โ Enrollment restrictionsto confirm nothing’s silently blocking the macOS platform, since a restriction here causes the enrollment profile download to fail with a fairly generic, unhelpful error on the Mac side
Since this was user-driven Company Portal enrollment rather than Automated Device Enrollment, there was no Apple Business Manager token needed โ that’s genuinely the full tenant-side prerequisite list.
Phase 2 โ Enrolling the Mac
With the Mac already in use under a local account, the enrollment path was:
- On the Mac, browse to
aka.ms/EnrollMyMacand download the Company Portal app โ worth noting there’s no App Store listing for it, it’s a direct package download - Install and open Company Portal, sign in with the user’s work/school account
- Company Portal opens System Settings โ Profiles and prompts to install the management profile
- The user approves the profile install โ this specifically makes it a user-approved MDM enrollment, which unlocks the full policy set. An unapproved enrollment is more limited and blocks several policy types silently.
- Once approved, the device registers to Microsoft Entra ID and appears under
Devices โ macOSin Intune
A couple of things worth understanding about this specific enrollment type before treating it as equivalent to a Windows Autopilot-style deployment:
- This enrolls the existing local account’s session โ it doesn’t touch or convert the local account itself. Entra-joined features like Platform SSO, or a proper synced local admin/standard account split, need a separate configuration path and typically want Automated Device Enrollment (ADE) instead.
- Because this isn’t ADE/supervised, the end user can remove the management profile themselves later, unless Conditional Access is configured to make that costly by cutting off access to work resources the moment the device falls out of compliance.
Mapping an existing Windows baseline onto macOS
The client already had five Windows Intune configuration profiles in place. Rather than build macOS policy from scratch, the goal was to carry over whatever had a genuine macOS equivalent:
| Windows policy | macOS equivalent? | Notes |
|---|---|---|
| Defender Baselines | โ No direct equivalent | The Windows Security Baseline template’s 65 settings (BitLocker CSP, Windows Firewall CSP, Device Installation Control, Edge SmartScreen) are almost entirely Windows-specific. macOS needs separate, purpose-built pieces instead โ FileVault for disk encryption, the macOS firewall via Settings Catalog, Gatekeeper/SIP controls via Device Restrictions, and a full Defender for Endpoint deployment for actual AV/EDR |
| Windows Apps Removal | โ Doesn’t apply | This strips default UWP/Store apps, which don’t exist on macOS. The closest analogue is hiding certain built-in apps (FaceTime, Podcasts, News, Game Center) via Device Restrictions โ a block, not an uninstall, and a fundamentally different mechanism |
| Restrict Edge Personal Accounts | โ Yes | The exact same RestrictSigninToPattern setting exists in the Settings Catalog once the profile’s platform is set to macOS โ same setting, same value, just a new profile object |
| Enforce OneDrive Deny Personal | โ Mostly yes | The core AllowTenantList setting carries over via Settings Catalog. Some Windows-only details (like the Known Folder Move opt-in wizard checkboxes) behave differently on Mac, so KFM specifically needed testing rather than assuming full parity |
| Edge Home Page and Search Engine | โ Yes | Standard Edge policies, settable identically via Settings Catalog with the platform switched to macOS |
The practical build was three new macOS-specific Settings Catalog profiles mirroring three of the five Windows ones:
Edge โ restrict personal accounts:
Platform: macOS | Profile type: Settings catalog
Setting: Restrict sign-in to pattern
Value: .*@ # matches any work/school account, blocks personal MSAs
Edge โ home page and search engine:
Default search engine name: Google
Default search engine search URL: https://www.google.com/search?q={searchTerms}
Default search engine enabled: Enabled
Restore on startup: Open a specific page or set of pages
New tab page search box: Redirect to default search engine
Home page location: https://www.yourcompany.co.uk/
OneDrive โ deny personal accounts:
Allow tenant list: Enabled โ <your Entra tenant ID>
Disable personal sync: Enabled
Silent account config: Enabled
Files On-Demand enabled: Enabled
KFM block opt-out: Enabled
Sync admin reports: Enabled
One structural point worth flagging: even where a setting is byte-for-byte identical between platforms, it always has to live in its own policy object scoped specifically to macOS โ Windows and macOS profiles can’t share a policy, even if every value inside them matches.
Full Microsoft Defender for Endpoint deployment (Business Premium)
With Business Premium in the tenant (which includes Defender for Business), the real macOS equivalent of the Windows Defender Baseline isn’t a single policy โ it’s a full multi-profile Defender for Endpoint deployment. Microsoft’s own guidance runs to 15 sequential steps, and several of them use pre-built .mobileconfig files rather than hand-typed settings, specifically because getting a bundle identifier wrong causes Defender to silently ignore the profile rather than throw an error.
Prerequisite โ connect Defender to Intune:
Intune admin center โ Endpoint security โ Microsoft Defender for Endpoint
โ "Allow Microsoft Defender for Endpoint to enforce Endpoint Security Configurations" โ On
If connection shows Unavailable:
security.microsoft.com โ Settings โ Endpoints โ General โ Advanced features
โ "Intune connection" โ On โ Save
Step 1 โ Approve system extensions. Settings Catalog โ System Configuration โ System Extensions โ Allowed System Extensions:
com.microsoft.wdav.epsext Team ID: UBF8T346G9
com.microsoft.wdav.netext Team ID: UBF8T346G9
Step 2 โ Network filter. A Templates โ Custom profile uploading Microsoft’s netfilter.mobileconfig as-is (a signed-structure plist โ not something to hand-edit). This is what approves Defender’s Network Extension to inspect socket/connection traffic without popping a user-facing consent dialog. Deployed at the device channel, not per-user.
โ ๏ธ Only ever one network filter profile per tenant โ Microsoft is explicit that a second one breaks macOS networking entirely on affected devices, not just Defender.
Steps 3โ8 โ supporting .mobileconfig profiles, all Templates โ Custom, each a pre-built file from Microsoft’s mdatp-xplat GitHub repo:
Step 3 โ Full Disk Access fulldisk.mobileconfig
Step 4 โ Background Services background_services.mobileconfig (required on Ventura+)
Step 5 โ Notifications notif.mobileconfig (edit ShowNotificationCenter if needed)
Step 6 โ Accessibility settings accessibility.mobileconfig
Step 7 โ Bluetooth permissions bluetooth.mobileconfig (only if using Device Control)
Step 8 โ Microsoft AutoUpdate com.microsoft.autoupdate2.mobileconfig
Step 9 โ Antivirus/EDR configuration. Two valid routes here:
- Defender portal route (recommended):
security.microsoft.com โ Configuration management โ Endpoint security policies โ Mac policiesโ create a policy from the Microsoft Defender Antivirus template, then repeat for Endpoint detection and response - Intune custom-profile route: copy Microsoft’s recommended preferences XML and upload as a
Templates โ Customprofile โ with one hard requirement: the custom configuration profile name must be exactlycom.microsoft.wdav. Any deviation and Defender silently ignores the whole profile.
Steps 10 (Network protection) and 11 (Device Control) don’t need separate profiles โ both ride along inside the Step 3 and Step 9 templates respectively.
Step 12 โ Publish the app itself:
Apps โ macOS โ Create โ App type: Microsoft Defender for Endpoint โ macOS โ assign to macOS group
Steps 13โ14 โ onboarding package. Downloaded from security.microsoft.com โ Settings โ Endpoints โ Device management โ Onboarding (OS: macOS, Deployment method: MDM/Intune), then the WindowsDefenderATPOnboarding.xml inside the unzipped package gets uploaded as a final Templates โ Custom profile.
Step 15 โ Verification. On the Mac itself: System Settings โ General โ Device Management should list every profile above plus the management profile and onboarding package, and the Defender menu bar icon should be present. Confirmed working end to end with Microsoft’s official EICAR-based antivirus detection test โ Defender caught and cleared the test file โ followed by checking security.microsoft.com โ Device inventory to confirm the Mac was genuinely phoning home to the tenant, not just protecting locally.
What’s actually portable to another tenant
Since this build is reusable as a template for future client deployments, it was worth working out exactly what could be exported and reused versus what’s tenant-specific:
Portable as-is:
- The System Extensions approval profile (
UBF8T346G9is Microsoft’s own Team ID, not tenant-specific) - Full Disk Access, Background Services, Notifications, Accessibility, Network Filter, AutoUpdate โ all generic Microsoft
.mobileconfigfiles with no tenant data baked in - Edge homepage/search engine values
- FileVault configuration
- The Antivirus/EDR Settings Catalog values themselves
Must be regenerated per tenant:
- OneDrive’s
AllowTenantListvalue โ this is the literal Entra tenant GUID. Reused on another tenant, it either does nothing useful or allows sign-in to the wrong tenant entirely. - The Defender onboarding package โ
WindowsDefenderATPOnboarding.xmlcontains an org-specific onboarding identifier. Reusing one tenant’s file on another’s device would fail to onboard at best, or silently onboard their device into the wrong Defender tenant at worst. This file has to be freshly downloaded from each target tenant’s own Defender portal โ it’s never safe to copy. - Group assignments โ any exported policy JSON references Entra group GUIDs specific to the source tenant; these never carry over cleanly on import and need reassigning regardless.
- The Apple MDM Push certificate โ tied to both the Apple ID and the tenant that generated it, from the very first step. Every new tenant needs its own generated from scratch; there’s no export path for this piece at all.
Result
A macOS device taken from an unmanaged local-account Mac to a fully enrolled, policy-managed, Defender-protected endpoint โ Edge and OneDrive locked down to match the existing Windows baseline where a genuine equivalent existed, and a complete 15-step Defender for Endpoint deployment verified end-to-end with a real detection test. The reusability audit at the end means most of this build is now a template for the next macOS tenant, with a clear, short list of exactly what needs regenerating rather than reusing each time.