# TenantPilot – M365 Policy Coverage Gap Analysis

**Date:** 2026-03-07
**Author:** Gap Analysis (Automated Deep Research)
**Scope:** Security, Governance & Baseline-relevante Policy-Familien über Microsoft 365 hinweg
**Methode:** Repo-Ist-Analyse + Microsoft Graph API Research + Produktpriorisierung

---

## 1. Executive Summary

- **Intune-Coverage ist stark:** 27 Policy-Typen + 3 Foundation-Typen sind produktiv integriert mit Backup, Restore, Drift, Inventory und Baselines. Die Intune-Abdeckung gehört zu den umfangreichsten am Markt.
- **Entra ID ist die größte High-Value-Lücke:** Conditional Access wird bereits gesichert (Preview-Restore), aber Named Locations, Authentication Methods Policy, Authentication Strengths, Cross-Tenant Access Settings und Authorization Policy fehlen komplett — alles davon ist über Graph v1.0 produktreif adressierbar.
- **Entra Admin Roles sind ein Alleinstellungsmerkmal:** Die Evidence-/Findings-Integration für hochprivilegierte Rollen ist bereits implementiert und in dieser Form selten bei Wettbewerbern.
- **SharePoint/OneDrive Tenant Settings** sind über die Graph v1.0 `admin/sharepoint/settings` API sauber erreichbar und für MSPs ein sehr häufiger Audit-Punkt (External Sharing, Guest Access).
- **Exchange Online Security-Policies** (Anti-Phishing, Safe Links, Safe Attachments, Anti-Spam) sind **nicht** sauber über Graph adressierbar — sie erfordern Exchange Online PowerShell (EXO V3). Integration ist **fachlich wichtig, technisch aufwändig**.
- **Microsoft Defender for Office 365** Policies teilen den Exchange-PowerShell-Kanal — gleiches Integrationsproblem.
- **UTCM (Unified Tenant Configuration Management)** ist in Preview und signalisiert langfristig einen vereinheitlichten Backup/Restore/Drift-Kanal für alle M365-Workloads. Strategisch relevant, aber noch nicht produktreif.
- **Die nächsten 5 High-Impact-Kandidaten** sind: Named Locations, Authentication Methods Policy, SharePoint Tenant Settings, Authentication Strengths und Cross-Tenant Access Settings — alle über Graph v1.0.
- **Purview/DLP** hat für MSPs begrenzten Wert (typischerweise Enterprise-Scope, selten in MSP-Baselines) und sollte nur als Roadmap-Signal behandelt werden.
- **Die größte strategische Chance** liegt in der Positionierung als „Unified M365 Configuration Governance" — dafür fehlt primär der Entra-ID-Block.

---

## 2. Current Coverage Snapshot

### 2.1 Was ist heute abgedeckt?

**Intune / Endpoint Management — 27 Policy-Typen (Full Backup/Restore/Inventory/Drift):**

| Kategorie | Policy-Typen |
|-----------|-------------|
| Configuration | Device Configuration, Administrative Templates (ADMX), Settings Catalog |
| Compliance | Device Compliance, Custom Compliance Scripts |
| Update Management | Windows Update Rings, Feature Updates, Quality Updates, Driver Updates |
| Apps / MAM | App Protection (MAM), App Configuration (MAM), App Configuration (Device), Mobile Apps (Metadata) |
| Scripts | PowerShell Scripts, macOS Shell Scripts, Proactive Remediations (Health Scripts) |
| Enrollment | Autopilot Profiles, Enrollment Status Page, Enrollment Limits, Platform Restrictions, Enrollment Notifications, Enrollment Restrictions, Terms & Conditions |
| Endpoint Security | Endpoint Security Intents, Endpoint Security Policies, Security Baselines |

**Foundation-Typen (3):**
Assignment Filters, Scope Tags, Notification Message Templates

**Entra ID — Teilweise:**

| Bereich | Status | Details |
|---------|--------|---------|
| Conditional Access Policies | ✅ Backup, Inventory, Versioning | Restore ist `preview-only` (bewusste Entscheidung wegen Risiko) |
| Entra Admin Roles | ✅ Evidence & Findings | Rolendefinitionen, Assignments, Severity-Klassifizierung, Finding-Generierung, Alerts |
| Entra Groups | ✅ Directory Cache | Read-only Sync für Group-Name-Resolution |
| Service Principals | ✅ Probing | RBAC-Onboarding-Validierung |

### 2.2 Schwerpunkt

