Governance Autopilot
Governance Autopilot liest die Konfigurations- und Aktivitätssignale eines Microsoft-365-Tenants über Microsoft Graph mit schreibgeschützten, admin-konsentierten Anwendungsberechtigungen, bewertet sie anhand eines Katalogs von Governance-Richtlinien und speichert die abgeleiteten Ergebnisse in von Solutions2Share betriebenen Azure-Diensten — Tenant-Daten des Kunden werden zu keinem Zeitpunkt verändert.
Microsoft 365-Zertifizierung
Governance Autopilot ist ein neues Produkt von Solutions2Share und noch nicht Microsoft 365-zertifiziert. Solutions2Share beabsichtigt, die Microsoft 365 App-Zertifizierung im Rahmen der Produkt-Roadmap abzuschließen. Bis zur Erteilung der Zertifizierung wird die Anwendung nach dem Microsoft Security Development Lifecycle und den auf dieser Seite beschriebenen Praktiken entwickelt.
Datenverwaltungspraktiken
Alle Daten werden im Auftrag des Kunden-Tenants verarbeitet und pro Tenant isoliert (siehe Architektur- und Flussdiagramm). Governance Autopilot erfasst Daten ausschließlich lesend; es schreibt keine Daten in den Kunden-Tenant und verändert dort nichts. Die Daten werden in Microsoft-Azure-Rechenzentren gespeichert, die Solutions2Share in der Region Germany West Central (EU) betreibt; die Web-Frontends werden aus der Region West Europe (EU) ausgeliefert. Kundendaten verlassen die EU nicht.
Die Anwendung greift auf folgende Datentypen zu, verarbeitet und speichert sie:
Identitäts- und Verzeichnisdaten
Benutzerkonten, Gruppen und Gruppenmitgliedschaften, Verzeichnisrollen und Organisationseigenschaften. Speicherung & Aufbewahrung: Gespeichert in Azure SQL Database. Aktuelle Werte werden für die Dauer des Kundenabonnements vorgehalten; historische Versionen werden aufbewahrt, um Governance-Trends über die Zeit darzustellen (siehe Änderungshistorie unten). Alle Kundendaten werden für die Dauer des Abonnements aufbewahrt und mit Vertragsende gelöscht.
Microsoft Teams-Kollaborationsdaten
Microsoft Teams-Kanäle — Namen, Beschreibungen und Mitgliedschaften — zur Inventarisierung von Arbeitsbereichen und zur Erkennung von Arbeitsbereichen ohne Besitzer oder mit hohem Gastanteil. Nachrichteninhalte werden nicht gelesen. Speicherung & Aufbewahrung: Azure SQL Database; Aufbewahrung wie oben.
SharePoint- und Datei-Metadaten
SharePoint-Site-Inventar sowie Datei-/Site-Metadaten für die Storage-Hygiene-Analyse. Governance Autopilot extrahiert und speichert keine Dokumentinhalte. Speicherung & Aufbewahrung: Azure SQL Database; Aufbewahrung wie oben.
Audit-Protokolle
Verzeichnis- und Anmelde-Audit-Protokolle zur Erkennung veralteter Anmeldungen und von Lücken in der Audit-Konfiguration. Speicherung & Aufbewahrung: Roh-Crawl-Daten werden zunächst pro Tenant in einen Azure Data Lake geschrieben und anschließend in Azure SQL Database zusammengeführt; Aufbewahrung wie oben.
Tenant-Konfiguration und Richtlinien
Conditional-Access- und Autorisierungsrichtlinien, Verzeichnisrollen-Zuweisungen (RBAC), Access-Review-Definitionen und -Entscheidungen sowie Anwendungs-/Service-Principal-Registrierungen — gelesen zur Bewertung der Governance-Posture. Speicherung & Aufbewahrung: Azure SQL Database; Aufbewahrung wie oben.
Governance-Analyseergebnisse
Abgeleitete Scores, Richtlinienbefunde, Empfehlungen und Analyse-Snapshots — von Governance Autopilot berechnet, nicht aus dem Tenant gelesen. Speicherung & Aufbewahrung: Azure SQL Database für die Laufzeit des Abonnements. Teilbare Berichtslinks sind optional und zeitlich begrenzt (Standard 14 Tage, maximal 90 Tage).
Identität des angemeldeten Administrators
Anzeigename, E-Mail/UPN, Objekt-ID und Tenant-ID des Administrators, der sich anmeldet — zur Identitätsfeststellung und Zugriffskontrolle. Speicherung & Aufbewahrung: Azure SQL Database für die Laufzeit des Abonnements.
Änderungshistorie. Konfigurationsdaten werden versioniert (Slowly-Changing-Dimension-Historie), damit das Produkt zeigen kann, wie sich die Governance-Posture eines Tenants über die Zeit verändert. Unveränderliche Audit-Ereignisse werden angehängt, nicht überschrieben.
Microsoft Graph
Governance Autopilot verwendet die unten aufgeführten Microsoft-Graph-Berechtigungen auf einer einzigen mandantenfähigen Microsoft-Entra-App-Registrierung. Die Tenant-Datenerfassung nutzt schreibgeschützte Anwendungsberechtigungen; ein Tenant-Administrator erteilt die Zustimmung einmalig, danach läuft die Hintergrundanalyse ohne anwesenden Benutzer. Die einzige delegierte Berechtigung ist User.Read; sie dient ausschließlich der Anmeldung des Administrators — der Browser erhält zu keinem Zeitpunkt ein Microsoft-Graph-Token für Tenant-Daten. Die Scope-Namen entsprechen wörtlich der App-Registrierung und werden als Code dargestellt.
| Scope | Beschreibung | Begründung | Admin-Zustimmung erforderlich | Typ |
|---|---|---|---|---|
AccessReview.Read.All | Alle Access Reviews lesen. | Bewertung der Abdeckung und Ergebnisse von Access Reviews. | Ja | Anwendung |
Application.Read.All | Alle Anwendungen lesen. | Erkennung überprivilegierter App-Registrierungen und Service Principals. | Ja | Anwendung |
AuditLog.Read.All | Alle Audit-Protokolldaten lesen. | Erkennung veralteter Anmeldungen und von Lücken in der Audit-Konfiguration. | Ja | Anwendung |
Channel.ReadBasic.All | Namen und Beschreibungen aller Kanäle lesen. | Inventarisierung der Microsoft Teams-Kanäle für die Workspace-Governance. | Ja | Anwendung |
ChannelMember.Read.All | Mitglieder aller Kanäle lesen. | Erkennung von Gast- und Mitgliedschafts-Wildwuchs in Teams-Kanälen. | Ja | Anwendung |
Directory.Read.All | Verzeichnisdaten lesen. | Lesen von Organisation, Rollen und Verzeichnisobjekten als Grundlage der Identity-Governance-Prüfungen. | Ja | Anwendung |
Files.Read.All | Dateien in allen Websitesammlungen lesen. | Analyse von Datei- und Site-Metadaten für die Storage-Hygiene-Governance. | Ja | Anwendung |
Group.Read.All | Alle Gruppen lesen. | Inventarisierung von Microsoft 365-Gruppen und Teams für Lifecycle-, Besitz- und Namensanalysen. | Ja | Anwendung |
Policy.Read.All | Richtlinien der Organisation lesen. | Bewertung der Conditional-Access-, Autorisierungs- und External-Sharing-Richtlinien. | Ja | Anwendung |
RoleManagement.Read.Directory | Alle RBAC-Einstellungen des Verzeichnisses lesen. | Erkennung dauerhaft privilegierter Zugriffe und von Konflikten bei der Funktionstrennung. | Ja | Anwendung |
Sites.Read.All | Elemente in allen Websitesammlungen lesen. | SharePoint-Site-Inventar sowie Storage-/Strukturanalyse. | Ja | Anwendung |
User.Read | Anmelden und Benutzerprofil lesen. | Anmeldung des Administrators und Feststellung seiner Identität in der App. | Nein | Delegiert |
User.Read.All | Vollständige Profile aller Benutzer lesen. | Inventarisierung der Benutzerkonten zur Erkennung veralteter, deaktivierter, nicht lizenzierter und Gast-Identitäten. | Ja | Anwendung |
Vollständige Beschreibungen aller Berechtigungen sind in der Microsoft Graph-Berechtigungsreferenz veröffentlicht.
SharePoint-/weitere Workload-Berechtigungen
In der aktuellen Version nicht zutreffend. Governance Autopilot liest SharePoint-Daten ausschließlich über Microsoft Graph (Sites.Read.All, Files.Read.All). Eine künftige Version kann erweiterte External-Sharing-Prüfungen ergänzen, die eine SharePoint-Tenant-Administrations-Leseberechtigung mit zertifikatsbasierter Application-Only-Authentifizierung erfordern; dies ist geplant und wird heute nicht verwendet.
Microsoft Teams-Apps: Sicherheit und Compliance
Nicht zutreffend. Governance Autopilot ist eine Webanwendung. Sie wird nicht als Microsoft Teams-App vertrieben und läuft nicht innerhalb von Microsoft Teams.
Architektur- und Flussdiagramm

