docs: add Intune connector configuration guide
Signed-off-by: Tyler King <tking@guildhouse.dev>
This commit is contained in:
parent
6cfe5f7d9a
commit
1d24019544
1 changed files with 86 additions and 0 deletions
86
INTUNE.md
Normal file
86
INTUNE.md
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
# Intune Connector — Configuration Guide
|
||||||
|
|
||||||
|
## Azure AD App Permissions
|
||||||
|
|
||||||
|
Register an Azure AD application with the following Microsoft Graph API permissions (Application type, not Delegated):
|
||||||
|
|
||||||
|
| Permission | Type | Required For |
|
||||||
|
|------------|------|-------------|
|
||||||
|
| `DeviceManagementManagedDevices.Read.All` | Application | list_devices, get_device, get_compliance |
|
||||||
|
| `DeviceManagementManagedDevices.ReadWrite.All` | Application | sync_device, remote_lock, retire_device, wipe_device |
|
||||||
|
|
||||||
|
Grant admin consent for your tenant after adding the permissions.
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Enable the Intune connector
|
||||||
|
INTUNE_ENABLED=true
|
||||||
|
|
||||||
|
# Entra credentials (shared with the Entra registrar)
|
||||||
|
ENTRA_TENANT_ID=your-tenant-id
|
||||||
|
ENTRA_CLIENT_ID=your-app-client-id
|
||||||
|
ENTRA_CLIENT_SECRET=your-app-client-secret
|
||||||
|
|
||||||
|
# Compliance gating (optional)
|
||||||
|
INTUNE_COMPLIANCE_REQUIRED=false # Global default for all accord templates
|
||||||
|
INTUNE_COMPLIANCE_STRICT=false # Reject if no device_id in token
|
||||||
|
INTUNE_COMPLIANCE_CACHE_TTL=300 # Cache compliance state for 5 minutes
|
||||||
|
```
|
||||||
|
|
||||||
|
## Compliance-Gated AC Issuance
|
||||||
|
|
||||||
|
When `INTUNE_ENABLED=true`, the authorize endpoint can gate AC issuance on device compliance.
|
||||||
|
|
||||||
|
### Global Default
|
||||||
|
|
||||||
|
Set `INTUNE_COMPLIANCE_REQUIRED=true` to require compliance for all accord templates.
|
||||||
|
|
||||||
|
### Per-Accord Override
|
||||||
|
|
||||||
|
Accord templates can override the global default. Currently configured in `routers/authorize.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
_ACCORD_COMPLIANCE = {
|
||||||
|
"infrastructure-operations": {"device_compliance_required": True},
|
||||||
|
"device-management": {"device_compliance_required": True},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Strict vs Permissive Mode
|
||||||
|
|
||||||
|
- **Strict** (`INTUNE_COMPLIANCE_STRICT=true`): Rejects AC issuance if the token does not contain a device ID (e.g., Keycloak tokens without device claims). Use for environments where every operator must be on a managed device.
|
||||||
|
|
||||||
|
- **Permissive** (`INTUNE_COMPLIANCE_STRICT=false`, default): Allows AC issuance without device compliance fields when no device ID is present. Compliance is only checked when a device ID is available.
|
||||||
|
|
||||||
|
## Connector Operations
|
||||||
|
|
||||||
|
| Operation | Capability | Description |
|
||||||
|
|-----------|-----------|-------------|
|
||||||
|
| `list_devices` | READ | List managed devices |
|
||||||
|
| `get_device` | READ | Get device details |
|
||||||
|
| `get_compliance` | READ | Check compliance state (cached) |
|
||||||
|
| `sync_device` | PROPOSE | Trigger Intune device sync |
|
||||||
|
| `remote_lock` | MUTATE | Remote lock a device |
|
||||||
|
| `retire_device` | MUTATE | Retire from management |
|
||||||
|
| `wipe_device` | MUTATE | Factory reset device |
|
||||||
|
|
||||||
|
MUTATE operations (lock, retire, wipe) should be gated by ceremony approval in production accord templates via `ceremony_required_for` in the delegation scope.
|
||||||
|
|
||||||
|
## MCP Tools
|
||||||
|
|
||||||
|
When Intune is enabled, the MCP endpoint exposes:
|
||||||
|
|
||||||
|
- `list_devices` — List managed devices
|
||||||
|
- `get_device_compliance` — Check device compliance
|
||||||
|
- `sync_device` — Trigger device sync
|
||||||
|
- `remote_lock` — Remote lock (requires MUTATE)
|
||||||
|
|
||||||
|
All MCP tool calls route through the governed `IntuneConnector`, ensuring Chronicle audit trails.
|
||||||
|
|
||||||
|
## Chronicle Events
|
||||||
|
|
||||||
|
| Event | Code | Emitted When |
|
||||||
|
|-------|------|-------------|
|
||||||
|
| `CONNECTOR_INVOKED` | — | Every Intune connector invocation |
|
||||||
|
| `DEVICE_COMPLIANCE_CHECKED` | `0x2801` | Compliance gate evaluated during AC issuance |
|
||||||
Loading…
Reference in a new issue