Der klare Schwerpunkt liegt auf **Intune Endpoint Management**. Alle Intune-Policy-Familien haben:
- Graph Contract Definitionen mit Select/Expand/TypeFamily
- Assignment CRUD Paths
- Backup/Restore-Unterstützung
- Inventory Integration
- Drift Detection (über Baselines/Snapshots)

### 2.3 Erkennbare Lücken

| Domäne | Gap-Einschätzung |
|--------|-----------------|
| Entra ID (Identity) | Nur CA + Admin Roles; Named Locations, Auth Methods, Auth Strengths, Cross-Tenant Access, Authorization Policy, Security Defaults fehlen komplett |
| SharePoint / OneDrive | Keine Unterstützung |
| Exchange Online | Keine Unterstützung |
| Defender for Office 365 | Keine Unterstützung |
| Purview / DLP | Keine Unterstützung |
| Intune Policy Sets | Im Repo als Spec (025), aber nicht im `supported_policy_types` |
| Intune Device Categories | Im Repo als Spec (028), aber nicht im `supported_policy_types` |

### 2.4 Im Repo vorbereitet, aber nicht vollständig produktisiert

| Element | Status |
|---------|--------|
| `conditionalAccessPolicy` | Graph Contract vollständig definiert, aber Restore auf `preview-only` limitiert |
| Policy Sets (Spec 025) | Spec vorhanden, keine Implementation |
| Device Categories (Spec 028) | Spec vorhanden, keine Implementation |
| WIP Policies (Spec 029) | Spec vorhanden, keine Implementation — EOL-Thema, geringe Priorität |
| Intune RBAC Backup (Spec 030) | Spec vorhanden — Role Definitions/Assignments unter `deviceManagement/` |
| Cross-Tenant Compare (Spec 043) | Architektur-Spec vorhanden, Implementation läuft |

---

## 3. Coverage & Gap Matrix

### 3.1 Entra ID / Identity & Access

| Policy Domain | Policy Family | API / Management Path | Access Channel | Coverage | MSP Value | Governance Relevance | Feasibility | Maturity | SKU Notes | Recommendation | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Entra ID | **Conditional Access Policies** | `identity/conditionalAccess/policies` | Graph v1.0 | **Partial** (Backup+Inventory, no full restore) | High | High | Easy | Production | P1/P2 required | **Now** | Restore-Ausbau ist bewusste Risikoentscheidung; Read/Backup/Versioning ist produktiv |
| Entra ID | **Named Locations** | `identity/conditionalAccess/namedLocations` | Graph v1.0 | **No** | High | High | Easy | Production | P1/P2 | **Now** | Direkte Abhängigkeit von CA Policies; MSPs brauchen dies für Baseline-Vergleiche. CRUD über Graph v1.0 vollständig. |
| Entra ID | **Authentication Methods Policy** | `policies/authenticationMethodsPolicy` | Graph v1.0 | **No** | High | High | Easy | Production | Alle SKUs (Basis); einige Methods P1/P2 | **Now** | Tenant-weite Konfiguration (FIDO2, Authenticator, SMS, etc.). Zentrales Audit-Thema für MSPs. Singleton-Resource. |
| Entra ID | **Authentication Strengths** | `policies/authenticationStrengths/policies` | Graph v1.0 | **No** | High | High | Easy | Production | P1/P2 (CA dependency) | **Now** | Custom Auth Strength Definitions für CA. Graph v1.0 GA. MSP-Baseline-Essential. |
| Entra ID | **Cross-Tenant Access Settings** | `policies/crossTenantAccessPolicy` | Graph v1.0 | **No** | High | High | Moderate | Production | P1/P2 (B2B) | **Next** | Partner/Default/Inbound/Outbound Settings. Komplexere Struktur (Sub-Resources), aber über Graph v1.0 GA. Kritisch für B2B-Governance. |
| Entra ID | **Authorization Policy** | `policies/authorizationPolicy` | Graph v1.0 | **No** | Medium | High | Easy | Production | Alle SKUs | **Next** | Singleton: steuert Guest Invite, Self-Service Sign-up, User Consent, etc. Einfache Integration, hoher Audit-Wert. |
| Entra ID | **Security Defaults** | `policies/identitySecurityDefaultsEnforcementPolicy` | Graph v1.0 | **No** | Medium | High | Easy | Production | Alle SKUs | **Next** | Singleton: ein Boolean + Metadata. Triviale Integration. Wichtig als Posture-Signal (an/aus). |
| Entra ID | **Admin Consent Request Policy** | `policies/adminConsentRequestPolicy` | Graph v1.0 | **No** | Medium | Medium | Easy | Production | Alle SKUs | **Next** | App Consent Workflow Settings. Simple Singleton. |
| Entra ID | **Permission Grant Policies** | `policies/permissionGrantPolicies` | Graph v1.0 | **No** | Medium | Medium | Moderate | Production | Alle SKUs | **Later** | Steuert welche Permissions User/Admins auto-consenten dürfen. Relevant, aber Nischen-Audit. |
| Entra ID | **Conditional Access Templates** | `identity/conditionalAccess/templates` | Graph beta | **No** | Low | Medium | Hard | Beta | P1/P2 | **Roadmap** | Beta-only. Eher Reference-Daten als konfigurierbare Policies. |
| Entra ID | **Identity Protection Policies** | `identityProtection/` | Graph v1.0 (read) / beta (write) | **No** | Medium | High | Hard | Mixed | P2 required | **Later** | Risk-based CA (User/Sign-In Risk). Lesen über v1.0, Konfiguration nur beta. SKU-abhängig (P2). |
| Entra ID | **Entra Admin Roles** (Evidence) | `roleManagement/directory/roleDefinitions` + `roleAssignments` | Graph v1.0 | **Yes** | High | High | — | Production | — | — | Bereits implementiert als Findings + Alerts |
| Entra ID | **Directory Groups** (Cache) | `groups` | Graph v1.0 | **Yes** | Medium | Medium | — | Production | — | — | Read-only Cache für Name-Resolution |

