M365 App Registrations & Permissions¶
TCM365 verwendet ein Drei-Tier-Berechtigungsmodell für die Microsoft 365 Integration. Dieser Guide erklärt exakt, welche Azure AD App Registrations benötigt werden, welche Permissions jede App braucht, und warum diese Permissions notwendig sind.
Übersicht: Drei App Registrations¶
┌─────────────────────────────────────────────────────────────────────┐
│ TCM365 Permission Architecture │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────────────┐ │
│ │ Read App │ │ Write App │ │ UTCM Service Principal │ │
│ │ (Pflicht) │ │ (Optional) │ │ (Pflicht für │ │
│ │ │ │ │ │ Teams & Exchange) │ │
│ ├──────────────┤ ├──────────────┤ ├─────────────────────────┤ │
│ │ Snapshots │ │ Rollback │ │ Teams Capture │ │
│ │ Drift │ │ Config Write │ │ Exchange Capture │ │
│ │ Baselines │ │ Changes │ │ UTCM Monitors │ │
│ │ Reports │ │ Apply │ │ Snapshot Jobs │ │
│ │ CA What-If │ │ │ │ │ │
│ │ Compliance │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └─────────────────────────┘ │
│ │
│ Alle Permissions: Application-Type (kein User-Kontext) │
└─────────────────────────────────────────────────────────────────────┘
Warum separate App Registrations?
Die Trennung in Read und Write App folgt dem Least Privilege Principle:
- Die Read App hat nur Leserechte — sie kann keine Konfigurationen verändern
- Die Write App wird nur für Rollback/Apply-Operationen benötigt und ist optional
- Der UTCM Service Principal ist ein von Microsoft bereitgestellter SP, der für die UTCM Snapshot Job API benötigt wird
Permission Categories¶
TCM365 gruppiert die ~41 Read App Permissions in 8 logische Kategorien. Kunden können Kategorien, die sie nicht benötigen, gezielt deaktivieren — das reduziert den Consent-Umfang und blendet entsprechende Bereiche im Snapshot Viewer aus.
Verfügbare Kategorien¶
| Kategorie ID | Anzeigename | Permissions | Workloads | Pflicht |
|---|---|---|---|---|
entra_core |
Entra ID (Core Identity) | 16 | entra | Ja (immer aktiv) |
intune |
Microsoft Intune | 5 | intune | Nein |
defender |
Microsoft Defender | 7 | defender | Nein |
sharepoint |
SharePoint Online | 2 | sharepoint | Nein |
purview |
Microsoft Purview | 3 | purview | Nein |
cloud_pc |
Windows 365 (Cloud PC) | 1 | cloud_pc | Nein |
m365_platform |
M365 Platform | 5 | m365_platform | Nein |
utcm |
UTCM (Teams & Exchange) | 2 | teams, exchange, security_compliance | Nein |
entra_core kann nicht deaktiviert werden
Die Kategorie entra_core ist immer aktiv, da Organization.Read.All für den Verbindungstest zwingend erforderlich ist. Alle anderen Kategorien können optional deaktiviert werden.
Kategorie-Verwaltung im UI¶
Die Berechtigungskategorien können pro M365-Tenant im Tenant Detail unter dem Tab Permissions verwaltet werden:
- Öffne den Tenant in der TCM365-Oberfläche
- Navigiere zum Tab Permissions oder Permission Categories
- Deaktiviere nicht benötigte Kategorien (z.B. "Windows 365" wenn kein Cloud PC genutzt wird)
- Das System synchronisiert automatisch die
enabled_workloadsmit den aktivierten Kategorien
Surplus-Warnung: Wenn der Read App mehr Permissions erteilt wurden als durch die aktivierten Kategorien erforderlich sind, zeigt die Setup-Status-Seite eine Warnung mit den überschüssigen Permissions.
Minimale Permissions nach Kategorie¶
entra_core (immer aktiv — 16 Permissions):
Directory.Read.All, Policy.Read.All, Policy.Read.PermissionGrant,
Application.Read.All, Organization.Read.All, RoleManagement.Read.Directory,
RoleAssignmentSchedule.Read.Directory, RoleEligibilitySchedule.Read.Directory,
RoleManagementPolicy.Read.Directory, AccessReview.Read.All,
LifecycleWorkflows.Read.All, AdministrativeUnit.Read.All,
EntitlementManagement.Read.All, IdentityRiskyUser.Read.All,
IdentityRiskEvent.Read.All, IdentityRiskyServicePrincipal.Read.All
intune (5 Permissions):
DeviceManagementConfiguration.Read.All, DeviceManagementApps.Read.All,
DeviceManagementManagedDevices.Read.All, DeviceManagementServiceConfig.Read.All,
DeviceManagementRBAC.Read.All
defender (7 Permissions):
SecurityEvents.Read.All, SecurityAlert.Read.All, SecurityIncident.Read.All,
AttackSimulation.Read.All, ThreatAssessment.Read.All,
SecurityIdentitiesHealth.Read.All, SecurityIdentitiesSensors.Read.All
sharepoint (2 Permissions):
SharePointTenantSettings.Read.All, Sites.Read.All
purview (3 Permissions):
InformationProtectionPolicy.Read.All, RecordsManagement.Read.All,
eDiscovery.Read.All
cloud_pc (1 Permission):
CloudPC.Read.All
m365_platform (5 Permissions):
Domain.Read.All, ServiceHealth.Read.All, ServiceMessage.Read.All,
Teamwork.Read.All, AppCatalog.Read.All
utcm (2 Permissions):
ConfigurationMonitoring.Read.All, ConfigurationMonitoring.ReadWrite.All
1. Read App Registration (Pflicht)¶
Die Read App ist die primäre App Registration und wird für alle Lese-Operationen benötigt: Snapshots erstellen, Drift erkennen, Baselines evaluieren, Reports generieren.
Entra ID Permissions¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
Directory.Read.All |
Application | Lesen von Benutzern, Gruppen, Gruppensettings, Verzeichniseinstellungen | Snapshots (Entra), Compliance, Reports |
Policy.Read.All |
Application | Lesen aller Richtlinien: Conditional Access, Token Lifetime, Home Realm Discovery, Claims Mapping, Activity-Based Timeout, Authorization | Snapshots, CA What-If Simulation, Baselines |
Policy.Read.PermissionGrant |
Application | Lesen von Permission-Grant-Richtlinien (wer darf App-Berechtigungen erteilen) | Snapshots (Entra Permission Grants) |
Application.Read.All |
Application | Lesen von App Registrations und Enterprise Applications (Service Principals) | Snapshots (App Registrations, Service Principals), Mäster Baseline Checks |
Organization.Read.All |
Application | Lesen von Tenant-Einstellungen, Domains, lizenzierten SKUs, Service Plans | Snapshots, Copilot Readiness (Lizenzen), M365 Platform |
RoleManagement.Read.Directory |
Application | Lesen von Entra Directory Roles und Role Assignments | Snapshots (Role Assignments), Privileged Role Hygiene Baseline |
RoleAssignmentSchedule.Read.Directory |
Application | Lesen von aktiven PIM Role Assignment Schedules | Snapshots (PIM aktive Zuweisungen) |
RoleEligibilitySchedule.Read.Directory |
Application | Lesen von PIM Eligible Role Assignments | Snapshots (PIM berechtigte Zuweisungen) |
RoleManagementPolicy.Read.Directory |
Application | Lesen von PIM Role Management Policies (Activation Rules, Assignment Rules) | Snapshots (PIM Policies) |
AccessReview.Read.All |
Application | Lesen von Access Review Definitionen | Snapshots (Access Reviews) |
LifecycleWorkflows.Read.All |
Application | Lesen von Joiner/Mover/Leaver Lifecycle Workflows | Snapshots (Lifecycle Workflows) |
AdministrativeUnit.Read.All |
Application | Lesen von Administrative Units für delegierte Admin-Scopes | Snapshots (Admin Units) |
EntitlementManagement.Read.All |
Application | Lesen von Access Packages, Catalogs, Connected Organizations | Snapshots (Entitlement Management) |
IdentityRiskyUser.Read.All |
Application | Lesen von Benutzern, die von Identity Protection als risikoreich markiert wurden | Snapshots (Identity Protection), Security Assessment |
IdentityRiskEvent.Read.All |
Application | Lesen von Risk Detection Events (Sign-In und User Risks) | Snapshots (Risk Detections), Security Assessment |
IdentityRiskyServicePrincipal.Read.All |
Application | Lesen von Service Principals, die als risikoreich markiert sind | Snapshots (Risky Service Principals) |
Warum so viele Entra-Permissions?
Entra ID ist der umfangreichste Workload mit 29 Resource Types. Jede Permission deckt eine andere Gruppe von Konfigurationsobjekten ab. Die Permissions sind alle .Read.All — es werden keine Schreibrechte vergeben.
Intune (Device Management) Permissions¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
DeviceManagementConfiguration.Read.All |
Application | Lesen von Device Compliance Policies, Configuration Profiles, Endpoint Security Policies, Enrollment Settings | Snapshots (Intune), Compliance Evaluation |
DeviceManagementApps.Read.All |
Application | Lesen von Mobile App Management, App Protection Policies, Managed App Policies | Snapshots (Intune App Protection) |
DeviceManagementManagedDevices.Read.All |
Application | Lesen von verwalteten Geräten und deren Status | Snapshots (Managed Devices) |
DeviceManagementServiceConfig.Read.All |
Application | Lesen von Device Service Configuration, Conditional Access Settings, Intune Account Settings | Snapshots (Intune Service Config) |
DeviceManagementRBAC.Read.All |
Application | Lesen von Intune RBAC-Informationen (Rollen und Zuweisungen) | Snapshots (Intune RBAC) |
Intune Permissions
Intune nutzt ein eigenes Permission-Präfixsystem (DeviceManagement*). Die 5 Permissions decken alle 22 Intune Resource Types ab, von Compliance Policies über Configuration Profiles bis hin zu Endpoint Security.
Microsoft Defender Permissions¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
SecurityEvents.Read.All |
Application | Lesen von Secure Scores und Security Alerts | Snapshots (Secure Scores), Security Assessment Reports |
SecurityAlert.Read.All |
Application | Lesen von Security Alerts aus Microsoft Defender XDR | Snapshots (Security Alerts), Copilot Readiness (Defender Checks) |
SecurityIncident.Read.All |
Application | Lesen von Security Incidents | Snapshots (Security Incidents) |
AttackSimulation.Read.All |
Application | Lesen von Attack Simulation Campaigns und Automations | Snapshots (Attack Simulation) |
ThreatAssessment.Read.All |
Application | Lesen von Threat Assessment Daten | Snapshots (Threat Assessment) |
SecurityIdentitiesHealth.Read.All |
Application | Lesen von Defender for Identity Health-Daten | Snapshots (Defender for Identity), Copilot Readiness |
SecurityIdentitiesSensors.Read.All |
Application | Lesen von Defender for Identity Sensor-Konfigurationen | Snapshots (Identity Sensors) |
SharePoint Online Permissions¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
SharePointTenantSettings.Read.All |
Application | Lesen von SharePoint Tenant Settings (Sharing, Sync, Site Creation, Storage Limits) | Snapshots (SharePoint), SCUBA SharePoint Baseline |
Sites.Read.All |
Application | Lesen von SharePoint Sites Metadata | Snapshots (SharePoint Sites) |
Microsoft Purview Permissions¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
InformationProtectionPolicy.Read.All |
Application | Lesen von Sensitivity Labels und Label Policies | Snapshots (Purview Labels), Copilot Readiness (Purview Checks) |
RecordsManagement.Read.All |
Application | Lesen von Retention Labels und Retention Event Types | Snapshots (Records Management) |
eDiscovery.Read.All |
Application | Lesen von eDiscovery Cases | Snapshots (eDiscovery) |
Windows 365 (Cloud PC) Permissions¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
CloudPC.Read.All |
Application | Lesen von Cloud PC Provisioning Policies, Device Images, User Settings | Snapshots (Cloud PC), 7 Resource Types |
M365 Platform Permissions¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
Domain.Read.All |
Application | Lesen von verifizierten und unverifizierten Domains | Snapshots (Domains), Email Security Checks |
ServiceHealth.Read.All |
Application | Lesen von Service Health Übersichten | Snapshots (Service Health) |
ServiceMessage.Read.All |
Application | Lesen von Service Announcements und Message Center Posts | Snapshots (Service Messages) |
Teamwork.Read.All |
Application | Lesen von Teams-spezifischen Platform Settings | Snapshots (Teams Platform) |
AppCatalog.Read.All |
Application | Lesen des Teams App Catalogs | Snapshots (Teams Apps) |
UTCM-spezifische Permissions (auf der Read App)¶
| Permission | Typ | Wofür benötigt | Betroffene Features |
|---|---|---|---|
ConfigurationMonitoring.Read.All |
Application | Lesen von UTCM Configuration Monitors und Snapshot Job Ergebnissen | Drift Detection, Snapshot Capture (Teams/Exchange) |
ConfigurationMonitoring.ReadWrite.All |
Application | Erstellen und Verwalten von UTCM Monitors und Snapshot Jobs | Drift Monitor Erstellung, Snapshot Job Trigger |
ConfigurationMonitoring Permissions
Diese Permissions gehören zur UTCM API (Unified Tenant Configuration Management) und sind nicht Teil der Standard-Graph-API. Sie werden über die gleiche App Registration vergeben, aber der Endpunkt ist https://graph.microsoft.com/beta/tenantRelationships/managedTenants/....
Zusammenfassung Read App¶
| Workload | Anzahl Permissions | Anzahl Resource Types |
|---|---|---|
| Entra ID | 16 | 29 |
| Intune | 5 | 22 |
| Defender | 7 | 10+ |
| SharePoint | 2 | 3 |
| Purview | 3 | 5 |
| Cloud PC | 1 | 7 |
| M365 Platform | 5 | 6 |
| UTCM | 2 | - |
| Gesamt | 41 | 82+ |
2. Write App Registration (Optional)¶
Die Write App ist eine separate App Registration die nur benötigt wird, wenn Rollback- oder Apply-Operationen durchgeführt werden sollen. Sie ist vollständig optional — TCM365 funktioniert ohne Write App im Read-Only-Modus.
Least Privilege
Die Write App sollte nur in Tenants aktiviert werden, in denen aktive Konfigurationsänderungen (Rollback, Apply) gewünscht sind. Für reine Monitoring-Szenarien (Snapshot, Drift, Compliance) ist die Read App ausreichend.
Warum eine separate Write App?¶
- Audit Trail — Änderungen über die Write App sind klar vom Lese-Zugriff getrennt
- Minimale Rechte — Die Read App hat niemals Schreibzugriff, selbst bei Kompromittierung
- Approval Workflow — Die Write App kann an einen Change-Management-Prozess gebunden werden
- Separate Credentials — Write App Credentials können separat rotiert und verwaltet werden
- Granulare Kontrolle — Write App kann pro Tenant aktiviert/deaktiviert werden
Entra ID Write Permissions¶
| Permission | Typ | Wofür benötigt | Rollback-Szenario |
|---|---|---|---|
Policy.ReadWrite.ConditionalAccess |
Application | Erstellen, Ändern, Löschen von Conditional Access Policies | CA Policy auf vorherigen Zustand zurücksetzen |
Policy.ReadWrite.AuthenticationMethod |
Application | Ändern von Authentication Method Policies (MFA, FIDO2, Passwordless) | Auth Method Konfiguration wiederherstellen |
Policy.ReadWrite.Authorization |
Application | Ändern von Authorization Policies (Guest Invite, Self-Service Sign-Up) | Authorization Settings zurücksetzen |
Directory.ReadWrite.All |
Application | Ändern von Directory Settings, Group Settings | Directory/Group Settings wiederherstellen |
RoleManagement.ReadWrite.Directory |
Application | Ändern von Entra Role Assignments und Definitions | Role Assignments wiederherstellen |
Application.ReadWrite.All |
Application | Ändern von App Registrations und Enterprise Applications | App Registration Settings zurücksetzen |
Organization.ReadWrite.All |
Application | Ändern von Tenant-Level Settings | Tenant Settings wiederherstellen |
Intune Write Permissions¶
| Permission | Typ | Wofür benötigt | Rollback-Szenario |
|---|---|---|---|
DeviceManagementConfiguration.ReadWrite.All |
Application | Ändern von Compliance Policies, Configuration Profiles, Endpoint Security | Intune Policies auf Snapshot-Stand zurücksetzen |
DeviceManagementApps.ReadWrite.All |
Application | Ändern von App Protection Policies, App Configurations | App Protection zurücksetzen |
DeviceManagementServiceConfig.ReadWrite.All |
Application | Ändern von Device Service Konfigurationen | Service Config wiederherstellen |
Defender Write Permissions¶
| Permission | Typ | Wofür benötigt | Rollback-Szenario |
|---|---|---|---|
SecurityEvents.ReadWrite.All |
Application | Ändern von Security Alert Status | Alert Status zurücksetzen |
SharePoint Write Permissions¶
| Permission | Typ | Wofür benötigt | Rollback-Szenario |
|---|---|---|---|
SharePointTenantSettings.ReadWrite.All |
Application | Ändern von SharePoint Tenant Settings (Sharing, Sync, Creation) | SharePoint Settings wiederherstellen |
Zusammenfassung Write App¶
| Workload | Anzahl Write Permissions | Rollback-Unterstützung |
|---|---|---|
| Entra ID | 7 | Vollständig (CA, Auth Methods, Directory, Roles, Apps, Org) |
| Intune | 3 | Vollständig (Compliance, Configuration, App Protection) |
| Defender | 1 | Teilweise (Alert Status) |
| SharePoint | 1 | Teilweise (Tenant Settings) |
| Gesamt | 12 | 52 Resource Types |
Teams & Exchange Rollback
Teams und Exchange Rollback läuft nicht über Graph API Write Permissions, sondern über die UTCM API und erfordert zusätzliche Admin-Rollen:
- Teams Admin oder Global Admin Entra Directory Role
- Exchange Administrator Entra Directory Role
- Application Access Policy für Exchange
3. UTCM Service Principal (Pflicht für Teams & Exchange)¶
Der UTCM Service Principal ist ein von Microsoft bereitgestellter Service Principal, der für die UTCM Snapshot Job API benötigt wird. Er muss im Ziel-Tenant installiert werden.
Service Principal Details¶
| Eigenschaft | Wert |
|---|---|
| App ID | 03b07b79-c5bc-4b5e-9bfa-13acf4a99998 |
| Name | Microsoft Tenant Configuration Platform |
| Typ | Well-Known Microsoft Service Principal |
| Zweck | UTCM Snapshot Job API und Configuration Monitor API |
Warum wird der UTCM SP benötigt?¶
Teams und Exchange Konfigurationen können nicht direkt über die Graph API gelesen werden wie bei Entra ID oder Intune. Stattdessen verwendet Microsoft die UTCM Snapshot Job API:
Entra/Intune/Defender → Direkte Graph API GETs → Read App
Teams/Exchange → UTCM Snapshot Job API → UTCM Service Principal
Der UTCM SP führt die Snapshot-Erfassung im Tenant durch und stellt die Ergebnisse über die Graph API bereit.
UTCM SP Setup-Schritte¶
Schritt 1: UTCM SP im Tenant installieren¶
# PowerShell: UTCM Service Principal im Tenant registrieren
Connect-MgGraph -Scopes "Application.ReadWrite.All"
New-MgServicePrincipal -AppId "03b07b79-c5bc-4b5e-9bfa-13acf4a99998"
Schritt 2: Entra Directory Role zuweisen¶
Der UTCM SP benötigt die Global Reader Rolle:
| Rolle | Template ID | Zweck |
|---|---|---|
| Global Reader | f2ef992c-3afb-46b9-b7cf-a126ee74c451 |
Lesezugriff auf alle Tenant-Konfigurationen für Snapshot-Erfassung |
# Global Reader Role dem UTCM SP zuweisen
$utcmSP = Get-MgServicePrincipal -Filter "appId eq '03b07b79-c5bc-4b5e-9bfa-13acf4a99998'"
$globalReaderRole = Get-MgDirectoryRole -Filter "roleTemplateId eq 'f2ef992c-3afb-46b9-b7cf-a126ee74c451'"
New-MgDirectoryRoleMember -DirectoryRoleId $globalReaderRole.Id -DirectoryObjectId $utcmSP.Id
Schritt 3: Permissions auf dem Microsoft Graph SP vergeben¶
| Permission | Ziel-SP | Zweck |
|---|---|---|
Organization.Read.All |
Microsoft Graph (00000003-0000-0000-c000-000000000000) |
Tenant-Info für UTCM Kontext |
Schritt 4: Exchange-spezifische Konfiguration¶
Für Exchange-Workload-Capture sind zusätzliche Schritte erforderlich:
| Permission | Ziel-SP | Zweck |
|---|---|---|
Exchange.ManageAsApp |
Exchange Online (00000002-0000-0ff1-ce00-000000000000) |
Exchange-Konfigurationen über UTCM lesen |
# Application Access Policy für Exchange erstellen (Exchange Online PowerShell)
Connect-ExchangeOnline
New-ApplicationAccessPolicy `
-AppId "03b07b79-c5bc-4b5e-9bfa-13acf4a99998" `
-PolicyScopeGroupId "your-security-group@domain.com" `
-AccessRight RestrictAccess `
-Description "UTCM Exchange Access"
Application Access Policy
Die Application Access Policy für Exchange muss manuell vom Tenant-Admin konfiguriert werden. Dies kann nicht automatisiert werden und ist ein separater Schritt im Setup-Wizard.
UTCM SP Workload-Abdeckung¶
| Workload | Resource Types | Capture-Methode |
|---|---|---|
| Teams | 29 Resource Types (Teams Settings, Channels, Policies, Templates, etc.) | UTCM Snapshot Job API |
| Exchange | 21 Resource Types (Transport Rules, Connectors, Policies, etc.) | UTCM Snapshot Job API |
| Security & Compliance | 24 Resource Types (DLP, Retention, Audit, eDiscovery, etc.) | UTCM Snapshot Job API |
| Gesamt | 74 Resource Types |
Capture-Strategien im Detail¶
TCM365 verwendet zwei unterschiedliche Strategien für die Konfigurationserfassung:
Strategie 1: Direkte Graph API (Read App)¶
TCM365 Backend → Microsoft Graph API → Konfigurationsdaten
│ │
│ GET /v1.0/... │
│ GET /beta/... │
└────────────────────┘
Verwendet für: Entra ID, Intune, Defender, SharePoint, Purview, Cloud PC, M365 Platform
Vorteile: - Sofortige Ergebnisse (synchron) - Granulare Kontrolle über abgefragte Ressourcen - Keine Abhängigkeit vom UTCM Service Principal
Benötigt: Nur die Read App Registration mit den entsprechenden Permissions
Strategie 2: UTCM Snapshot Job API (UTCM SP)¶
TCM365 Backend → UTCM API → Snapshot Job erstellen → Job läuft
│ │
│ POST /beta/.../snapshotJobs │
│ │
│ GET /beta/.../snapshotJobs/{id} ← Status polling ←─┘
│ │
│ GET /beta/.../snapshotJobs/{id}/content ← Ergebnisse abrufen
└─────────────────────────────────────────┘
Verwendet für: Teams, Exchange, Security & Compliance
Vorteile: - Zugriff auf Workloads die keine direkte Graph API haben - Konsistenter Snapshot-Zeitpunkt über alle Ressourcen - Microsoft-seitige Aggregation der Daten
Benötigt: UTCM Service Principal + Global Reader Rolle + (für Exchange) Application Access Policy
Permission-Zuordnung nach Feature¶
Welches Feature braucht welche Permissions?¶
| Feature | Read App Permissions | Write App | UTCM SP |
|---|---|---|---|
| Snapshots erstellen | Alle Workload-Read-Permissions | - | Ja (für Teams/Exchange) |
| Drift Detection | Alle Workload-Read-Permissions | - | ConfigurationMonitoring.ReadWrite.All |
| Baseline Evaluation | Alle Workload-Read-Permissions | - | - |
| CA What-If Simulation | Policy.Read.All | - | - |
| Compliance Evaluation | Alle Workload-Read-Permissions | - | - |
| Rollback/Apply | Alle Read-Permissions | Ja (alle Write-Permissions) | - |
| Security Assessment | SecurityEvents.Read.All, alle Entra-Reads | - | - |
| Copilot Readiness | Organization.Read.All, SecurityAlert.Read.All, InformationProtectionPolicy.Read.All | - | - |
| Email Security | Domain.Read.All | - | - |
| Audit Attribution | AuditLog.Read.All* |
- | - |
| Reports | Alle Workload-Read-Permissions | - | - |
AuditLog.Read.All wird für Change Attribution benötigt — diese Permission ist in der v2.2-Codebasis als Requirement dokumentiert, aber noch nicht im Permission-Verification-Flow integriert.
Minimale Permission-Sets nach Use Case¶
Use Case 1: Nur Entra ID Monitoring¶
Read App: Directory.Read.All, Policy.Read.All, Policy.Read.PermissionGrant,
Application.Read.All, Organization.Read.All, RoleManagement.Read.Directory,
RoleAssignmentSchedule.Read.Directory, RoleEligibilitySchedule.Read.Directory,
RoleManagementPolicy.Read.Directory, AccessReview.Read.All,
LifecycleWorkflows.Read.All, AdministrativeUnit.Read.All,
EntitlementManagement.Read.All, IdentityRiskyUser.Read.All,
IdentityRiskEvent.Read.All, IdentityRiskyServicePrincipal.Read.All
Write App: Nicht benötigt
UTCM SP: Nicht benötigt
Use Case 2: Vollständiges M365 Monitoring (ohne Rollback)¶
Read App: Alle 41 Permissions (siehe Tabelle oben)
Write App: Nicht benötigt
UTCM SP: Ja (für Teams/Exchange)
Use Case 3: Vollständiges M365 mit Rollback¶
Setup-Wizard Ablauf¶
Der M365 Setup Wizard in TCM365 führt durch die Konfiguration in folgenden Schritten:
Schritt 1: Read App konfigurieren¶
- Tenant ID, Client ID und Client Secret eingeben
- TCM365 prüft die Verbindung (
Organization.Read.All) - Permission-Audit: Welche Permissions sind bereits vergeben?
- Fehlende Permissions werden angezeigt
Schritt 2: UTCM SP prüfen¶
- Prüfung ob UTCM SP (
03b07b79-c5bc-4b5e-9bfa-13acf4a99998) im Tenant existiert - Prüfung der Global Reader Rolle
- Prüfung der Application Access Policy (Exchange)
- Anleitung für manuelle Schritte falls nötig
Schritt 3: Write App konfigurieren (Optional)¶
- Separate Client ID und Client Secret für Write App
- Write-Permission-Audit
- Rollback-Fähigkeiten werden freigeschaltet
Schritt 4: Workloads aktivieren¶
- Auswahl der gewünschten Workloads (Entra, Intune, Teams, Exchange, etc.)
- Permission-Prüfung pro aktiviertem Workload
- Test-Snapshot für Validierung
Credential-Speicherung¶
TCM365 speichert die Credentials der App Registrations verschlüsselt in der Datenbank:
| Feld | Entity | Verschlüsselung | Inhalt |
|---|---|---|---|
client_secret (Read App) |
M365VendorTenant |
AES-256 (EncryptionService) | Client Secret der Read App |
write_credentials |
M365VendorTenant |
AES-256 (EncryptionService) | JSON mit Client ID + Secret der Write App |
granted_permissions |
M365VendorTenant |
Klartext (JSONB) | Tracking welche Permissions pro App vergeben sind |
Per-Tenant Encryption
Im Produktionsbetrieb wird die Azure Key Vault SecretBackend verwendet. Jeder Tenant hat einen eigenen Encryption Key. Im Entwicklungsmodus wird LocalAES mit dem APP_SECRET_KEY verwendet.
Häufige Fragen¶
Kann ich eine einzige App Registration für Read und Write verwenden?¶
Technisch ja, aber es wird nicht empfohlen. Die Trennung bietet: - Besseren Schutz bei Kompromittierung (Read App kann nichts ändern) - Klarere Audit Trails - Unabhängige Credential-Rotation
Brauche ich alle Permissions sofort?¶
Nein. TCM365 arbeitet workload-basiert — Sie müssen nur Permissions für die Workloads vergeben, die Sie tatsächlich überwachen wollen. Wenn Sie z.B. nur Entra ID monitoren, brauchen Sie weder Intune- noch Teams-Permissions.
Was passiert wenn eine Permission fehlt?¶
TCM365 wird den betroffenen Workload beim Snapshot übersprungen und eine Warnung anzeigen. Der Rest des Snapshots wird normal erfasst. Der Setup-Wizard zeigt fehlende Permissions an.
Warum braucht die Read App ConfigurationMonitoring.ReadWrite.All?¶
Für das Erstellen von UTCM Configuration Monitors (Drift Detection) muss TCM365 Monitors anlegen können — das erfordert .ReadWrite.All. Für reines Snapshot-Lesen würde .Read.All genügen.
Kann ich den UTCM SP weglassen?¶
Ja, aber dann können Teams und Exchange Konfigurationen nicht erfasst werden. Entra ID, Intune, Defender, SharePoint, Purview und Cloud PC funktionieren weiterhin über die direkte Graph API.
Welche Permissions brauche ich für Copilot Readiness?¶
Minimal:
- Organization.Read.All (Lizenzen prüfen)
- SecurityAlert.Read.All (Defender XDR Status)
- InformationProtectionPolicy.Read.All (Purview Labels)
- Entra-Standard-Permissions (für Identity-Checks)
Vollständige Permission-Liste (Quick Reference)¶
Read App — 41 Application Permissions¶
# Entra ID (16)
Directory.Read.All
Policy.Read.All
Policy.Read.PermissionGrant
Application.Read.All
Organization.Read.All
RoleManagement.Read.Directory
RoleAssignmentSchedule.Read.Directory
RoleEligibilitySchedule.Read.Directory
RoleManagementPolicy.Read.Directory
AccessReview.Read.All
LifecycleWorkflows.Read.All
AdministrativeUnit.Read.All
EntitlementManagement.Read.All
IdentityRiskyUser.Read.All
IdentityRiskEvent.Read.All
IdentityRiskyServicePrincipal.Read.All
# Intune (5)
DeviceManagementConfiguration.Read.All
DeviceManagementApps.Read.All
DeviceManagementManagedDevices.Read.All
DeviceManagementServiceConfig.Read.All
DeviceManagementRBAC.Read.All
# Defender (7)
SecurityEvents.Read.All
SecurityAlert.Read.All
SecurityIncident.Read.All
AttackSimulation.Read.All
ThreatAssessment.Read.All
SecurityIdentitiesHealth.Read.All
SecurityIdentitiesSensors.Read.All
# SharePoint (2)
SharePointTenantSettings.Read.All
Sites.Read.All
# Purview (3)
InformationProtectionPolicy.Read.All
RecordsManagement.Read.All
eDiscovery.Read.All
# Cloud PC (1)
CloudPC.Read.All
# M365 Platform (5)
Domain.Read.All
ServiceHealth.Read.All
ServiceMessage.Read.All
Teamwork.Read.All
AppCatalog.Read.All
# UTCM (2)
ConfigurationMonitoring.Read.All
ConfigurationMonitoring.ReadWrite.All
Write App — 12 Application Permissions¶
# Entra ID (7)
Policy.ReadWrite.ConditionalAccess
Policy.ReadWrite.AuthenticationMethod
Policy.ReadWrite.Authorization
Directory.ReadWrite.All
RoleManagement.ReadWrite.Directory
Application.ReadWrite.All
Organization.ReadWrite.All
# Intune (3)
DeviceManagementConfiguration.ReadWrite.All
DeviceManagementApps.ReadWrite.All
DeviceManagementServiceConfig.ReadWrite.All
# Defender (1)
SecurityEvents.ReadWrite.All
# SharePoint (1)
SharePointTenantSettings.ReadWrite.All
UTCM Service Principal — Setup Requirements¶
# App ID: 03b07b79-c5bc-4b5e-9bfa-13acf4a99998
# Entra Directory Role
Global Reader (Template ID: f2ef992c-3afb-46b9-b7cf-a126ee74c451)
# Microsoft Graph SP Permission
Organization.Read.All (on 00000003-0000-0000-c000-000000000000)
# Exchange Online SP Permission (nur für Exchange Workload)
Exchange.ManageAsApp (on 00000002-0000-0ff1-ce00-000000000000)
# Exchange Application Access Policy (manuell)
New-ApplicationAccessPolicy -AppId "03b07b79-c5bc-4b5e-9bfa-13acf4a99998" ...