Datenfluss: (1) Der Tenant-Administrator meldet sich an App Service Front (dem Web-Frontend) an, das App Service Back (die Governance-API) aufruft; (2) App Service Back validiert die Produktberechtigung gegen das Solutions2Share License Management Center und stellt eine Analyse in Service Bus ein; (3) die Function App liest den Microsoft-365-Tenant des Kunden über Microsoft Graph (schreibgeschützt, application-only) und schreibt Rohdaten in das Storage-Konto; (4) die Daten werden in Azure SQL zusammengeführt (Staging → Historie) und anhand der Governance-Richtlinien bewertet; (5) App Service Back liest die Ergebnisse für App Service Front zurück. Alle Compute-Komponenten senden Telemetrie an Application Insights und Log Analytics.
Governance Autopilot verwendet ein hybrides Authentifizierungsmodell auf einer einzigen mandantenfähigen Microsoft-Entra-App-Registrierung mit drei bewusst getrennten Abläufen:
- Anmeldung (delegiert). Der Administrator meldet sich mit seinem Microsoft-Geschäftskonto an. Die App stellt ausschließlich die Identität fest — bei der Anmeldung wird keine Microsoft-Graph-Berechtigung angefordert.
- Zustimmung (Anwendung). Der Administrator erteilt die schreibgeschützten Graph-Anwendungsberechtigungen einmalig. Die Zustimmung ist ein kontrollierter, manueller Schritt und erfolgt niemals automatisch.
- Analyse (application-only). Hintergrundprozesse authentifizieren sich gegenüber Microsoft Graph mit einem in Azure Key Vault hinterlegten Zertifikat (kein gemeinsames Client-Secret) und lesen Tenant-Daten. Der Browser erhält niemals ein Graph-Token.
Die Tenant-Isolation wird durch die in jedem Token enthaltene Tenant-ID erzwungen; Token und Daten können Tenant-Grenzen nicht überschreiten.
Ressourcen-Endpunkte
Domains, die aus dem Netzwerk bzw. Browser des Kunden erreichbar sein müssen.
| Name | Anmerkungen |
|---|---|
login.microsoftonline.com | Microsoft Entra ID — Administrator-Anmeldung und OAuth-Token-Ausstellung (Browser und Backend). |
fonts.googleapis.com | Google-Fonts-Stylesheet für die Web-UI (Browser). |
fonts.gstatic.com | Google-Fonts-Schriftdateien (Browser). |
governance-autopilot.solutions2share.com | Die Web-UI von Governance Autopilot und ihre API (Browser). |
Ausgehende Backend-Verbindungen (informativ)
Ausgehende Aufrufe des von Solutions2Share betriebenen Backends. Diese sind kundenseitig nicht konfigurierbar und werden aus Transparenzgründen aufgeführt.
| Name | Anmerkungen |
|---|---|
graph.microsoft.com | Microsoft Graph — schreibgeschützte Tenant-Datenerfassung (application-only). |
s2slicensing.azurewebsites.net | Solutions2Share License Management Center — Validierung der Produktberechtigung. |
*.database.windows.net | Azure SQL Database — Analysespeicher. |
*.vault.azure.net | Azure Key Vault — Abruf des Graph-Signaturzertifikats. |
*.blob.core.windows.net, *.dfs.core.windows.net | Azure Storage / Data Lake — Roh-Crawl-Daten. |
Abhängigkeiten
Von Governance Autopilot verwendete Drittanbieter-Bibliotheken. Die Versionen entsprechen dem aktuellen Release.
Server
| Name | Version | Url | Lizenz |
|---|---|---|---|
| Azure.Identity | 1.13.1 | licenses.nuget.org/MIT | MIT |
| Azure.Security.KeyVault.Certificates | 4.7.0 | licenses.nuget.org/MIT | MIT |
| Azure.Security.KeyVault.Secrets | 4.8.0 | licenses.nuget.org/MIT | MIT |
| Azure.Messaging.ServiceBus | 7.19.0 | licenses.nuget.org/MIT | MIT |
| Azure.Storage.Files.DataLake | 12.24.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.Graph | 5.95.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.Graph.Core | 3.2.4 | licenses.nuget.org/MIT | MIT |
| Microsoft.Identity.Web | 4.0.1 | licenses.nuget.org/MIT | MIT |
| Microsoft.Identity.Client | 4.78.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.Identity.Client.Extensions.Msal | 4.78.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.EntityFrameworkCore | 8.0.22 | licenses.nuget.org/MIT | MIT |
| Microsoft.EntityFrameworkCore.Relational | 8.0.22 | licenses.nuget.org/MIT | MIT |
| Microsoft.EntityFrameworkCore.SqlServer | 8.0.22 | licenses.nuget.org/MIT | MIT |
| Microsoft.EntityFrameworkCore.InMemory | 8.0.22 | licenses.nuget.org/MIT | MIT |
| Microsoft.EntityFrameworkCore.Design | 8.0.22 | licenses.nuget.org/MIT | MIT |
| Microsoft.EntityFrameworkCore.Tools | 8.0.22 | licenses.nuget.org/MIT | MIT |
| Microsoft.Extensions.Configuration.AzureAppConfiguration | 8.4.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.ApplicationInsights.WorkerService | 2.23.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.Azure.Functions.Worker | 2.51.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.Azure.Functions.Worker.ApplicationInsights | 2.50.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore | 2.1.0 | licenses.nuget.org/MIT | MIT |
| Microsoft.Azure.Functions.Worker.Sdk | 2.0.7 | licenses.nuget.org/MIT | MIT |
| AutoMapper | 16.1.1 | licenses.nuget.org/MIT | MIT |
| Newtonsoft.Json | 13.0.4 | licenses.nuget.org/MIT | MIT |
| QuestPDF | 2026.2.3 | licenses.nuget.org/MIT | MIT (Community) |
| Swashbuckle.AspNetCore | 6.6.2 | licenses.nuget.org/MIT | MIT |
| System.ComponentModel.Annotations | 5.0.0 | licenses.nuget.org/MIT | MIT |
Client-Pakete
| Name | Version | Url | Lizenz |
|---|---|---|---|
| @azure/msal-browser | 5.10.0 | npmjs.com/package/@azure/msal-browser | MIT |
| @azure/msal-react | 5.4.0 | npmjs.com/package/@azure/msal-react | MIT |
| @radix-ui/react-slot | 1.2.5 | npmjs.com/package/@radix-ui/react-slot | MIT |
| @react-pdf/renderer | 4.5.1 | npmjs.com/package/@react-pdf/renderer | MIT |
| @reduxjs/toolkit | 2.11.2 | npmjs.com/package/@reduxjs/toolkit | MIT |
| @tanstack/react-query | 5.100.6 | npmjs.com/package/@tanstack/react-query | MIT |
| axios | 1.16.0 | npmjs.com/package/axios | MIT |
| class-variance-authority | 0.7.1 | npmjs.com/package/class-variance-authority | Apache-2.0 |
| clsx | 2.1.1 | npmjs.com/package/clsx | MIT |
| framer-motion | 12.38.0 | npmjs.com/package/framer-motion | MIT |
| i18next | 26.0.10 | npmjs.com/package/i18next | MIT |
| lucide-react | 1.8.0 | npmjs.com/package/lucide-react | ISC |
| react | 19.2.4 | npmjs.com/package/react | MIT |
| react-dom | 19.2.4 | npmjs.com/package/react-dom | MIT |
| react-i18next | 17.0.7 | npmjs.com/package/react-i18next | MIT |
| react-redux | 9.2.0 | npmjs.com/package/react-redux | MIT |
| react-router-dom | 7.13.1 | npmjs.com/package/react-router-dom | MIT |
| tailwind-merge | 3.6.0 | npmjs.com/package/tailwind-merge | MIT |
Build- und Test-Tooling
Nur für Build und Test der App verwendet; wird nicht an den Browser ausgeliefert.
| Name | Version | Url | Lizenz |
|---|---|---|---|
| vite | 7.3.1 | npmjs.com/package/vite | MIT |
| @vitejs/plugin-react | 4.7.0 | npmjs.com/package/@vitejs/plugin-react | MIT |
| vitest | 4.1.5 | npmjs.com/package/vitest | MIT |
| @vitest/coverage-v8 | 4.1.5 | npmjs.com/package/@vitest/coverage-v8 | MIT |
| @playwright/test | 1.59.1 | npmjs.com/package/@playwright/test | Apache-2.0 |
| @testing-library/react | 16.3.2 | npmjs.com/package/@testing-library/react | MIT |
| @testing-library/jest-dom | 6.9.1 | npmjs.com/package/@testing-library/jest-dom | MIT |
| @testing-library/user-event | 14.6.1 | npmjs.com/package/@testing-library/user-event | MIT |
| jsdom | 29.1.1 | npmjs.com/package/jsdom | MIT |
| msw | 2.14.6 | npmjs.com/package/msw | MIT |
| tailwindcss | 4.2.1 | npmjs.com/package/tailwindcss | MIT |
| @tailwindcss/vite | 4.2.1 | npmjs.com/package/@tailwindcss/vite | MIT |
| oxlint | 1.69.0 | npmjs.com/package/oxlint | MIT |
| oxfmt | 0.54.0 | npmjs.com/package/oxfmt | MIT |
| size-limit | 11.2.0 | npmjs.com/package/size-limit | MIT |
| @size-limit/preset-app | 11.2.0 | npmjs.com/package/@size-limit/preset-app | MIT |
| @typescript/native-preview | 7.0.0-dev | npmjs.com/package/@typescript/native-preview | Apache-2.0 |
| @types/node | 24.12.0 | npmjs.com/package/@types/node | MIT |
| @types/react | 19.2.14 | npmjs.com/package/@types/react | MIT |
| @types/react-dom | 19.2.3 | npmjs.com/package/@types/react-dom | MIT |
Governance Autopilot verwendet keine Analyse- oder Werbe-Tracker von Drittanbietern. Zur Laufzeit werden Kundendaten ausschließlich an Microsoft-/Azure-Dienste und das Solutions2Share License Management Center übermittelt; Web-Schriftarten werden vom Google-Fonts-CDN geladen (fonts.googleapis.com, fonts.gstatic.com).