### 3.2 SharePoint / OneDrive

| Policy Domain | Policy Family | API / Management Path | Access Channel | Coverage | MSP Value | Governance Relevance | Feasibility | Maturity | SKU Notes | Recommendation | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| SharePoint | **Tenant Sharing Settings** | `admin/sharepoint/settings` | Graph v1.0 | **No** | High | High | Easy | Production | SPO License | **Now** | External Sharing Level, Guest Access Domains, Link Defaults. Häufigster SPO-Audit-Punkt. Singleton-Resource über Graph v1.0. |
| SharePoint | **Site Creation Settings** | `admin/sharepoint/settings` (Teil von Tenant Settings) | Graph v1.0 | **No** | Low | Low | Easy | Production | SPO License | **Later** | Enthalten in demselben Endpoint wie Sharing Settings, aber geringerer Governance-Wert. |
| OneDrive | **OneDrive Storage Settings** | `admin/sharepoint/settings` (Subset) | Graph v1.0 | **No** | Low | Low | Easy | Production | ODB License | **Roadmap** | Default Storage Limits, Sync Restrictions. Limitierter Audit-Wert. |

### 3.3 Exchange Online

| Policy Domain | Policy Family | API / Management Path | Access Channel | Coverage | MSP Value | Governance Relevance | Feasibility | Maturity | SKU Notes | Recommendation | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Exchange | **Anti-Phishing Policy** | EXO PowerShell: `Get-AntiPhishPolicy` | **Non-Graph (PowerShell)** | **No** | High | High | Hard | Production (PS) | EOP / Defender P1 | **Later** | Kein Graph-Endpoint. Erfordert EXO V3 Remote-PowerShell oder REST-basierte EXO V3 Cmdlets. Fachlich sehr wichtig, technisch aufwändig für SaaS-Produkt. |
| Exchange | **Safe Links Policy** | EXO PowerShell: `Get-SafeLinksPolicy` | **Non-Graph (PowerShell)** | **No** | High | High | Hard | Production (PS) | Defender P1/P2 | **Later** | Gleiche Situation wie Anti-Phishing. Kein Graph-Endpoint. Kritische Security-Baseline. |
| Exchange | **Safe Attachments Policy** | EXO PowerShell: `Get-SafeAttachmentPolicy` | **Non-Graph (PowerShell)** | **No** | High | High | Hard | Production (PS) | Defender P1/P2 | **Later** | Gleiche Situation. Kein Graph. |
| Exchange | **Anti-Spam Policy** | EXO PowerShell: `Get-HostedContentFilterPolicy` | **Non-Graph (PowerShell)** | **No** | Medium | High | Hard | Production (PS) | EOP (alle SKUs) | **Later** | Guter Audit-Wert, aber PowerShell-Only. |
| Exchange | **DKIM Settings** | EXO PowerShell: `Get-DkimSigningConfig` | **Non-Graph (PowerShell)** | **No** | Medium | High | Hard | Production (PS) | Alle SKUs | **Roadmap** | Email-Authentifizierung. PowerShell-Only. |
| Exchange | **Transport Rules** | EXO PowerShell: `Get-TransportRule`; teilweise `security/rules` beta | **Non-Graph (PowerShell)** / Graph beta partial | **No** | Medium | Medium | Hard | Mixed | Alle SKUs | **Roadmap** | Komplexe Objekte. PowerShell primär. Beta-Graph sehr limitiert. |
| Exchange | **Remote Domains** | EXO PowerShell | **Non-Graph (PowerShell)** | **No** | Low | Medium | Hard | Production (PS) | Alle SKUs | **Roadmap** | Nischen-Governance. |
| Exchange | **OWA Mailbox Policy** | EXO PowerShell | **Non-Graph (PowerShell)** | **No** | Low | Low | Hard | Production (PS) | Alle SKUs | **Roadmap** | Geringer Baseline-Wert. |

