Monitorowanie wygasania sekretów rejestracji aplikacji w Azure: dlaczego musisz zbudować własne rozwiązanie

Rejestracje aplikacji w Azure (App Registrations) napędzają interfejsy API, automatyzację, potoki CI/CD, zadania w tle i integracje — a wiele z nich nadal opiera się na sekretach klienta.

Poradniki Azure Microsoft 3 min czytania

Monitorowanie wygasania sekretów rejestracji aplikacji w Azure: dlaczego musisz zbudować własne rozwiązanie

Rejestracje aplikacji w Azure (App Registrations) napędzają interfejsy API, automatyzację, potoki CI/CD, zadania w tle i integracje — a wiele z nich nadal opiera się na sekretach klienta.

Oto niewygodna prawda:

❌ Brak natywnych alertów
❌ Brak pulpitów nawigacyjnych
❌ Brak powiadomień o wygaśnięciu

Gdy sekret klienta wygaśnie, aplikacja przestaje działać po cichu — a zespoły zwykle odkrywają to dopiero po awarii.


Dlaczego to realne ryzyko operacyjne

Sekrety klienta:

  • Zawsze mają daty wygaśnięcia
  • Często są tworzone jednorazowo i zapominane
  • Wygasają po cichu

Typowe skutki:

  • Interfejsy API zwracają błędy uwierzytelniania
  • Zadania w tle przestają działać
  • Potoki automatyzacji przestają działać
  • Procesy biznesowe zawodzą bez ostrzeżenia

Ponieważ Azure domyślnie nie wysyła alertów, staje się to powracającym problemem operacyjnym.


Dlaczego Azure nie wysyła alertów

Azure Monitor i Entra ID obecnie nie udostępniają:

  • Natywnych alertów dotyczących wygasania sekretów rejestracji aplikacji
  • Metryk, które można by podłączyć bezpośrednio do Azure Monitor

Portal Azure pokazuje daty wygaśnięcia — ale:

  • Wymaga ręcznego sprawdzania
  • Nie skaluje się na wiele dzierżaw (tenantów)
  • Nikogo nie powiadamia

Jeśli chcesz proaktywnego monitorowania, musisz zbudować je samodzielnie.


Jak wygląda właściwe rozwiązanie

Niezawodne rozwiązanie monitorujące powinno:

  • Bezpiecznie uwierzytelniać się (tylko aplikacja, w oparciu o certyfikat)
  • Odpytywać wszystkie rejestracje aplikacji
  • Oceniać wszystkie sekrety każdej aplikacji
  • Klasyfikować je jako:
    • Wygasłe
    • Wkrótce wygasające (np. ≤30 dni)
    • Prawidłowe
  • Generować jeden przejrzysty zbiorczy alert
  • Zawierać informacje umożliwiające działanie

Przegląd rozwiązania

Zalecane podejście wykorzystuje:

  • Microsoft Graph PowerShell SDK (Azure AD Graph jest wycofywany)
  • Uwierzytelnianie tylko aplikacji (w oparciu o certyfikat)
  • PowerShell do automatyzacji i przenośności
  • E-mail / Teams / logowanie do alertowania

Poniżej znajduje się oczyszczony przykład głównej logiki.


Szablon skryptu (przykład)

⚠️ To jest szablon — zastąp symbole zastępcze wartościami dla swojego środowiska.

#Requires -Modules Az.Accounts, Microsoft.Graph.Authentication, Microsoft.Graph.Applications

$WarningDays = 30

# Uwierzytelnienie w Microsoft Graph (tylko aplikacja, w oparciu o certyfikat)
Connect-MgGraph `
    -TenantId "<TENANT-ID>" `
    -ClientId "<APP-ID>" `
    -CertificateThumbprint "<CERT-THUMBPRINT>"

$ExpiredSecrets = @()
$ExpiringSoon   = @()

# Pobranie wszystkich rejestracji aplikacji z sekretami
$apps = Get-MgApplication -All -Property displayName,appId,passwordCredentials

foreach ($app in $apps) {
    foreach ($cred in $app.PasswordCredentials) {

        if (-not $cred.EndDateTime) { continue }

        $end  = [datetimeoffset]$cred.EndDateTime
        $now  = [datetimeoffset]::UtcNow
        $days = ($end - $now).Days

        if ($days -lt 0) {
            $ExpiredSecrets += [pscustomobject]@{
                Application = $app.DisplayName
                AppId       = $app.AppId
                KeyId       = $cred.KeyId
                ExpiredDays = [math]::Abs($days)
                EndDateUtc  = $end.UtcDateTime
            }
        }
        elseif ($days -le $WarningDays) {
            $ExpiringSoon += [pscustomobject]@{
                Application = $app.DisplayName
                AppId       = $app.AppId
                KeyId       = $cred.KeyId
                DaysLeft    = $days
                EndDateUtc  = $end.UtcDateTime
            }
        }
    }
}

# Stąd możesz:
# - wysłać e-mail w formacie HTML
# - opublikować wiadomość w Teams / Slack
# - zapisać dane w Log Analytics
# - wyeksportować plik CSV na potrzeby audytu

Najlepsze praktyki alertowania

Z doświadczeń z rzeczywistych środowisk najlepiej sprawdzają się:

  • Jeden zbiorczy alert na jedno uruchomienie (unikaj szumu)
  • 30-dniowe okno ostrzegawcze
  • Jasne przypisanie odpowiedzialności (nazwa aplikacji + AppId)
  • Wynik umożliwiający działanie (co dokładnie trzeba odnowić)

Zalecenia dotyczące bezpieczeństwa

✔ Preferuj uwierzytelnianie oparte na certyfikatach
✔ Nigdy nie przechowuj sekretów w kodzie
✔ Usuwaj stare sekrety po rotacji
✔ Uruchamiaj kontrole codziennie lub co tydzień
✔ Traktuj rotację sekretów jako standardowe zadanie operacyjne


Najważniejszy wniosek

Wygaśnięcie sekretu klienta jest pewne, a nie przypadkiem granicznym.

Azure dostarcza elementy składowe — nie monitorowanie.

Łącząc:

  • Microsoft Graph
  • PowerShell
  • Prostą logikę alertowania

możesz wyeliminować jedną z najczęstszych i najłatwiejszych do uniknięcia awarii w Azure i zamienić ją w przewidywalny, zarządzalny proces.

Blog