Przejdź do głównej zawartości

Synchronizacja katalogu Entra AD

Gdy firma prowadzi symulacje phishingu wobec 50, 500 albo 5 000 pracowników, ręczne utrzymywanie listy kontaktów na bieżąco nie jest realne. PhishSpot łączy się z Microsoft Entra ID (dawniej Azure AD) i pobiera użytkowników oraz grupy bezpośrednio z Twojego katalogu. Nowi pracownicy się pojawiają, odchodzący zostają wyłączeni, członkostwo w grupach odpowiada aktualnej strukturze — bez ręcznej edycji arkusza.

Ten rozdział opisuje konfigurację integracji, harmonogram synchronizacji, co i jak jest importowane, ręczne synchronizacje oraz log historii, do którego zaglądasz gdy coś wygląda nie tak.

Alternatywa to import z CSV (Rozdział 5 Kontakty opisuje ścieżki ręczne). Są w porządku dla proof-of-concept albo jednorazowych pilotaży, ale w produkcji szybko się dezaktualizują. Synchronizacja katalogu daje:

  • Autorytatywne źródło. Twój IT już utrzymuje Entrę. PhishSpot dziedziczy tę pracę — brak równoległej listy do utrzymania.
  • Automatyczny onboarding. Nowy pracownik, którego konto Entra zostało założone dziś, pokaże się w PhishSpot rano (albo szybciej, w zależności od harmonogramu) i od razu staje się prawidłowym celem dla kampanii autopilotów.
  • Eleganckie obsłużenie odchodzących. Gdy IT wyłącza konto w Entra, pasujący Contact w PhishSpot zostaje oznaczony disabled — pozostaje w bazie do raportów historycznych, ale autopiloty przestają go obsługiwać.
  • Grupy nadążają. Członkostwo w „Engineering”, „Finance”, „Zarząd” — cokolwiek zdefiniowano w Entra — zostaje odbite w grupach PhishSpot, więc odbiorcy autopilotów automatycznie podążają za strukturą organizacji.

Jeśli chcesz też, żeby użytkownicy logowali się do swojego portalu szkoleniowego przez Microsoft, ta sama integracja obsługuje ten przepływ — patrz Rozdział 24 Logowanie przez Microsoft 365.

Lista integracji — karta Microsoft Entra ID obok Google Workspace i Whitelist filtra antyspamowego

  1. Otwórz Ustawienia konta → Integracje. Zobaczysz siatkę kart integracji. Znajdź kartę Microsoft Entra ID; pokazuje szary punkt statusu („nieaktywna”) dopóki nie zostanie połączona.
  2. Kliknij Połącz z Microsoft. PhishSpot poprosi o tenant ID Entra (GUID, np. 1f3a8d2e-...). Znajdziesz go w centrum administracyjnym Entra w sekcji „Właściwości”.
  3. Zatwierdź. PhishSpot generuje token state podpisany HMAC i przekierowuje Cię na ekran zgody administracyjnej Microsoft pod login.microsoftonline.com/<tenant>/v2.0/adminconsent. Musisz być zalogowany jako Global Administrator w docelowym tenancie — zgoda administracyjna nadaje aplikacji enterprise PhishSpot uprawnienia odczytu katalogu w imieniu wszystkich użytkowników.
  4. Ekran zgody pokazuje żądane uprawnienia:
    • User.Read.All — odczyt profili użytkowników (do listy kontaktów).
    • Group.Read.All — odczyt definicji grup.
  5. Nadaj. Microsoft przekierowuje z powrotem do callbacku PhishSpot z admin_consent=True&tenant=<ID>&state=<HMAC>. PhishSpot weryfikuje HMAC, zapisuje token aplikacji ograniczony do tenanta i zmienia status integracji na aktywna.

Połączone. Karta Microsoft pokazuje zielony punkt statusu, tenant ID monospace i znacznik czasu zgody.

W formularzu połączenia lub ustawieniach synchronizacji wpisz maksymalnie 50 identyfikatorów obiektów grup Entra. Możesz oddzielić je spacjami, przecinkami lub nowymi wierszami. Import uwzględnia grupy zagnieżdżone i nie powiela użytkownika należącego do kilku grup. Puste pole oznacza cały tenant. Po kompletnym imporcie użytkowników kontakty wcześniej zaimportowane przez tę integrację, które opuściły zakres, zostają dezaktywowane. Zmiany grup nie zmieniają odbiorców rozpoczętych kampanii.

