Odkrywanie luk w zgodności Microsoft 365 dzięki Microsoft Graph
By Mirko Peters ·
Witamy ponownie w podcaście i w naszym towarzyszącym blogu technicznym! Jeśli kiedykolwiek ufałeś panelowi zgodności Microsoft 365, który jest gotowy od razu po wdrożeniu, i zakładałeś, że wszystko w…
Automatically translated with AI from the original post. Read the English original
Witamy ponownie w podcaście i w towarzyszącym mu blogu technicznym! Jeśli kiedykolwiek ufałeś gotowemu pulpitowi zgodności Microsoft 365 i zakładałeś, że uwzględnia on absolutnie wszystko, możesz właśnie wchodzić w fałszywe poczucie bezpieczeństwa. Domyślne pulpity zgodności są zaprojektowane jako podsumowania, a nie jako absolutna prawda. Kluczowe sygnały, takie jak zdarzenia Data Loss Prevention (DLP), działania w ramach eDiscovery czy bazowe alerty bezpieczeństwa, często znajdują się za punktami końcowymi Microsoft Graph, które wymagają osobnych uprawnień, zaawansowanych parametrów zapytań i poprawnego łączenia danych. W tym szczegółowym omówieniu sprawdzimy, dlaczego natywne raporty nie pokazują istotnych informacji, wskażemy dokładne punkty końcowe Graph, które warto odpytać, i pokażemy, jak przekierować surowe dane dowodowe bezpośrednio do Microsoft Purview, aby uzyskać przejrzyste i obronne raporty. Aby posłuchać naszej pełnej dyskusji na ten temat, koniecznie obejrzyj powiązany odcinek podcastu: Find Missing Microsoft 365 Compliance Data with Graph.
Przegląd
Domyślne pulpity zgodności są podsumowaniami, a nie prawdą. Krytyczne sygnały (trafienia DLP, działania eDiscovery, alerty bezpieczeństwa) często znajdują się za punktami końcowymi Graph z osobnymi uprawnieniami. Pokazujemy dokładne interfejsy API, zakresy i wzorce skryptów, aby wydobyć pełne dowody i scentralizować je w Purview w celu przejrzystego, obronnego raportowania.
Dla kogo to przydatne
Właściciele obszarów zgodności, prawnych i ryzyka, którzy potrzebują dowodów gotowych do audytu
Administratorzy M365 i Entra, budujący raportowanie i automatyzację
Zespoły bezpieczeństwa korelujące telemetrię DLP, eDiscovery i alertów
Martwe punkty (dlaczego gotowe pulpity je pomijają)
Agregacja i opóźnienie: podsumowania w interfejsie pomijają zagnieżdżone szczegóły incydentów oraz ostatnią aktywność
Luki w zakresie: działania eDiscovery i trafienia DLP mogą znajdować się poza standardowymi eksportami
Rozdzielone uprawnienia: punkty końcowe /security i /compliance wymagają różnych zakresów
Brak połączeń: pulpity rzadko korelują incydenty z użytkownikami, custodianami ani krokami sprawy
Najcenniejsze punkty końcowe Graph (lista do skopiowania)
Alerty bezpieczeństwa (szerokie spojrzenie)
Punkt końcowy:
/security/alertslub/security/alerts_v2Uprawnienia aplikacji (przykłady):
SecurityEvents.Read.All(lub Alerts.Read.All w nowszych modelach)Zastosowanie: osie czasu alertów, ważność, status, przypisania
Zasady DLP i aktywność (utrata danych)
Punkty końcowe (dostępność zależy od dzierżawy):
/security/dataLossPreventionPolicies(inwentarz zasad)/security/dlpIncidentslub zaawansowane punkty końcowe incydentów DLP w przestrzeni nazw security (zależnie od dzierżawy)
Uprawnienia aplikacji:
SecurityEvents.Read.All(i/lub konkretne zakresy odczytu DLP, jeśli są dostępne)Zastosowanie: trafienia, lokalizacje (Exchange/SharePoint/Teams), dyspozycja
eDiscovery (sprawy i działania)
/compliance/ediscovery/casesŚcieżki podrzędne:
/custodians,/searches,/reviewSets,/noncustodialDataSources,/operationsUprawnienia aplikacji:
eDiscovery.Read.All(oraz zapis, jeśli zarządzasz sprawami)Zastosowanie: status spraw, wstrzymania, custodianie, eksporty, działania recenzentów
Audyt i kontekst logowania (dowody uzupełniające)
/auditLogs/directoryAudits,/auditLogs/signInsUprawnienia aplikacji:
AuditLog.Read.All,Directory.Read.AllZastosowanie: kto, co i kiedy zmienił, kontekst sesji
Wskazówka: wiele ładunków danych zgodności jest głęboko zagnieżdżonych — zaplanuj użycie
$expand, stronicowanie przez@odata.nextLinkoraz łączenie z/users/{id}, aby uzyskać nazwy wyświetlane i działy.
Uwierzytelnianie i uprawnienia (bezproblemowa ścieżka)
Używaj uprawnień aplikacji (jednostka usługi) w zadaniach bez nadzoru
Zarejestruj osobne aplikacje dla bezpieczeństwa i podstawowego Graph, jeśli organizacja wymaga rozdziału uprawnień
Udzielaj zgody tylko na zakresy o najmniejszych uprawnieniach; przechowuj sekrety i certyfikaty w Key Vault
Zastosuj wykładniczy backoff dla kodów 429/503 i zapisuj
x-ms-request-idw logach
Wzorce skryptowe (PowerShell lub Python)
Wybór i rozwinięcie: żądaj tylko potrzebnych pól,
$select=…,$expand=…dla zagnieżdżonych encjiFiltrowanie i ograniczenie czasu:
$filter=createdDateTime ge {ISO8601}dla danych deltaStronicowanie: pętla po
@odata.nextLink; nigdy nie zakładaj, że wyniki mieszczą się na jednej stronieNormalizacja: na początku zamień identyfikatory użytkowników i obiektów na nazwy oraz działy, aby wyniki były czytelne
Łączenie dla kontekstu: wzbogać incydenty o metadane użytkownika, witryny, zespołu lub sprawy przed eksportem
Włączanie danych do Purview (zamiana danych na decyzje)
Standaryzacja wyników: pliki CSV/JSON ze spójnymi nazwami pól (tenant, incidentId, workload, userId, userUPN, severity, status, created, lastAction, caseId)
Import: umieść pliki w zabezpieczonej lokalizacji magazynu, z której Purview może je odczytać (np. ADLS Gen2)
Oznaczanie i etykietowanie: zastosuj etykiety poufności lub niestandardowe tagi (np. „DLP-PII-High”) na potrzeby kierowania
Pulpity: Purview (lub Power BI oparte na danych Purview) do analizy trendów, właścicieli i wieku naruszeń SLA
Automatyzacje: reguły powiadamiające właścicieli spraw o powtórzeniach i eskalacjach; cotygodniowe zestawienia PDF
30-minutowy pilotaż (krok po kroku)
0–10 min: rejestracja aplikacji +
SecurityEvents.Read.All/eDiscovery.Read.All; utwórz sekret lub certyfikat10–20 min: napisz skrypt dla jednego punktu końcowego (alerty lub sprawy) z stronicowaniem i
$filterdla ostatnich 7 dni20–30 min: wzbogać dane o
/users, wyeksportuj CSV, przenieś do ścieżki ADLS i zwizualizuj prosty wykres
Wskaźniki KPI potwierdzające wartość
% incydentów z uzupełnionym właścicielem i decyzją (disposition)
Średni czas od incydentu do sprawy (lub recenzenta)
Konta lub lokalizacje powtarzających się naruszających w ciągu 30 dni
Różnica w liczbie względem gotowego pulpitu OOTB (zamknięcie luk)
Czas cyklu audytu (zaoszczędzone godziny przygotowania dowodów)
Typowe pułapki (i rozwiązania)
Puste wyniki → błędne zakresy lub użycie uprawnień delegowanych tam, gdzie wymagane są uprawnienia aplikacji
Brakujące szczegóły → pominięty
$expandlub nieprzetworzone kolekcje zagnieżdżoneNiepełne dane → brak stronicowania; pobrano tylko pierwszą stronę
Niezgodne nazwy → brak wzbogacenia danych przez połączenie z
/userslub danymi HRNieaktualne pulpity → brak zaplanowanych uruchomień; dodaj zadanie i alerty o błędach
Szybkie wygrane w tym tygodniu
Pobierz ostatnie 7 dni z
/security/alertsi porównaj liczby z portalemWyeksportuj otwarte sprawy eDiscovery wraz z osobami objętymi zabezpieczeniem (custodians) i przekaż je do weryfikacji dziale prawnemu
Uruchom przegląd incydentów DLP, oznacz powtórzenia i otwórz zadania następcze w Purview
Zaplanuj cotygodniowy pakiet dowodów (CSV + PDF) wysyłany na skrzynkę zespołu ds. zgodności
Często zadawane pytania
Czy muszę być programistą? Nie – wystarczą skrypty PowerShell lub krótkie skrypty w Pythonie.
Dlaczego uprawnienia aplikacji? Większość punktów końcowych /security i /compliance wymaga bezobsługowego dostępu o wysokim poziomie zaufania.
Czy mogę pozostać przy PowerShell? Tak – użyj zestawu SDK Microsoft Graph PowerShell i obsłuż
$top,$filter,$expandoraz stronicowanie.Czy usługa Purview jest wymagana? Nie ściśle – ale zamienia surowy JSON w audytowalne procesy i pulpity.
Podsumowanie
Pulpity podsumowują, a Graph pokazuje cały obraz. Wskaż właściwe punkty końcowe, napraw uwierzytelnianie, obsłuż stronicowanie i rozwiń dane, a następnie scentralizuj je w Purview. Przejdziesz od zgodności na pokaz do sprawdzalnej, bieżącej widoczności – bez topienia się w ręcznych eksportach. Aby poznać szczegóły i eksperckie wskazówki dotyczące tych martwych punktów, koniecznie posłuchaj naszego odcinka podcastu Find Missing Microsoft 365 Compliance Data with Graph. Ulepszaj swoje skrypty, zabezpieczaj uprawnienia aplikacji i zacznij ujawniać dane, które dotąd ukrywały Twoje pulpity!