### 3.4 Microsoft Defender for Office 365 / XDR

| Policy Domain | Policy Family | API / Management Path | Access Channel | Coverage | MSP Value | Governance Relevance | Feasibility | Maturity | SKU Notes | Recommendation | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Defender | **Preset Security Policies** | EXO PowerShell: `Get-*Policy` + Portal | **Non-Graph (PowerShell + Portal)** | **No** | High | High | Hard | Indirect | Defender P1/P2 | **Roadmap** | Microsoft's empfohlene Baseline. Keine Graph-API. Nur über PS + Security Portal steuerbar. |
| Defender | **Attack Simulation Training Config** | `security/attackSimulation/` | Graph beta | **No** | Low | Medium | Hard | Beta | Defender P2 | **Roadmap** | Nur Simulation-Runs über beta-API erreichbar, nicht die Konfiguration. |
| Defender | **Quarantine Policies** | EXO PowerShell: `Get-QuarantinePolicy` | **Non-Graph (PowerShell)** | **No** | Low | Medium | Hard | Production (PS) | EOP | **Roadmap** | Nischen-Governance. |

### 3.5 Intune – Noch fehlende / teilweise fehlende Typen

| Policy Domain | Policy Family | API / Management Path | Access Channel | Coverage | MSP Value | Governance Relevance | Feasibility | Maturity | SKU Notes | Recommendation | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Intune | **Policy Sets** | `deviceAppManagement/policySets` | Graph beta | **No** (Spec 025 exists) | Medium | Medium | Moderate | Beta | Intune P1 | **Next** | Spec vorhanden. Beta-API. Nützlich für Gruppierung, aber nicht Kern-Security. |
| Intune | **Device Categories** | `deviceManagement/deviceCategories` | Graph v1.0 | **No** (Spec 028 exists) | Low | Low | Easy | Production | Intune P1 | **Later** | Einfache Integration, aber geringer Governance-Wert. |
| Intune | **Intune RBAC** (Role Definitions/Assignments) | `deviceManagement/roleDefinitions` + `roleAssignments` | Graph v1.0 | **No** (Spec 030 exists) | Medium | High | Moderate | Production | Intune P1 | **Next** | Bereits als Graph Contract definiert (`rbacRoleAssignment`). Spec vorhanden. Wichtig für Governance. |
| Intune | **Apple VPP Tokens** | `deviceAppManagement/vppTokens` | Graph beta | **No** | Low | Low | Moderate | Beta | Intune P1 + Apple VPP | **Roadmap** | Operational, nicht Security-relevant. |
| Intune | **DEP Profiles (Apple)** | `deviceManagement/depOnboardingSettings` | Graph beta | **No** | Medium | Medium | Moderate | Beta | Intune P1 + Apple DEP | **Later** | Relevant für Apple-heavy MSPs. Beta. |
| Intune | **Windows Feature Update Expedite** | `deviceManagement/windowsQualityUpdatePolicies` | Graph beta | **No** | Medium | Medium | Moderate | Beta | Intune P1 | **Later** | Neuer Update-Typ. Beta. Eigenständige Policy. |

### 3.6 Purview / Information Governance (Optional)

