BitLocker i klucz odzyskiwania po aktualizacji Windows: Intune, escrow w Entra ID i realna procedura helpdesku (TPM, PCR)
Masowe wejście w recovery po cumulative update albo cisza w escrow mimo włączonego BitLockera — rozkładamy TPM/PCR, polityki Intune, odczyt kluczy z Entra (Graph, role, Autopilot reuse) i rotację po incydencie, z sekcją jak to spiąć z Nexmą pod audyt.

BitLocker i klucz odzyskiwania po aktualizacji Windows: Intune, escrow w Entra ID i realna procedura helpdesku (TPM, PCR)
TL;DR: Masowy ticket „niebieski ekran, 48 cyfr” po cumulative update to zwykle nie „zepsuty BitLocker”, tylko zmiana stanu TPM/Secure Boot albo polityki PCR, czasem połączona z brakiem świeżego backupu klucza do Entra ID. Ten tekst rozkłada to na: weryfikację protectorów na dysku (
Get-BitLockerVolume), odczyt klucza z Entra (Graph / portal) z uwzględnieniem ról i Autopilot reuse, oraz rotację po incydencie. Na końcu masz też odniesienie do Nexmy jako sposobu na spięcie zgłoszenia, identyfikacji urządzenia i audytu — bez zastępowania Microsoftowego modelu uprawnień.
Problem
Helpdesk budzi się z komunikatem z Teams: użytkownik stoi na niebieskim ekranie BitLockera, widzi Recovery Key ID (np. pierwsze znaki identyfikatora) i prosi o „hasło z firmy”. Równolegle na kanale MSP ktoś wrzuca link do wątku na r/Intune o hotpatchu i niespodziewanym recovery — i nagle masz pięćdziesiąt takich samych ticketów w ciągu jednego dnia po patch Tuesday.
Drugi wariant jest jeszcze gorszy do debugowania: laptop bootuje normalnie, ale co drugi restart Intune raportuje „BitLocker compliance: non-compliant”, a w logach widzisz, że polityka escrow do Entra ID nie wykonała backupu od tygodnia, mimo że użytkownik twierdzi, że „nic nie zmieniał”. W obu przypadkach biznes oczekuje dwóch rzeczy jednocześnie: szybkiego odblokowania oraz wyjaśnienia, czemu to się powtórzy — bez przerzucania winy między „Windows team” a „Intune team”.
Dlaczego tak się dzieje
BitLocker na dysku systemowym z TPM nie trzyma jednego magicznego hasła użytkownika. Masz protectory: TPM (z profilem platformy PCR), ewentualnie PIN, startup key na USB, numer odzyskiwania 48 cyfr. Gdy któryś pomiar PCR się nie zgadza po aktualizacji UEFI/TPM albo po zmianie boot chain (secure boot policy, firmware, niektóre CU w 2025–2026 raportowały masowe wejścia w recovery przy specyficznej kombinacji PCR7 i raportu Secure Boot), TPM odmawia unseal i jedyną ścieżką zostaje recovery password.
Równolegle backup klucza do Microsoft Entra ID nie jest filozofią „włączyłem BitLockera i sam poleci”. Microsoft wprost ostrzega w dokumentacji recovery: kopia do Entra lub AD może nie nastąpić automatycznie, jeśli nie wymusiłeś tego polityką MDM/GPO. W praktyce widzę to najczęściej po ręcznym włączeniu BL na starym image albo po imporcie polityki z laboratorium, gdzie sekcja escrow była „Not configured”.
Trzeci tor to tożsamość urządzenia w Entra: klucz jest przypięty do obiektu device. Przy Autopilot reuse i zmianie primary usera dokumentacja Entra mówi wprost o sytuacji, w której nowy właściciel musi iść po klucz do administratora — a administrator z rolami ograniczonymi do Administrative Unit nie zobaczy klucza, jeśli urządzenie wypadło z jego zakresu po zmianie własności. To nie jest bug — to model delegacji, który ratuje przed „globalnym adminem czytającym wszystko”, ale zabija SLA helpdesku, jeśli nie macie runbooka.
Rozwiązanie krok po kroku
Krok 1 — potwierdź, co użytkownik naprawdę widzi
Na telefonie nie zgaduj: poproś o zdjęcie ekranu recovery albo o Recovery Key ID (identyfikator klucza, nie pełne 48 cyfr). Recovery Key ID to filtr w Entra / Graph — bez tego możesz pobrać „jakiś” klucz z urządzenia o tej samej nazwie, który nie pasuje do bieżącego protector chain po rotacji.
Krok 2 — lokalna diagnostyka (jeśli masz zdalny dostęp lub SafeOS)
Na zablokowanym wolumenie OS nie odpalisz PowerShell; ten blok jest dla scenariusza „już odblokowaliśmy recovery i chcemy wiedzieć dlaczego”. Na działającym Windows:
Get-BitLockerVolume -MountPoint 'C:' | Select-Object MountPoint,VolumeStatus,ProtectionStatus,EncryptionPercentage
(Get-BitLockerVolume -MountPoint 'C:').KeyProtector | Format-Table KeyProtectorType, KeyProtectorId, AutoUnlockProtector
KeyProtectorType interesuje Cię w pierwszej kolejności jako Tpm vs RecoveryPassword. Jeśli VolumeStatus jest FullyEncrypted, a ProtectionStatus On, ale Intune dalej krzyczy o escrow, problem jest po stronie MDM policy pipeline, nie TPM.
Krok 3 — escrow: sprawdź, czy backup faktycznie istnieje w Entra
W centrum administracyjnym Entra: Identity → Devices → All devices → [device] → BitLocker keys (nazewnictwo UI bywa aktualizowane — szukaj sekcji z kluczami recovery). Jeśli pusto mimo włączonego BitLockera, wróć do Intune: profil Endpoint protection / BitLocker musi wymuszać backup recovery password do Azure AD (dla AADJ/Hybrid). W przeciwnym razie helpdesk będzie zbierał dane jak na szkoleniu Microsoft: „Verify identity → record device name → record recovery key ID → locate password”.
Krok 4 — odczyt klucza z Graph (skryptowalnie, z audytem)
Microsoft dokumentuje ścieżkę przez Graph. Przykładowy szkielet (moduł Graph, uprawnienia aplikacji lub delegated — zgodnie z waszym modelem):
# Wymaga połączenia MgGraph z odpowiednimi scope: BitLockerKey.Read.All lub roli admina z microsoft.directory/bitlockerKeys/key/read
$dev = Get-MgDevice -Filter "displayName eq 'LAPTOP-12345'"
Get-MgInformationProtectionBitlockerRecoveryKey -Filter "deviceId eq '$($dev.DeviceId)'" |
ForEach-Object {
$full = Get-MgInformationProtectionBitlockerRecoveryKey -BitlockerRecoveryKeyId $_.Id -Property key
[pscustomobject]@{ Id = $_.Id; Created = $_.CreatedDateTime; Vol = $_.VolumeType }
}
W produkcji nie wklejaj klucza do czatu z użytkownikiem — przekaż go przez kanał out-of-band zarejestrowany w polityce bezpieczeństwa (telefon zwrotny, osobisty portal, zaszyfrowany ticket z jednorazowym linkiem). 48 cyfr łatwo przekręcić; konsola recovery ma checksum per blok 6 cyfr, ale nadal lepiej unikać dyktowania przez Slacka.
Krok 5 — po wejściu w recovery: TPM „uspij” na czas aktualizacji firmware / CU
Gdy root cause to zmiana PCR (UEFI, TPM firmware, cumulative update), klasyczna procedura serwisowa to suspend na jeden restart:
Suspend-BitLocker -MountPoint 'C:' -RebootCount 1
# reboot + instalacja aktualizacji
# po starcie Resume-BitLocker -MountPoint 'C:' (albo zrób to skryptem post-update)
Jeśli robicie to masowo przez Intune, rozważcie skrypt remediacji albo maintenance window zamiast ręcznego dzwonienia do każdego użytkownika — suspend na RebootCount 3 bywa bezpieczniejszy na leniwe restarty, ale wydłuża okno, w którym dysk jest technicznie mniej chroniony na offline atak — balansujcie z SecOps.
Krok 6 — rotacja klucza po incydencie
Po ujawnieniu recovery password do użytkownika powinien powstać nowy materiał sekretny. W Entra dla urządzeń hybrydowych / cloud joined Microsoft opisuje automatyczną rotację, jeśli jest włączona; ręcznie możesz użyć akcji zdalnej w Intune Rotate BitLocker recovery keys (dokładna nazwa w UI bywa „Rotate…”, API woła rotateBitLockerKeys). Po rotacji stary klucz przestaje działać — zaktualizuj dokumentację helpdesku, żeby nikt nie trzymał „PDF z kluczem z zeszłego tygodnia”.
Krok 7 — self-service zamiast kolejki Level 1
Microsoft udostępnia użytkownikom podgląd kluczy pod https://myaccount.microsoft.com w zakładce Devices → View BitLocker keys, o ile tenant nie ma restrykcji „Restrict users from recovering BitLocker keys” w default user permissions Entra. To jest realny sposób na zdjęcie 30% ticketów — pod warunkiem MFA na koncie i świadomości phishingu (klucz to praktycznie pełny dostęp do dysku).
Krok 8 — manage-bde tam, gdzie nie ma modułu BitLocker w starszym PS
Na serwerach i niektórych obrazach SAC nadal spotkasz środowisko bez rozszerzonego cmdlet surface; klasyczne narzędzie CLI jest wiarygodnym źródłem prawdy o PCR i ID protectorów:
manage-bde -status C:
manage-bde -protectors -get C:
Wyjście Numerical Password zawiera dokładny KeyProtectorId w GUID — ten sam identyfikator, którego szukasz w Entra przy wielu kluczach na jednym urządzeniu (OS vs fixed data). Jeśli widzisz kilka Recovery Password i różne daty utworzenia, użytkownik przechodził przez rotację albo przez ręczne Add-BitLockerKeyProtector podczas migracji dysku.
Krok 9 — Intune: compliance ≠ „klucz jest w chmurze”
Profil BitLocker w Intune ma kilka niezależnych sygnałów: czy szyfrowanie jest włączone, czy algorytm spełnia politykę, czy recovery password został zbackupowany do Entra. W konsoli MEM w raporcie urządzenia sekcja BitLocker bywa opóźniona o godziny — nie traktuj „brak wpisu” jako dowodu braku klucza, dopóki nie sprawdzisz bezpośrednio w Entra ID. Opóźnienie wynika z pipeline synchronizacji MDM → Windows → agenta raportującego; w incydencie masowym po CU lepiej oprzeć decyzję o eskalacji na Entra device blade, nie na ostatnim refreshu Intune z popołudnia.
Krok 10 — logi Windows po odblokowaniu (root cause, nie magia)
Po udanym recovery warto zebrać Microsoft-Windows-BitLocker/BitLocker Management z Podglądu zdarzeń: zdarzenia okolic 770 (backup do AD) i 775 (backup do Azure AD) mówią wprost, czy escrow się wykonał i czy był błąd sieciowy / certyfikatu do chmury. Jeśli widzisz powtarzający się błąd TLS do enterpriseregistration.windows.net, CA z SSL inspection na egress może tłuc backup klucza bez objawów w zwykłej przeglądarce — użytkownik i tak „ma internet”, bo port 443 działa, tylko konkretny chain nie przechodzi dla agenta MDM.
Krok 11 — role wbudowane vs custom role (żeby nie dawać Global Admin)
Microsoft wymienia m.in. Cloud Device Administrator i Helpdesk Administrator jako typowe role z dostępem do odczytu recovery password w Entra; dla MSP sensowniejszy jest custom role z minimalnym zestawem microsoft.directory/bitlockerKeys/key/read przypięty do AU według spółki czy kraju. Pamiętaj: każde nadanie roli z odczytem kluczy powinno iść przez ten sam ticket co numer zgłoszenia — inaczej audyt ISO 27001 pokaże „admin czytał klucze w piątek wieczorem bez powiązania z change”.
Krok 12 — Graph REST (gdy PowerShell modułu nie chcesz na stacji)
Endpoint GET https://graph.microsoft.com/v1.0/informationProtection/bitlocker/recoveryKeys?$filter=deviceId eq '{id}' zwraca metadane; pełny materiał klucza wymaga GET .../bitlocker/recoveryKeys/{key-id}?$select=key — dokładna składnia jest w dokumentacji bitlockerRecoveryKey resource. Automatyzacje typu „bot w Teams podaje klucz na komendę” są złe z punktu widzenia least privilege — jeśli już budujesz integrację, loguj client-request-id i koreluj z ticketem w narzędziu ITSM.
Typowe pułapki i edge cases
-
Urządzenie w Entra ma inną nazwę niż „naklejka na laptopie” —
displayNamepo rename w Windows aktualizuje się opóźniony; filtruj po recovery key ID, nie po nazwie z Excela inwentaryzacji sprzed roku. -
Scoped admin + Autopilot reuse — zgodnie z dokumentacją Microsoftu, po zmianie właściciela urządzenia klucze mogą być niewidoczne dla administratora z custom role przypiętej do AU; wtedy potrzebujesz operatora z pełniejszym zakresem albo procedury break-glass (nie chodzi o to, by obchodzić RBAC, tylko by mieć z góry wskazaną rolę „BitLocker escalation”).
-
Policy mismatch Hybrid AD Join — komputer jest hybrid joined, ale BitLocker backup idzie do AD DS zamiast Entra, bo MDM nie jest „authority”; helpdesk szuka w Entra i widzi pustkę. Rozwiązanie: albo popraw konfigurację backup target, albo ujednolicenie narzędzia odczytu (AD + narzędzie recovery password viewer).
-
KB z 2026 i PCR7 — publicznie opisywano fale fałszywych recovery po aktualizacjach, gdy Secure Boot / PCR binding raportowały się inaczej po CU (np. KB5083769 w ekosystemie Windows 11 w kwietniu 2026 — śledź komunikaty Microsoftu i release health). Jeśli macie GPO „Configure TPM platform validation profile for native UEFI firmware configurations” ustawione nietypowo, po CU może się zmienić zachowanie bez „grzechu” Intune.
-
„Klucz działał wczoraj” po rotacji Intune — technik wkleił stary klucz z maila; rotacja w Entra unieważnia poprzedni materiał. Zawsze pobieraj świeży rekord po
rotateBitLockerKeys. -
BitLocker Network Unlock — jeśli go używasz, recovery UI bywa mylące dla użytkownika; diagnostyka sieci (VLAN, PXE, availability KDS) to osobna gałąź, ale ticket wygląda identycznie jak „zły TPM”.
-
Double encryption / nested protectors po migracji Clonezilla — klon dysku z włączonym BL na innym sprzęcie często zostawia „martwe” protectory; recovery key ID na ekranie nie pokrywa się z żadnym rekordem w Entra, bo backup dotyczył poprzedniego TPM. Lekarstwo to świadoma reinicjalizacja z pełnym re-escrow po stronie MDM, nie wklejanie losowego klucza z innego laptopa.
Jak my to rozwiązujemy w Evolit
W Evolit spięcie ticketa helpdesku, inwentarza i tożsamości urządzenia w Entra robimy w Nexmie (nexma.app): użytkownik zgłasza problem w jednym flow, a technik widzi powiązane urządzenie i historię zgłoszeń zamiast szukać nazwy maszyny w trzech arkuszach. Nexma nie zastępuje Entra — nadal potrzebujesz roli z microsoft.directory/bitlockerKeys/key/read albo Helpdesk Administrator / Cloud Device Administrator zgodnie z modelem — ale eliminuje chaos „który to laptop Ani z księgowości” i zostawia ślad audytowy kto kiedy prosił o klucz. Alternatywnie całość da się prowadzić czysto w Entra + Service Desk + osobny CMDB, tylko kosztem czasu reakcji i większej liczby pomyłek przy identyfikacji urządzenia.
Drugim obszarem jest Nexma Agent przy problemach po odblokowaniu: zdalna diagnostyka protectorów i stanu MDM bez proszenia użytkownika o techniczne rzeczy, których nie rozumie — zamiast tego krótki consent i sesja z audytem zgodnym z polityką firmy.
Podsumowanie
- Recovery to proces procesowy + kryptograficzny: najpierw Recovery Key ID i weryfikacja tożsamości, potem dopiero klucz z Entra/AD.
Get-BitLockerVolumei listaKeyProtectormówią prawdę o stanie na dysku; Intune compliance tylko to odzwierciedla.- Escrow do Entra musisz mieć wymuszony polityką — inaczej helpdesk jest ślepy.
- Po incydencie rotuj klucz (
rotateBitLockerKeys/ automatyczna rotacja) i aktualizuj dokumentację. - Rozważ kontrolowany self-service przez
myaccount.microsoft.com, jeśli ryzyko akceptuje SecOps. - Publiczne regresje CU/TPM śledź w Windows release health — reaguje szybciej niż „wyłącz BitLockera i włącz z powrotem”.