Na koncie demo wybierz odizolowaną grupę testową. Import obejmuje tylko skrzynki dopuszczone do wysyłki demo, z fikcyjnymi danymi profilu. Bez wybranej grupy synchronizacja pozostaje wyłączona także po uzyskaniu zgody.

Rejestracja aplikacji Microsoft musi mieć uprawnienia aplikacyjne User.Read.All i Group.Read.All. Żądanie zgody używa https://graph.microsoft.com/.default i obejmuje uprawnienia skonfigurowane w tej rejestracji. Logowanie SSO korzysta z osobnego przepływu uprawnień delegowanych.

Kliknij Zarządzaj na aktywnej karcie Microsoft, aby otworzyć ustawienia integracji. Dwa checkboxy i jeden dropdown:

  • Synchronizuj użytkowników do kontaktów — domyślnie WŁ. Pobiera każdego użytkownika Entra (z wybranego zakresu grup lub całego tenantu, jeśli zakres jest pusty) i upsertuje jako rekord Contact w PhishSpot.
  • Synchronizuj grupy — domyślnie WŁ. Pobiera każdą grupę Entra (security i Microsoft 365 groups) i upsertuje jako Group. Członkostwa są uzgadniane w tym samym przebiegu.
  • Harmonogram — jedno z:
    • Wyłączony — brak automatycznej synchronizacji. Możesz nadal odpalać ją ręcznie (§25.5).
    • Co godzinę — uruchamia się co godzinę o pełnej.
    • Codziennie — uruchamia się raz dziennie o 02:00 UTC. Domyślny dla tenantów produkcyjnych.
    • Co tydzień — uruchamia się raz w tygodniu, w poniedziałki o 02:00 UTC.

Zapisz ustawienia. Scheduler platformy (ScheduledDirectorySyncsJob) rozsyła w każdym interwale, kolejkując jeden DirectorySyncJob per aktywna integracja pasująca do harmonogramu.

Pierwsza synchronizacja po świeżym połączeniu jest zwykle największa — importuje wszystko. Kolejne dotykają tylko tego, co się zmieniło (kilka zmodyfikowanych użytkowników, jedna utworzona grupa, jedno usunięte członkostwo), więc są szybkie — zwykle poniżej minuty nawet dla tysięcy użytkowników.

Dla każdego użytkownika Entra importer tworzy lub aktualizuje Contact kluczowany po Entra Object ID (oid). Mapowanie:

Pole Contact w PhishSpotŹródło Entra
emailuserPrincipalName (fallback do mail)
first_name, last_namegivenName, surname
titlejobTitle
departmentdepartment
locationofficeLocation (fallback do city + country)
telephonemobilePhone (fallback do businessPhones)
external_idid (OID Entry)
external_stateactive jeśli accountEnabled=true, inaczej disabled
sourcezawsze :entra
synced_atznacznik czasu synchronizacji

Dla każdej grupy Entra importer tworzy Group kluczowany po OID grupy:

Pole Group w PhishSpotŹródło Entra
namesluggowany displayName (np. „Dział IT” → dzial-it)
display_namedisplayName (zachowuje wielkość liter i polskie znaki)
external_idid grupy
source:entra

Członkostwo jest uzgadniane per synchronizacja: PhishSpot listuje aktualnych członków każdej grupy Entra, usuwa lokalne rekordy ContactGroup dla kontaktów, których już nie ma w grupie Entra, i tworzy nowe dla dodanych.

Ważne: Kontakty, których konto Entra zostało usunięte (a nie tylko wyłączone), nie znikają z PhishSpot — są oznaczane external_state: disabled, żeby raporty historyczne pozostały spójne. Aby całkowicie wyczyścić kontakt, usuń go ręcznie z UI PhishSpot.

25.5 Ręczna synchronizacja („Synchronizuj teraz”)

Dział zatytułowany „25.5 Ręczna synchronizacja („Synchronizuj teraz”)”