| Policy Domain | Policy Family | API / Management Path | Access Channel | Coverage | MSP Value | Governance Relevance | Feasibility | Maturity | SKU Notes | Recommendation | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Purview | **Sensitivity Labels** | `security/informationProtection/sensitivityLabels` | Graph v1.0 (read) / beta (full) | **No** | Medium | High | Hard | Mixed | M365 E3/E5 | **Roadmap** | Lesen über v1.0. Aber Labels + Publishing Policies sind komplex. Enterprise-Feature, selten in MSP-Baselines. |
| Purview | **DLP Policies** | Security & Compliance PowerShell / `security/` beta | **Non-Graph (PowerShell)** / Graph beta partial | **No** | Low | Medium | Hard | Beta/Indirect | M365 E3/E5/Compliance Add-on | **Roadmap** | Kein stabiler Graph-Kanal. Enterprise-only. Nicht MSP-Baseline-tauglich. |
| Purview | **Retention Policies** | `security/` beta; PowerShell primary | **Non-Graph (PowerShell)** / Graph beta partial | **No** | Low | Medium | Hard | Beta/Indirect | M365 E3/E5 | **Roadmap** | Ähnliches Problem wie DLP. |

---

## 4. Top Missing High-Value Gaps

Die folgenden 10 Lücken bieten den größten kombinierten Wert aus MSP-Relevanz, Audit-Wichtigkeit und technischer Umsetzbarkeit:

### Rang 1: Entra ID – Named Locations
- **Warum:** Direkte Abhängigkeit von CA Policies. Jeder CA-Baseline-Vergleich ist ohne Named Locations unvollständig. `identity/conditionalAccess/namedLocations` ist Graph v1.0 GA mit vollem CRUD.
- **Aufwand:** Gering. Gleicher Pattern wie CA Policies.

### Rang 2: Entra ID – Authentication Methods Policy
- **Warum:** Tenant-weite Steuerung von MFA-Methoden (FIDO2, Authenticator, SMS, Temporary Access Pass). Top-Audit-Thema. `policies/authenticationMethodsPolicy` ist ein Singleton über Graph v1.0.
- **Aufwand:** Gering. Einzelne Resource mit Sub-Configurations pro Method.

### Rang 3: SharePoint – Tenant Sharing Settings
- **Warum:** External Sharing Level, Guest Access Domain Allow/Block, Default Link Type. Häufigster SharePoint-Audit-Punkt. `admin/sharepoint/settings` ist Graph v1.0 GA.
- **Aufwand:** Gering. Singleton-Resource.

### Rang 4: Entra ID – Authentication Strengths
- **Warum:** Custom Authentication Strength Policies für CA. Definiert erlaubte MFA-Kombinationen. `policies/authenticationStrengths/policies` ist Graph v1.0 GA.
- **Aufwand:** Gering. Collection mit einfacher Struktur.

### Rang 5: Entra ID – Cross-Tenant Access Settings
- **Warum:** B2B Inbound/Outbound Policies, Default Settings, Partner Configurations. Kritisch für MSP-Governance bei Multi-Tenant-Umgebungen. Graph v1.0 GA.
- **Aufwand:** Moderat. Verschachtelte Struktur (Default + N Partner-Configs mit je Inbound/Outbound/Trust).

### Rang 6: Entra ID – Authorization Policy
- **Warum:** Steuert grundlegende Tenant-Einstellungen: Wer darf Guests einladen, Self-Service Sign-up, User Consent Flow. `policies/authorizationPolicy` ist Graph v1.0 GA. Singleton.
- **Aufwand:** Gering. Ein Objekt.

### Rang 7: Entra ID – Security Defaults Policy
- **Warum:** Ein Boolean (+ Metadata) das bestimmt ob Security Defaults aktiviert sind. Trivialer Check, aber kritisches Posture-Signal: Ein Tenant mit Security Defaults OFF und ohne CA ist ein Red Flag.
- **Aufwand:** Trivial. Ein GET-Request.

### Rang 8: Intune – RBAC Role Definitions & Assignments
- **Warum:** Intune RBAC Backup/Governance. Wer hat welche Rechte im Intune-Kontext? Graph Contract bereits definiert. Spec 030 existiert.
- **Aufwand:** Moderat. Graph Contract Grundstruktur vorhanden.

### Rang 9: Entra ID – Admin Consent Request Policy
- **Warum:** App Consent Workflow Settings. Einfaches Singleton. Audit-relevant (wer darf Apps genehmigen?).
- **Aufwand:** Gering.

### Rang 10: Conditional Access – Restore-Ausbau
- **Warum:** CA Backup ist produktiv, Restore ist `preview-only`. Full Restore (mit Safeguards wie reportOnly-Modus, Dry-Run Validation) würde den CA-Workflow komplett machen.
- **Aufwand:** Moderat. Risiko-Management ist die eigentliche Herausforderung, nicht die API.

