How it works
- When a user logs in for the first time, Himmelblau enrolls the device with Intune as part of the Entra ID device join process.
- The
himmelblaud-tasksdaemon periodically downloads compliance policies from Intune. - Policies are evaluated locally. If the device meets all requirements, it is reported as compliant.
- Conditional Access policies in Entra ID that require a compliant device are satisfied by enrolled Himmelblau devices.
Enabling policy enforcement
Policy enforcement is enabled by default. Theapply_policy option controls it:
/etc/himmelblau/himmelblau.conf
apply_policy = false to disable policy enforcement (the device will still enroll, but policies won’t be applied or checked during authentication).
Policy enforcement only applies to non-OIDC authentication flows. OIDC-based authentication (when
oidc_issuer_url is set) is not affected by this setting.Supported policy types
The following Intune policy extension types are handled by Himmelblau:| Policy type | Description |
|---|---|
| Compliance extensions | Standard Intune device compliance rules (OS version, encryption, etc.) |
| Custom compliance scripts | PowerShell/shell scripts that return compliance data |
| Chromium policy extensions | Browser policy enforcement for Chromium-based browsers |
| Scripts extensions | General shell script execution as policy |
himmelblaud-tasks daemon. Check its logs for policy evaluation details:
Conditional Access integration
Once enrolled and marked compliant, the device satisfies Conditional Access policies requiring:- Require compliant device — Himmelblau reports compliance status to Intune
- Require hybrid joined device — satisfied by
join_type = join(the default)
Verifying enrollment
After a user logs in for the first time, check that the device appears in Intune:- Go to intune.microsoft.com
- Navigate to Devices → All devices
- Find your Linux host by name — it should show as Managed with a compliance state
Troubleshooting
Device not appearing in Intune after login- Check that
join_type = joinis set (registration alone may not trigger full enrollment) - Review
journalctl -u himmelblaud-tasksfor enrollment errors - Ensure network access to Intune endpoints (
*.manage.microsoft.com)
- Check
journalctl -u himmelblaud-tasksfor specific policy failures - Verify
apply_policy = truein config - Custom compliance scripts may require specific tools to be installed on the Linux host