Strona zarządzania integracją ma przycisk Synchronizuj teraz. Kliknij go aby natychmiast zakolejkować DirectorySyncJob, niezależnie od harmonogramu. Używaj do:

  • Początkowego połączenia — większość adminów klika Synchronizuj teraz raz, zaraz po nadaniu zgody, żeby pierwszy import nie czekał na jutrzejszy cron o 02:00 UTC.
  • Push onboardingowy — gdy IT oznaczy w Entra 20 nowych pracowników, chcesz mieć ich w PhishSpot przed następnym zaplanowanym przebiegiem.
  • Troubleshooting — żeby spróbować ponownie po przejściowym błędzie Microsoft Graph widocznym w logu aktywności.

Ręczna synchronizacja zapisuje wpis DirectorySyncLog z trigger: manual — przydatne do odróżniania świadomych akcji admina od przebiegów z crona przy audytowaniu.

Pod ustawieniami tabela aktywności pokazuje ostatnie 50 przebiegów synchronizacji. Kolumny:

KolumnaCo pokazuje
RozpoczętoKiedy przebieg się zaczął
WyzwalaczRęczny (admin kliknął Synchronizuj teraz), Zaplanowany (cron), lub Callback OAuth (auto-sync zaraz po nadaniu zgody)
StatusW trakcie, Sukces, Błąd, lub Częściowy (kolorowy badge)
ZmianyUżytkownicy utworzeni / zaktualizowani / wyłączeni, grupy utworzone / zaktualizowane, zmiany członkostwa
Czas trwaniaWall-clock czas przebiegu

Przykładowa tabela aktywności z fikcyjnymi danymi:

RozpoczętoWyzwalaczStatusZmianyCzas trwania
6 godzin temuZaplanowanySukces0c · 7u · 0d / 0c · 0u / 1m22 s
2 dni temuZaplanowanySukces1c · 2u · 1d / 0c · 0u / 2m19 s
7 dni temuRęcznySukces0c · 4u · 0d / 0c · 0u / 0m14 s
8 dni temuZaplanowanyBłąd—1 s
10 dni temuZaplanowanySukces1c · 3u · 0d / 0c · 0u / 1m16 s

Przebieg zakończony błędem lub częściowym wynikiem wymaga sprawdzenia. Błąd uprawnień Microsoft Graph (403) oznacza konieczność sprawdzenia uprawnień aplikacyjnych i zgody administratora. Kolejny zaplanowany przebieg może ponowić import po przejściowej awarii.

Strona zarządzania integracją Entra — ustawienia synchronizacji + historia aktywności

Przycisk Połącz zabiera mnie na ekran „odmowa zgody”. Zalogowałeś się jako użytkownik bez uprawnień admin w tenancie. Wyloguj się ze wszystkich kont Microsoft, zaloguj się od nowa jako Global Administrator i spróbuj jeszcze raz.

Synchronizacja przechodzi, ale nie pojawiają się kontakty. Otwórz log aktywności. Jeśli status to Sukces i wszystkie zmiany są zerowe, Twój tenant Entra nie ma użytkowników pasujących do filtra (sprawdź identyfikatory grup i ich członków; konta demo importują wyłącznie dopuszczone skrzynki). Sprawdź w Entra, że oczekiwani użytkownicy mają accountEnabled=true.

„Tenant mismatch” na callbacku. Tenant ID Entra, który wprowadziłeś, nie pasuje do tenanta, którego admin nadał zgodę. Rozłącz i połącz ponownie z poprawnym tenant ID.

Częściowe synchronizacje. Jeśli synchronizacja kończy się statusem Częściowy, część upsertów się udała, a część nie — zwykle dlatego, że jeden rekord użytkownika złamał constraint unikalności (np. dwóch użytkowników Entra ma ten sam email). Status i liczniki pokazują częściowy postęp. Logi nie ujawniają adresów użytkowników. Niekompletny lub przerwany import użytkowników nie dezaktywuje brakujących kontaktów.

Harmonogram jest „Wyłączony”, a spodziewałem się Codziennie. Harmonogram domyślnie pokazuje ostatnio zapisaną wartość — nie ma platformowego defaultu. Nowe połączenia są tworzone z Wyłączony, żebyś mógł przejrzeć ustawienia zanim automatyzacja ruszy.