---

## 5. Not Sensible Before Launch

Die folgenden Kandidaten sind fachlich relevant, aber aktuell **nicht sinnvoll für die unmittelbare Umsetzung**:

### Exchange Online Anti-Phishing / Safe Links / Safe Attachments
- **Warum nicht:** Kein Graph-Endpoint. Erfordert Exchange Online PowerShell V3 (REST-based) Integration. Das bedeutet: separater Auth-Flow (Certificate-Based Auth für EXO), separater Management-Kanal, separates Rate-Limit-Handling. Die technische Architektur von TenantPilot (Graph-Contract-basiert) müsste fundamental erweitert werden.
- **Status:** Wichtig, aber aktuell schlecht integrierbar. Eher Roadmap-/Marketing-Signal.

### Microsoft Defender Preset Security Policies
- **Warum nicht:** Gleiche EXO-PowerShell-Abhängigkeit. Zusätzlich: Preset Security Policies sind ein Microsoft-eigenes Baseline-Konzept — die sinnvolle Governance-Integration erfordert Verständnis des Tiering-Modells (Standard/Strict).
- **Status:** Roadmap only.

### Purview DLP / Retention Policies
- **Warum nicht:** Kein stabiler Graph-Kanal. Erfordert Security & Compliance PowerShell. SKU-abhängig (E3/E5). MSPs nutzen DLP seltener als Enterprise-Kunden. ROI für TenantPilot ist gering.
- **Status:** Roadmap only (ggf. Enterprise-Tier).

### Identity Protection Policies (Risk-Based CA)
- **Warum nicht:** Lesen über Graph v1.0 möglich, aber Konfiguration nur über beta. Harte P2-SKU-Abhängigkeit. MSPs mit M365 BP (Business Premium) haben kein P2.
- **Status:** Later / Roadmap.

### Intune Policy Sets (beta API)
- **Warum nicht:** Beta-API. Policy Sets sind ein Organisations-Feature, kein Security-Feature. Der Governance-Wert (welche Policies gehören zusammen?) ist nice-to-have, nicht must-have.
- **Status:** Next (nach Stabilisierung der beta-API).

### Sensitivity Labels
- **Warum nicht:** Read-API ist v1.0, aber die vollständige Konfiguration (Label Policies, Auto-Labeling, Publishing) erfordert beta oder S&C PowerShell. Enterprise-Feature. Rare im MSP-Baseline-Kontext.
- **Status:** Roadmap only.

---

## 6. UTCM Roadmap Signals

### Was ist UTCM?

**Unified Tenant Configuration Management** (Codename: Microsoft 365 Backup & Configuration Management) ist Microsofts Ansatz, Konfigurationen über alle M365-Workloads hinweg einheitlich zu adressieren. Stand März 2026:

### Strategisch interessante Signale

| Signal | Bedeutung für TenantPilot | Zeitrahmen |
|--------|--------------------------|------------|
| **UTCM Configuration Profiles API** (Preview) | Einheitliches Read/Write/Diff für SPO, EXO, Teams, Defender Settings über Graph | Beobachten. Preview seit Mitte 2025. Keine GA-Timeline bekannt. |
| **M365 Backup API** (`solutions/backupRestore/`) | Graph v1.0 GA für SPO/ODB/EXO **Data** Backup. Nicht für Konfiguration. | **Nicht relevant** für TenantPilot (Data Backup ≠ Config Governance). |
| **Multi-Tenant Management APIs** (`tenantRelationships/managedTenants/`) | Read-only Aggregation über MSP-Managed Tenants. Baselines, Alerts, Compliance Trends. | **Beobachten.** Überschneidung mit TenantPilot's eigenem Multi-Tenant-Modell. Könnte als Datenquelle nützlich sein. |
| **UTCM Drift Detection** | Microsoft's eigene Drift Detection für M365 Config. Aktuell sehr begrenzt (nur wenige Workloads). | **Langfristiges Wettbewerbsrisiko.** TenantPilot's Drift Engine ist deutlich umfangreicher. |

### Bewertung

UTCM ist heute ein **Beobachtungssignal**, kein Umsetzungsziel:
- Die Preview-APIs sind instabil und haben sehr begrenzten Workload-Scope
- Microsoft's eigene Roadmap zeigt keine klare GA-Timeline
- TenantPilot sollte UTCM als **langfristigen Integrationspartner** betrachten, nicht als kurzfristiges Feature-Ziel
- Die Strategie sollte sein: Graph v1.0 APIs zuerst, UTCM als Beschleuniger wenn GA

