Microsoft Graph API
Die Microsoft Graph API ist der einzige programmatische Zugang zu allen Microsoft 365 und Intune Daten. Jede Automatisierung — ob PowerShell-Skript, Deployment-Automation oder Monitoring — nutzt unter der Haube die Graph API.
Authentifizierung
App Registration (Automatisierung)
App Registration mit Zertifikat (Concat Standard)
FĂĽr alle automatisierten Prozesse (Backups, Reports, Deployments) wird eine App Registration mit zertifikatsbasierter Authentifizierung verwendet.
App Registration erstellen
Entra ID → App registrations → New registration:
| Einstellung | Wert |
|---|---|
| Name | Concat-Intune-Automation |
| Supported account types | Single tenant |
| Redirect URI | Nicht erforderlich |
Zertifikat hochladen
App → Certificates & secrets → Certificates → Upload:
# Self-signed Zertifikat erstellen (fĂĽr Entwicklung)
$cert = New-SelfSignedCertificate -Subject "CN=Concat-Intune-Automation" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyExportPolicy Exportable -KeySpec Signature `
-KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 `
-NotAfter (Get-Date).AddYears(2)
# Ă–ffentlichen SchlĂĽssel exportieren (fĂĽr Upload in Entra ID)
Export-Certificate -Cert $cert -FilePath "C:\temp\concat-automation.cer"FĂĽr Produktionsumgebungen: Zertifikat von einer internen CA oder einem vertrauenswĂĽrdigen Anbieter.
API-Permissions konfigurieren
App → API permissions → Add a permission → Microsoft Graph → Application permissions:
| Permission | Zweck | Typ |
|---|---|---|
DeviceManagementConfiguration.ReadWrite.All | Policies lesen/schreiben | Application |
DeviceManagementManagedDevices.ReadWrite.All | Geräte-Aktionen | Application |
DeviceManagementApps.ReadWrite.All | App-Verwaltung | Application |
Policy.ReadWrite.ConditionalAccess | CA-Policies | Application |
Directory.Read.All | Gruppen und User lesen | Application |
Admin Consent erteilen → „Grant admin consent for [Tenant]” klicken.
Verbindung testen
# Verbindung mit Zertifikat
Connect-MgGraph -ClientId "XXXXXXXX-XXXX-XXXX-XXXX" `
-TenantId "XXXXXXXX-XXXX-XXXX-XXXX" `
-CertificateThumbprint "XXXXXXXXXXXXXXXXXXXX"
# Verbindung prĂĽfen
Get-MgContextNiemals Client Secrets in Skripten verwenden! Client Secrets können leaken (Logs, Repos, Screenshots). Zertifikate sind die einzig akzeptable Methode für automatisierte Prozesse. Secrets nur für kurzfristige Entwicklungszwecke — und dann sofort rotieren.
Häufig genutzte Endpoints
Geräte
Geräte-Verwaltung
| Endpoint | Zweck | Methode |
|---|---|---|
/deviceManagement/managedDevices | Alle verwalteten Geräte | GET |
/deviceManagement/managedDevices/{id}/wipe | Gerät wipen | POST |
/deviceManagement/managedDevices/{id}/retire | Gerät retiren | POST |
/deviceManagement/managedDevices/{id}/syncDevice | Sync erzwingen | POST |
/deviceManagement/windowsAutopilotDeviceIdentities | Autopilot-Geräte | GET |
/deviceManagement/importedWindowsAutopilotDeviceIdentities | Autopilot-Import | POST |
# Alle Windows-Geräte abrufen
$devices = Get-MgDeviceManagementManagedDevice -Filter "operatingSystem eq 'Windows'" -All
$devices | Select-Object DeviceName, ComplianceState, LastSyncDateTime | Format-TableBest Practices
| Regel | Details |
|---|---|
| Least Privilege | Nur die minimal notwendigen Graph Permissions vergeben — nie .ReadWrite.All wenn .Read.All reicht |
| Certificate Auth | FĂĽr Automatisierung immer Zertifikate verwenden, nie Client Secrets |
| Throttling | Graph API hat Rate Limits (HTTP 429) — Retry-After Header beachten, exponentielles Backoff implementieren |
| Pagination | Große Ergebnismengen mit -All Parameter oder @odata.nextLink vollständig abrufen |
| Beta vs. v1.0 | Für Produktionsskripte immer v1.0 verwenden — Beta-Endpoints können sich ändern |
| Error Handling | Jedes Skript braucht Try/Catch und aussagekräftige Fehlermeldungen |
Graph API Permissions sind mächtig. Eine App Registration mit DeviceManagementManagedDevices.ReadWrite.All kann alle Geräte wipen. App Registrations müssen vom Security Team und dem Technical Lead reviewed werden.