Gruppen, DLP, Aufbewahrung & Bedrohungsschutz
In Teil 1 dieser Serie standen Identität und Zugriff im Mittelpunkt, in Teil 2 der Mail-Schutz, die Collaboration-Plattformen, die Geräte und die App-Berechtigungen, zusammen die Prüfpunkte 1 bis 58. Damit sind die Eingangstüren und die Datenkanäle abgedeckt. Was bleibt, ist die Klammer, die einen Tenant erst kontrollierbar macht: Datenklassifizierung, Aufbewahrung, erweiterter Bedrohungsschutz und eine lückenlose Protokollierung.
Teil 3 schließt den Audit mit den Prüfpunkten 59 bis 80 ab. Den Anfang machen die bestehenden Bausteine für Gruppen-Governance, Data Loss Prevention und das Unified Audit Log. Daran schließen zwölf zusätzliche Checks an, die in den ersten beiden Teilen noch fehlten: erweiterte Daten- und Compliance-Kontrollen wie Litigation Hold und Customer Lockbox, ein vertiefter E-Mail-Bedrohungsschutz mit Quarantäne- und Tenant-Allow-Block-Listen sowie Governance- und Lebenszyklus-Prüfungen von Access Reviews bis zu verwaisten Enterprise Apps.
Die Module und Connect-Hinweise sind in Teil 1 beschrieben, die Compliance-Checks laufen über Security & Compliance PowerShell per Connect-IPPSSession.
Gruppen, Daten und Compliance
59. Verwaiste Microsoft 365 Groups
Nach Projektabschluss verlassen Mitarbeiter das Unternehmen oder wechseln die Abteilung, die Gruppe bleibt bestehen und verliert ihre Besitzer. Datenpakete und externe Gastzugriffe bleiben dann unbeaufsichtigt. Gesucht sind alle Unified Groups ganz ohne Owner, die Du neu zuweist oder archivierst.
Connect-MgGraph -Scopes "Group.Read.All","User.Read.All" -NoWelcome
$groups = Get-MgGroup -Filter "groupTypes/any(c:c eq 'Unified')" -All
foreach ($g in $groups) {
$owners = Get-MgGroupOwner -GroupId $g.Id -All
if (@($owners).Count -eq 0) { [PSCustomObject]@{ GroupName = $g.DisplayName; GroupId = $g.Id } }
}60. Gruppen- und Teams-Erstellung eingeschränkt
Unkontrollierte Gruppen- und Teams-Erstellung führt zu Wildwuchs ohne Namenskonvention und Governance, dazu öffnet jede neue Gruppe potenziell externe Gastzugriffe. Die Einstellung liegt im Directory-Setting Group.Unified, fehlt das Setting-Objekt, gilt der Default True, also jeder darf anlegen. Restriktiv heißt: EnableGroupCreation auf False plus eine berechtigte Sicherheitsgruppe.
Connect-MgGraph -Scopes "Directory.Read.All" -NoWelcome
$setting = Get-MgDirectorySetting | Where-Object { $_.DisplayName -eq "Group.Unified" }
($setting.Values | Where-Object { $_.Name -eq "EnableGroupCreation" }).Value # Befund: True oder Setting fehlt
# Je nach Modulversion heisst das Cmdlet Get-MgBetaDirectorySetting61. Gastzugriff in Microsoft 365 Groups
Im selben Group.Unified-Setting steuert AllowToAddGuests, ob Gäste überhaupt zu Gruppen und damit zu Teams und SharePoint-Sites hinzugefügt werden dürfen. Der Default ist True, was den globalen Gastzugriff weit öffnet. Pro Gruppe lässt sich das über die Vorlage Group.Unified.Guest feiner steuern.
Connect-MgGraph -Scopes "Directory.Read.All" -NoWelcome
$setting = Get-MgDirectorySetting | Where-Object { $_.DisplayName -eq "Group.Unified" }
($setting.Values | Where-Object { $_.Name -eq "AllowToAddGuests" }).Value # Befund: True ohne Guest-Governance62. DLP-Richtlinien
Lizenz: Microsoft 365 E3 (Mail und SharePoint), E5 für Teams- und Endpoint-DLP
DLP erkennt schützenswerte Inhalte und bewertet den Kontext wie Zielort und Kanal, so unterscheidet es interne Nutzung von riskanter externer Freigabe. Ohne DLP-Policy verlassen DSGVO-relevante Daten unkontrolliert die Organisation. Geprüft werden Existenz und Modus der vorhandenen Richtlinien.
Connect-IPPSSession # Security & Compliance PowerShell (Teil des ExchangeOnlineManagement-Moduls)
Get-DlpCompliancePolicy | Select-Object Name, Mode, Enabled | Format-TableLizenz: Microsoft 365 E3
Retention schützt vor dem Verlust rechtlich relevanter Daten und vor vorschnellem Löschen durch Nutzer. Ohne Policy können geschäftsrelevante Daten verschwinden, die für Audits oder Rechtsstreitigkeiten gebraucht werden. Sichtbar wird das in der Liste der aktiven Aufbewahrungsrichtlinien.
Connect-IPPSSession
Get-RetentionCompliancePolicy | Select-Object Name, Enabled, Mode | Format-Table64. Vertraulichkeitsbezeichnungen
Lizenz: Microsoft 365 E3 (manuell), E5 für Auto-Labeling
Sensitivity Labels sind die Grundlage für automatischen Schutz wie Verschlüsselung und Zugriffsbeschränkung. Ohne veröffentlichte Labels gibt es keine Klassifizierung, an der DLP und Schutzmaßnahmen ansetzen. Eine leere Liste zeigt, dass die Klassifizierungsschicht fehlt.
Connect-IPPSSession
Get-Label | Select-Object DisplayName, Name | Format-TableProtokollierung und Überwachung
65. Unified Audit Log Status
Lizenz: Microsoft 365 E3 (Standard Audit), E5 für Advanced Audit
Ohne Audit-Logs tappst Du nach einem Vorfall im Dunkeln. Die Protokollierung ist für Microsoft-365-Organisationen heute standardmäßig aktiv, mit zwei von Microsoft bestätigten Ausnahmen: die SMB-Lizenzen Business Basic, Standard und Premium sowie nicht verwaltete Tenants mit Enterprise-Testlizenzen. Den verlässlichen Wert liefert Get-AdminAuditLogConfig nur in der Exchange-Online-Session, in der Security-and-Compliance-Session steht UnifiedAuditLogIngestionEnabled immer auf False.
Connect-ExchangeOnline -ShowBanner:$false
Get-AdminAuditLogConfig |
Select-Object UnifiedAuditLogIngestionEnabled, AdminAuditLogEnabled, LogLevel | Format-List[SCREENSHOT: Microsoft Purview Portal > Audit > Überwachung starten]
66. Audit-Log-Aufbewahrung
Lizenz: Microsoft 365 E5 (Aufbewahrung über 180 Tage)
Standardmäßig werden Audit-Daten 180 Tage aufbewahrt, für forensische Analysen nach einem spät erkannten Vorfall reicht das oft nicht. Eine gezielte Retention-Policy verlängert die Aufbewahrung für kritische Workloads, die gültigen Werte reichen von ThreeMonths bis TenYears. Fehlt eine passende Policy, gilt nur der Standard.
Connect-IPPSSession
Get-UnifiedAuditLogRetentionPolicy | Select-Object Name, RetentionDuration, Priority | Format-Table67. Alert-Richtlinien
Microsoft liefert vorkonfigurierte Alert Policies für kritische Ereignisse wie ungewöhnliche Dateifreigaben, Malware-Erkennung und Admin-Rollenänderungen. Ist eine davon deaktiviert, bleibt ein Angriff unbemerkt, bis der Schaden sichtbar wird. Die Spalte Disabled zeigt, welche Richtlinien stillgelegt sind.
Connect-IPPSSession
Get-ProtectionAlert | Select-Object Name, Disabled, Severity, Category | Sort-Object Category | Format-Table68. Identity Secure Score
Der Secure Score verdichtet den Sicherheitsstatus des Tenants zu einer Kennzahl mit konkreten Verbesserungsvorschlägen. Regelmäßig dokumentiert macht er Fortschritt und Rückschritte sichtbar und eignet sich als Baseline-Vergleich zwischen zwei Audit-Läufen. Der aktuelle Wert steht in CurrentScore im Verhältnis zu MaxScore.
Connect-MgGraph -Scopes "SecurityEvents.Read.All" -NoWelcome
Get-MgSecuritySecureScore -Top 1 |
Select-Object CurrentScore, MaxScore, CreatedDateTime | Format-ListErweiterte Daten- und Compliance-Kontrollen
69. Litigation Hold auf Postfächern
Lizenz: Exchange Online Plan 2 oder Microsoft 365 E3
Litigation Hold friert den Inhalt eines Postfachs ein, sodass auch gelöschte oder veränderte Elemente für rechtliche Verfahren erhalten bleiben. Für Geschäftsführung, Rechtsabteilung und Finanzbuchhaltung ist das oft Pflicht. Postfächer mit LitigationHoldEnabled = False in diesen Bereichen sind eine Compliance-Lücke.
Connect-ExchangeOnline -ShowBanner:$false
Get-Mailbox -ResultSize Unlimited |
Where-Object { $_.LitigationHoldEnabled -eq $false } |
Select-Object UserPrincipalName, LitigationHoldEnabled, RetentionHoldEnabled | Format-Table70. Auto-Labeling-Richtlinien
Lizenz: Microsoft 365 E5
Manuelle Klassifizierung greift in der Praxis nie flächendeckend, weil Nutzer sie vergessen oder umgehen. Auto-Labeling erkennt regulierte Inhalte wie IBAN, Steuernummern oder Personalausweisnummern automatisch und wendet Labels an. Ohne aktive Auto-Labeling-Policy bleiben sensible Dokumente in SharePoint und OneDrive ungeschützt.
Connect-IPPSSession
Get-AutoSensitivityLabelPolicy | Select-Object Name, Mode, Enabled | Format-Table
# Befund: keine aktive Policy fuer regulierte Datentypen71. Customer Lockbox
Lizenz: Microsoft 365 E5
Customer Lockbox erzwingt eine ausdrückliche Genehmigung, bevor ein Microsoft-Support-Techniker im Rahmen einer Anfrage auf Inhaltsdaten zugreifen kann. Ohne diesen Schalter kann der Zugriff ohne Deine Freigabe erfolgen. Für regulierte Branchen ist CustomerLockBoxEnabled = True ein erwarteter Wert.
Connect-ExchangeOnline -ShowBanner:$false
Get-OrganizationConfig | Select-Object CustomerLockBoxEnabled # Soll: True72. Ablaufrichtlinie für Microsoft 365 Groups
Lizenz: Entra ID P1
Ohne Ablaufrichtlinie verfallen Gruppen und Teams nie automatisch, ungenutzte Gruppen sammeln sich über Jahre mit ihren Dateien und Gastzugriffen an. Eine Lifecycle-Policy zwingt Besitzer zur regelmäßigen Bestätigung und archiviert sonst automatisch. Fehlt die Policy, gibt es keine automatische Bereinigung.
powershell
Connect-MgGraph -Scopes "Directory.Read.All" -NoWelcome
Get-MgGroupLifecyclePolicy |
Select-Object GroupLifetimeInDays, ManagedGroupTypes, AlternateNotificationEmails | Format-List
# Befund: keine Policy vorhandenErweiterter E-Mail-Bedrohungsschutz
73. Anti-Malware Common Attachment Filter
Der Common Attachment Filter blockiert gefährliche Dateitypen wie exe, js, vbs oder scr bereits am Gateway, unabhängig vom Inhalt und per True-Typing auch bei umbenannter Endung. Steht EnableFileFilter auf False, können Nutzer ausführbare Anhänge empfangen, ein klassischer Infektionsweg.
powershell
Connect-ExchangeOnline -ShowBanner:$false
Get-MalwareFilterPolicy |
Select-Object Name, EnableFileFilter, @{N="FileTypes";E={($_.FileTypes -join ", ")}} | Format-List
# Befund: EnableFileFilter = False74. Quarantäne-Richtlinien
Quarantäne-Richtlinien legen fest, was Nutzer mit abgefangenen Nachrichten tun dürfen und ob sie überhaupt benachrichtigt werden. Ist die Quarantäne-Benachrichtigung (ESNEnabled) aus, bemerkt niemand fälschlich blockierte Geschäftsmails, und legitime Kommunikation versickert unbemerkt. Geprüft werden die Benachrichtigungseinstellungen je Policy.
Connect-ExchangeOnline -ShowBanner:$false
Get-QuarantinePolicy | Select-Object Name, ESNEnabled, EndUserSpamNotificationFrequency | Format-Table
# Befund: ESNEnabled = False bei produktiv genutzten Policies75. Tenant Allow/Block List
Über die Tenant Allow/Block List pflegen Admins manuelle Ausnahmen für Absender, URLs und Dateihashes. Ein dauerhafter Allow-Eintrag ohne Ablaufdatum ist ein gezielt offen gehaltenes Loch im Schutz, das nach Kompromittierung der Gegenseite zum Einfallstor wird. Jeder Allow-Eintrag braucht ein Ablaufdatum und eine Begründung.
Connect-ExchangeOnline -ShowBanner:$false
foreach ($type in "Sender","Url","FileHash") {
Get-TenantAllowBlockListItems -ListType $type -Allow |
Select-Object @{N="ListType";E={$type}}, Value, ExpirationDate, Notes
}
# Befund: Allow-Eintraege ohne ExpirationDate76. Outbound-Spam Empfängerlimits
Sendelimits bremsen einen kompromittierten Account aus, bevor er Tausende Mails verschickt oder Daten an viele externe Empfänger ausleitet. Steht ein Limit auf 0, gelten die Service-Defaults, die für gezielte Exfiltration zu großzügig sein können. Bewusst gesetzte Werte plus eine harte Aktion bei Überschreitung begrenzen den Schaden.
Connect-ExchangeOnline -ShowBanner:$false
Get-HostedOutboundSpamFilterPolicy |
Select-Object Name, RecipientLimitExternalPerHour, RecipientLimitInternalPerHour, RecipientLimitPerDay, ActionWhenThresholdReached |
Format-ListGovernance, Identitäten und Lebenszyklus
77. Access Reviews für Rollen und Gäste
Lizenz: Entra ID P2
Access Reviews verhindern Berechtigungsdrift, also Rollen und Gastzugriffe, die über Projekte und Jobwechsel unkontrolliert bestehen bleiben. Ohne periodische Reviews sammeln sich über Monate Berechtigungen an, die längst nicht mehr nötig sind. Existiert keine Review-Definition für privilegierte Rollen oder Gäste, fehlt die Re-Zertifizierung.
Connect-MgGraph -Scopes "AccessReview.Read.All" -NoWelcome
Get-MgIdentityGovernanceAccessReviewDefinition -All |
Select-Object DisplayName, Status, @{N="Scope";E={$_.Scope.AdditionalProperties.query}} | Format-Table
# Befund: keine Reviews fuer privilegierte Rollen oder Gaeste78. Enterprise Apps ohne Eigentümer
Eine Enterprise App ohne benannten Eigentümer ist verwaist: Niemand verantwortet ihre Berechtigungen, ihren Lebenszyklus oder ihre Abschaltung. Genau solche Apps tragen oft alte, überprivilegierte Consent-Grants. Gesucht sind Service Principals vom Typ Application ganz ohne Owner.
Connect-MgGraph -Scopes "Application.Read.All","Directory.Read.All" -NoWelcome
foreach ($sp in (Get-MgServicePrincipal -All -Filter "servicePrincipalType eq 'Application'")) {
$owners = Get-MgServicePrincipalOwner -ServicePrincipalId $sp.Id -All
if (@($owners).Count -eq 0) { [PSCustomObject]@{ App = $sp.DisplayName; AppId = $sp.AppId } }
}79. Teams Drittanbieter-Cloud-Speicher
Standardmäßig dürfen Teams-Nutzer Dropbox, Box, Google Drive, ShareFile und Egnyte als Speicher einbinden, alle fünf Schalter stehen auf True. Damit fließen Unternehmensdateien an Ablagen außerhalb Deiner Governance. Nicht genehmigte Anbieter gehören auf False.
Connect-MicrosoftTeams
Get-CsTeamsClientConfiguration |
Select-Object AllowDropBox, AllowBox, AllowGoogleDrive, AllowShareFile, AllowEgnyte | Format-List
# Befund: nicht genehmigte Anbieter auf True80. Safe Documents für Office-Apps
Lizenz: Microsoft 365 E5 oder Defender for Office 365 Plan 2
Safe Documents lädt Dateien, die in der geschützten Ansicht von Office-Apps geöffnet werden, zur Prüfung an Microsoft Defender for Endpoint hoch, bevor der Nutzer sie verlässt. Ohne diesen Schutz reicht ein Klick auf "Bearbeitung aktivieren", um eine präparierte Datei scharf zu schalten. EnableSafeDocs soll aktiv und AllowSafeDocsOpen auf False stehen, damit als schädlich erkannte Dokumente nicht trotzdem geöffnet werden.
Connect-ExchangeOnline -ShowBanner:$false
Get-AtpPolicyForO365 | Select-Object Name, EnableSafeDocs, AllowSafeDocsOpen | Format-List
# Befund: EnableSafeDocs = False oder AllowSafeDocsOpen = TrueFazit der Serie
Mit den 80 Prüfpunkten dieser drei Teile ist ein Microsoft 365 Tenant entlang aller relevanten Angriffsflächen durchleuchtet: Identität und Zugriff in Teil 1, Mail-Schutz, Collaboration und Geräte in Teil 2, Daten-Governance, Compliance und Monitoring in Teil 3. Die grafische Prüfung über die einzelnen Admin Center hätte diese Tiefe nie erreicht, weil sie aggregiert, sich laufend verändert und die Zusammenhänge zwischen Identitäten, Berechtigungen und Zugriffsrouten verdeckt. PowerShell liefert stattdessen versionierbare Rohdaten für eine forensische Auswertung.
Der nächste Schritt ist die Automatisierung. Bündele die für Deinen Tenant relevanten Bausteine in ein Sammelskript mit CSV- und HTML-Report und lege es als Azure Automation Runbook mit festem Rhythmus ab, etwa monatlich. Sichere die Exporte revisionssicher außerhalb des Tenants, in Azure Blob Storage oder Deinem SIEM. Ein Tenant gilt erst dann als kontrolliert, wenn jede Abweichung von der Baseline maschinell erfasst und gemeldet wird. Und vergiss am Ende jedes Laufs den sauberen Abbau aller Sitzungen nicht, über Disconnect-MgGraph, Disconnect-ExchangeOnline, Disconnect-MicrosoftTeams, Disconnect-PnPOnline und Disconnect-SPOService.
Sei der Erste und starte die Diskussion mit einem hilfreichen Beitrag.
Kommentar hinterlassen
Dein Beitrag wird vor der Veröffentlichung kurz geprüft — fachlich, respektvoll und auf den Punkt ist hier genau richtig.