---

## 7. Recommended Product Sequencing

### Now (Q2 2026 – unmittelbar umsetzbar, hoher ROI)

| # | Kandidat | Begründung |
|---|----------|-----------|
| 1 | **Entra: Named Locations** | CA-Abhängigkeit, Graph v1.0, triviales Pattern |
| 2 | **Entra: Authentication Methods Policy** | Top-Audit-Thema, Graph v1.0, Singleton |
| 3 | **SharePoint: Tenant Sharing Settings** | Häufigster SPO-Audit-Punkt, Graph v1.0, Singleton |
| 4 | **Entra: Authentication Strengths** | CA-Dependency, Graph v1.0, einfach |
| 5 | **Entra: Security Defaults** | Trivial (1 Boolean), aber kritisches Posture-Signal |

*Alle 5 Kandidaten nutzen ausschließlich Graph v1.0 Stable-APIs und erfordern keinen neuen Integrationskanal.*

### Next (Q3-Q4 2026 – moderater Aufwand, solider Wert)

| # | Kandidat | Begründung |
|---|----------|-----------|
| 6 | **Entra: Cross-Tenant Access Settings** | B2B-Governance, Graph v1.0, aber verschachtelte Struktur |
| 7 | **Entra: Authorization Policy** | Tenant-Grundkonfiguration, Graph v1.0, Singleton |
| 8 | **Intune: RBAC Role Definitions/Assignments** | Spec 030 vorhanden, Graph Contract existiert, Governance-Must |
| 9 | **Entra: Admin Consent Request Policy** | Einfach, Graph v1.0, App-Consent-Governance |
| 10 | **Conditional Access: Full Restore** | Backup existiert; Restore-Workflow mit Safety-Guardrails ausbauen |

### Later (2027 H1 – requires architecture investment or beta stabilization)

| # | Kandidat | Begründung |
|---|----------|-----------|
| 11 | **Entra: Permission Grant Policies** | Graph v1.0, aber Nischen-Thema |
| 12 | **Entra: Identity Protection Policies** | SKU-abhängig (P2), Write nur beta |
| 13 | **Intune: Policy Sets** | Beta API, nice-to-have Governance |
| 14 | **Intune: DEP Profiles (Apple)** | Beta, Apple-spezifisch |
| 15 | **Exchange: Anti-Phishing/Safe Links/Safe Attachments** | Erfordert EXO PowerShell-Kanal — architektonische Erweiterung |

### Roadmap Only (strategisch, nicht kurzfristig)

| Kandidat | Begründung |
|----------|-----------|
| **UTCM Integration** | Preview, keine GA-Timeline |
| **Defender Preset Security Policies** | PowerShell-Only, komplexes Tiering |
| **Purview DLP / Retention** | PowerShell + beta, Enterprise-SKU, geringer MSP-ROI |
| **Sensitivity Labels (Full)** | Mixed API, Enterprise-Feature |
| **Exchange Transport Rules** | PowerShell primary, komplexe Objekte |
| **Multi-Tenant Management API** | Read-only Aggregation, Überschneidung mit eigenem Modell |

---

## 8. Sources

