A Jamf Pro administrator account or API client can run scripts, install software and send erase commands to every Mac, iPhone and iPad an organisation owns, yet Jamf is often governed as a desktop support tool rather than a privileged platform. Apple fleet management concentrates three kinds of power in one console: configuration (profiles and restrictions), code execution (policies, scripts and packages) and destruction (lock and erase commands, plus the Activation Lock bypass codes the server holds). Integrations add more identities: API clients for inventory, ticketing and patching tools, LDAP and SSO connections, and the Apple Push Notification service (APNs) certificate that every device depends on. This guide explains how identity and access work in Jamf Pro, how to design admin privileges and API roles, which logs to collect, and a hardening baseline. It is written for Apple platform engineers, identity teams and security reviewers.
Key takeaways
- Jamf Pro is a fleet-wide execution platform. MITRE ATT&CK T1072 Software Deployment Tools describes exactly this risk: access to enterprise endpoint management can give remote code execution on all connected systems or wipe them.
- Use API roles and clients, not user accounts, for automation. Client credentials have been supported for both the Classic API and the Jamf Pro API since Jamf Pro 10.49.0, and since 11.17.0 basic authentication can only be used to obtain a token.
- Every API client is a privileged NHI. Give each integration its own client, its own narrowly scoped API role, an owner and a rotation schedule for its secret.
- Put admin sign-in behind your identity provider. Use SAML or OIDC single sign-on with phishing-resistant MFA, and keep local accounts to a small, monitored break-glass set.
- Logs are not on by default in your SIEM. Enable Change Management logging to syslog, use webhooks such as RestAPIOperation, and forward Jamf Protect data if you use it.
How identity and access work in Jamf Pro
Jamf Pro has several independent identity paths, and each needs its own control.
| Identity path | Used by | How it authenticates | Main risk |
|---|---|---|---|
| Local Jamf Pro user accounts and groups | Administrators, helpdesk | Username and password with the Jamf Pro password policy | Passwords outside IdP MFA and joiner-mover-leaver processes |
| LDAP directory accounts and groups | Administrators; also used for scoping to users | Bind to a directory service with a service account | Bind credential is an NHI secret; directory group changes grant console access |
| Single sign-on (SAML, or OIDC through Jamf Account) | Administrators and end users (enrolment, Self Service) | Identity provider, for example Microsoft Entra ID or Google Cloud Identity connections | IdP compromise or a misconfigured bypass for local login |
| API clients with API roles | Integrations and scripts | Client ID and secret exchanged for a short-lived access token | Long-lived secret with broad privileges stored in a script or tool |
| Bearer tokens from user accounts | Legacy scripts | Username and password to /v1/auth/token, then Bearer token | A human account's password embedded in automation |
| Devices | Managed Macs and mobile devices | MDM enrolment identity certificate (ACME recommended by Apple, or SCEP) and APNs | Enrolment abuse; expiry or loss of the APNs certificate |
- Sites: Jamf Pro accounts can be granted access to the whole instance or to a single site. Use sites to separate regions or subsidiaries, but remember that full-access accounts see everything.
- API authentication does not support SSO: the Jamf Pro API documentation states this explicitly, so automation always relies on a credential held outside your IdP's sign-in policies. That makes API client governance the main NHI problem in Jamf.
- Apple-side identities: the Managed Apple Account (or Apple Account) used to create the APNs certificate, and administrator accounts in Apple Business or Apple School Manager, sit outside Jamf but control enrolment and push. Apple advises recording which account created the APNs certificate, because the same account is needed for the annual renewal. See the macOS Security Guide for Enterprises.
Admin roles and privileged access
Jamf Pro grants privileges to user accounts and groups through privilege sets. The predefined sets are Administrator, Auditor and Enrollment Only, and Custom lets you choose individual privileges. Privileges follow the create, read, update and delete pattern, which the API maps to POST, GET, PUT and DELETE.
| Capability | Why it is privileged | Who should hold it |
|---|---|---|
| Policies, scripts and packages (create, update) | Policies run scripts and install packages on Macs with system rights: code execution across the fleet (ATT&CK T1072) | A small engineering group, with peer review of every script |
| Configuration profiles | Can remove protections, add trusted root certificates or redirect traffic | Platform engineers, change-controlled |
| Remote commands and mass actions (lock, erase, remove MDM profile) | Commands can be sent to a single device or to many through mass actions (ATT&CK T1485 Data Destruction) | Helpdesk for single-device lock; erase for named senior staff only |
| Jamf Pro user accounts and groups, API roles and clients | Can create new admins or new API clients: privilege escalation and persistence (T1098 Account Manipulation) | Two or three platform owners |
| Activation Lock bypass codes, FileVault recovery keys, LAPS-style local admin passwords | Unlock or take over individual devices | Helpdesk with logged, per-device retrieval |
| Read-only inventory and reports | Exposes user, device and software data | Auditors (Auditor privilege set) |
- Daily accounts vs admin accounts: administrators should use a separate Jamf identity from their everyday account, ideally an IdP group mapped to a Jamf group, so membership is reviewed in one place. See the Tiered Administration and Enterprise Access Model Guide.
- Two-person rule: Jamf Pro does not document an approval workflow equivalent to Intune Multi Admin Approval in the sources reviewed for this guide. Where you need dual control over mass erase or new scripts (NIST SP 800-53 CM-5(4) Dual Authorization), build it into your change process and detection, and keep the number of accounts with erase and script rights very small.
- Break-glass: keep one or two local Administrator accounts with long random passwords in a vault for IdP outages, and alert on every sign-in. See the Break-Glass Account Guide.
The Stryker Intune wiper attack happened on a different platform, but the lesson transfers directly: one hijacked admin account used the management tool's own wipe command against tens of thousands of devices, with no malware required. Any Jamf account or API client with erase privileges carries the same potential.
Integrations, API tokens and service accounts
Jamf Pro offers two APIs: the Classic API and the Jamf Pro API (base path /api, interactive documentation at /api/doc). Both use the same privilege model, and both accept the same authentication methods.
How API authentication works
- API roles: a role is a set of privileges that determines which endpoints a client can call. A client can hold several roles and gets their combined privileges.
- API clients: an API client is configured in Jamf Pro, gets a client ID and secret, and is used only for API access, not for the Jamf Pro web interface. The client ID and secret are exchanged at the OAuth token endpoint for a short-lived access token; they cannot call endpoints directly.
- Changes and rotation: adding or removing a role on an existing client requires rotating the client secret, while adding or removing a privilege on a role applies to newly issued tokens. Jamf Pro also lets you disable a client without deleting it.
- User bearer tokens: a user account can POST to
/v1/auth/tokenwith basic authentication to get a Bearer token, which expires after 20 minutes by default and can be renewed with/v1/auth/keep-alive(the old token is invalidated). Since Jamf Pro 11.5.0, username and password can only request a token, and from 11.17.0 basic authentication cannot be used for anything else. - Management endpoints: roles and clients can themselves be managed through the
api-roles,api-integrationsandapi-role-privilegesendpoints, so a client allowed to call these can create new clients. Never grant that privilege to an integration.
Governing API clients as NHIs
| Practice | Weak pattern | Strong pattern |
|---|---|---|
| Identity per integration | One shared admin username and password used by every script | One API client per integration, named for its purpose and owner |
| Privilege scope | API role copied from the Administrator set | Role with only the read or update privileges the integration calls |
| Secret storage | Secret in a script on a file share or in a repository | Secret in a vault, injected at run time, never in source control |
| Rotation | Secret never rotated since creation | Scheduled rotation and immediate rotation when an owner leaves |
| Lifecycle | Clients left enabled after a project ends | Quarterly review; disable, then delete unused clients |
| Load | Unthrottled polling of the whole inventory | Jamf has no built-in rate limiting and recommends at most 5 concurrent connections, with backoff on errors |
See the Secrets Management Guide and the API Security Guide for vaulting and token handling patterns.
Other integration identities
- LDAP bind account: a directory service account used to look up users and groups. Use a read-only account, LDAPS, and treat its password as a managed secret.
- Webhook receivers: Jamf Pro sends events as an HTTP POST in JSON or XML to a URL you configure. Use HTTPS receivers you control and authenticate inbound requests at the receiver.
- Cloud identity provider connections: Microsoft Entra ID or Google Cloud Identity connections hold credentials or consent in the other platform. Review those app permissions in the IdP. See the Entra ID Security Guide.
- Apple Business or Apple School Manager tokens: server tokens linking Jamf to Automated Device Enrollment and app licensing. Track their expiry and who can download replacements.
Logging and detection
Jamf Pro records object history in the console, but the data a SOC needs has to be routed out deliberately.
| Source | What it provides | Use |
|---|---|---|
| Change Management | Changes made in Jamf Pro, such as creation of a user account, written to JAMFChangeManagement.log on the host and optionally to a syslog server | Forward to the SIEM; alert on new accounts, API clients, roles, scripts and policies |
| Object history | Per-object change history in the console | Investigation of who changed a policy or profile |
| Webhooks | Events including RestAPIOperation, ComputerPolicyFinished, MobileDeviceCommandCompleted, MobileDeviceUnenrolled, SmartGroupComputerMembershipChange and JSSStartup | Near real time signals for API activity, mass unenrolment and smart group manipulation |
| Jamf Protect (if licensed) | macOS endpoint analytics, unified logging, prevent lists and CIS benchmark compliance, with data integrations to Splunk, Microsoft Sentinel, Elastic, Datadog, Google Security Operations, Amazon S3 and Sumo Logic | Endpoint detection for script and process activity that MDM logs cannot see |
| Identity provider sign-in logs | SSO sign-ins to Jamf Pro | Risky sign-ins, impossible travel, sign-ins without MFA |
Detections worth building: erase or lock commands to more devices than a helpdesk would ever touch in an hour; new API clients or role changes; a new or edited script attached to a policy scoped to all computers; local account sign-ins when SSO is the norm; smart group membership jumps that pull many devices into a destructive policy's scope. See the macOS Detection and Response Guide and the SIEM Guide.
Metrics:
- Number of accounts and API clients holding erase, script or account-management privileges.
- Percentage of admin sign-ins through SSO, and number of local accounts outside the break-glass set.
- Percentage of API clients with a named owner, a vaulted secret and a rotation in the last 90 days (or your policy period).
- Days until APNs certificate and Apple Business or School Manager token expiry, tracked as an alert.
- Percentage of Change Management events reaching the SIEM, verified with a test change each month.
Hardening baseline
- Inventory: export Jamf Pro user accounts, groups and their privilege sets, all API clients and roles, LDAP and cloud IdP connections, and any scripts that contain credentials.
- Move admins to SSO: configure SAML or OIDC through Jamf Account, map IdP groups to Jamf groups, enforce phishing-resistant MFA and compliant devices in the IdP, test with a pilot group, then disable or vault the remaining local accounts.
- Re-scope privileges: build Custom privilege sets per job (helpdesk, app packaging, platform engineering, audit) and use sites where teams are separated. Remove erase and script privileges from everyone who does not need them weekly.
- Migrate automation: replace user-account scripts with API clients and minimal API roles; rotate every secret during the move; delete hard-coded passwords from scripts.
- Turn on logging: enable Change Management to syslog, configure webhooks to an authenticated HTTPS receiver, and build the detections above.
- Protect Apple-side dependencies: record the Managed Apple Account behind the APNs certificate, renew it annually before expiry, and keep MDM-stored Activation Lock bypass codes protected and backed up, as Apple advises.
- Harden endpoints through Jamf: enforce FileVault with escrowed recovery keys, CIS benchmark or compliance baseline rules for macOS, supervised devices through Automated Device Enrollment, and remove standing local admin rights. See the Disk Encryption Guide: BitLocker and FileVault and the Mobile Device Security Guide.
- Test and roll back: stage new configuration profiles and policies on a pilot smart group before wider scope; keep the previous profile version ready to re-scope; keep a vaulted local Administrator account working throughout the SSO cutover.
Small vs large estates: a team managing a few hundred Macs can still separate erase and script rights from day to day helpdesk work and move every integration to API clients; that costs little. Large or multi-subsidiary estates should add sites, a formal review of API clients every quarter, and SIEM correlation between Jamf, the IdP and Jamf Protect or other endpoint telemetry. If Jamf devices are also reported into Microsoft Intune for compliance, note that Intune scope tags do not apply to Jamf devices. See the Microsoft Intune Guide.
Common misconfigurations
- Shared automation admin: a single local Administrator account whose password sits in several scripts and tools, never rotated and impossible to attribute.
- Over-scoped API roles: API roles cloned from full admin rights, including the ability to manage API clients and user accounts, so one leaked secret becomes full control.
- SSO with a wide open back door: SSO enabled for admins, but local accounts left enabled for many staff, outside MFA and IdP offboarding.
- Erase rights everywhere: helpdesk privilege sets that include erase and mass actions, recreating the single-account fleet wipe risk seen in the Stryker Intune wiper attack.
- Unreviewed scripts: scripts added to policies without peer review or version control, which is how a compromised admin turns MDM into a malware distribution channel.
- Lost APNs ownership: the APNs certificate created by a personal account of someone who has left, so renewal fails and devices stop receiving commands.
Framework mapping
| Control area | NIST SP 800-53 Rev. 5 | NIST CSF 2.0 | MITRE ATT&CK v20 threat addressed |
|---|---|---|---|
| Least-privilege privilege sets and sites | AC-6, AC-6(5) Privileged Accounts | PR.AA-05 | T1072 Software Deployment Tools |
| API client and LDAP bind governance | AC-2 Account Management, SC-12 | PR.AA-01 | T1528 Steal Application Access Token |
| Change control over scripts and erase | CM-5(4) Dual Authorization | PR.PS-01 | T1485 Data Destruction |
| SSO and MFA for admins | IA-2 | PR.AA-01 | T1078.004 Cloud Accounts |
| Change Management, webhooks and SIEM | AU-6, SI-4 | DE.CM-09, PR.PS-04 | T1098 Account Manipulation |
Practitioner checklist
- List every Jamf Pro account and group with its privilege set and site, and remove unused accounts.
- Move administrator sign-in to SAML or OIDC SSO with phishing-resistant MFA; keep only vaulted break-glass local accounts.
- Restrict erase, mass action, script, policy and account-management privileges to a named few.
- Replace every username and password in automation with a dedicated API client and a minimal API role.
- Vault API client secrets, record an owner for each client, rotate on schedule and on staff changes, and disable unused clients.
- Never grant integrations the privileges to manage API roles, API clients or user accounts.
- Send Change Management logs to syslog and the SIEM, and alert on new clients, roles, scripts and bulk erase commands.
- Track APNs certificate and Apple Business or School Manager token expiry, and record the Managed Apple Account that owns them.
- Peer review and version-control every script before it is attached to a policy.
Standards and references
- Jamf Developer: Client Credentials
- Jamf Developer: Classic API Authentication Changes
- Jamf Developer: Jamf Pro API Overview
- Jamf Developer: Webhooks
- Apple: Platform Deployment, Intro to device management
- Apple: Platform Deployment, Apple Push Notification service
- Apple: Platform Deployment, Activation Lock
- MITRE ATT&CK: Software Deployment Tools
Related NHI Mgmt Group resources: macOS Security Guide for Enterprises · Microsoft Intune Guide · Mobile Device Security Guide · UEM Buyer's Guide · Secrets Management Guide