### Microsoft Graph API Documentation (v1.0)
- [Conditional Access Policies](https://learn.microsoft.com/en-us/graph/api/resources/conditionalaccesspolicy?view=graph-rest-1.0)
- [Named Locations](https://learn.microsoft.com/en-us/graph/api/resources/namedlocation?view=graph-rest-1.0)
- [Authentication Methods Policy](https://learn.microsoft.com/en-us/graph/api/resources/authenticationmethodspolicy?view=graph-rest-1.0)
- [Authentication Strength Policy](https://learn.microsoft.com/en-us/graph/api/resources/authenticationstrengthpolicy?view=graph-rest-1.0)
- [Cross-Tenant Access Policy](https://learn.microsoft.com/en-us/graph/api/resources/crosstenantaccesspolicy-overview?view=graph-rest-1.0)
- [Authorization Policy](https://learn.microsoft.com/en-us/graph/api/resources/authorizationpolicy?view=graph-rest-1.0)
- [Identity Security Defaults](https://learn.microsoft.com/en-us/graph/api/resources/identitysecuritydefaultsenforcementpolicy?view=graph-rest-1.0)
- [Admin Consent Request Policy](https://learn.microsoft.com/en-us/graph/api/resources/adminconsentrequestpolicy?view=graph-rest-1.0)
- [Permission Grant Policies](https://learn.microsoft.com/en-us/graph/api/resources/permissiongrantpolicy?view=graph-rest-1.0)
- [SharePoint Settings](https://learn.microsoft.com/en-us/graph/api/resources/sharepointsettings?view=graph-rest-1.0)
- [Role Management (Directory)](https://learn.microsoft.com/en-us/graph/api/resources/rolemanagement?view=graph-rest-1.0)

### Microsoft Graph API Documentation (beta)
- [Identity Protection](https://learn.microsoft.com/en-us/graph/api/resources/identityprotection-overview?view=graph-rest-beta)
- [Policy Sets (Intune)](https://learn.microsoft.com/en-us/graph/api/resources/intune-policyset-policyset?view=graph-rest-beta)
- [UTCM / Multi-Tenant Management](https://learn.microsoft.com/en-us/graph/api/resources/managedtenants-managedtenant?view=graph-rest-beta)

### Exchange Online / Defender (PowerShell)
- [EXO V3 Module](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps)
- [Anti-Phishing Policies](https://learn.microsoft.com/en-us/defender-office-365/anti-phishing-policies-about)
- [Safe Links](https://learn.microsoft.com/en-us/defender-office-365/safe-links-about)
- [Safe Attachments](https://learn.microsoft.com/en-us/defender-office-365/safe-attachments-about)
- [Preset Security Policies](https://learn.microsoft.com/en-us/defender-office-365/preset-security-policies)

### Purview
- [Sensitivity Labels API](https://learn.microsoft.com/en-us/graph/api/resources/security-sensitivitylabel?view=graph-rest-1.0)
- [Data Loss Prevention (Compliance)](https://learn.microsoft.com/en-us/purview/dlp-learn-about-dlp)

### UTCM / M365 Backup
- [Microsoft 365 Backup (Data)](https://learn.microsoft.com/en-us/graph/api/resources/backuprestoreroot?view=graph-rest-1.0)
- [Multi-Tenant Management (Lighthouse)](https://learn.microsoft.com/en-us/graph/api/resources/managedtenants-managedtenant?view=graph-rest-beta)

---

## Appendix A: Architektur-Anmerkungen für die Umsetzung

### "Now"-Kandidaten folgen dem bestehenden Graph-Contract-Pattern

Alle 5 „Now"-Kandidaten können in das bestehende `config/graph_contracts.php` + `GraphContractRegistry` Muster integriert werden:

```
// Beispiel-Contract für Named Locations
'namedLocation' => [
    'resource' => 'identity/conditionalAccess/namedLocations',
    'allowed_select' => ['id', 'displayName', '@odata.type', 'modifiedDateTime'],
    'allowed_expand' => [],
    'type_family' => [
        '#microsoft.graph.ipNamedLocation',
        '#microsoft.graph.countryNamedLocation',
    ],
    'create_method' => 'POST',
    'update_method' => 'PATCH',
    'id_field' => 'id',
    'hydration' => 'properties',
],
```

### Singleton-Resources (neue Kategorie)

Authentication Methods Policy, Authorization Policy und Security Defaults sind **Singletons** (ein Objekt pro Tenant, kein Collection-CRUD). Das bestehende Pattern (Collection-basiert mit CRUD) muss um einen Singleton-Modus erweitert werden:
- GET (kein $top, kein Paging)
- PATCH (kein POST/DELETE)
- Vergleich: Vorher/Nachher eines einzelnen Objekts

### Permissions-Impact

| Kandidat | Benötigte Permission | Typ |
|----------|---------------------|-----|
| Named Locations | `Policy.Read.All` (bereits granted) | Read |
| Auth Methods Policy | `Policy.Read.All` (bereits granted) | Read |
| Auth Strengths | `Policy.Read.All` (bereits granted) | Read |
| Security Defaults | `Policy.Read.All` (bereits granted) | Read |
| SharePoint Settings | `SharePointTenantSettings.Read.All` | **Neu** |
| Cross-Tenant Access | `Policy.Read.All` (bereits granted) | Read |
| Authorization Policy | `Policy.Read.All` (bereits granted) | Read |

Bemerkenswert: **4 von 5 „Now"-Kandidaten** erfordern keine neuen Permissions — `Policy.Read.All` ist bereits in `config/intune_permissions.php` als granted definiert. Nur SharePoint benötigt eine neue Permission.
