Monitorování stavu přihlašování aplikací pro zajištění odolnosti
Pokud chcete zvýšit odolnost infrastruktury, nastavte monitorování stavu přihlašování aplikací pro důležité aplikace. Můžete obdržet upozornění, když dojde k ovlivnění incidentu. Tento článek vás provede nastavením sešitu stavu přihlašování k aplikaci, který monitoruje přerušení přihlašování uživatelů.
Výstrahy můžete nakonfigurovat na základě sešitu stavu přihlášení aplikace. Tento sešit umožňuje správcům monitorovat žádosti o ověřování pro aplikace ve svých tenantech. Poskytuje tyto klíčové funkce:
- Nakonfigurujte sešit tak, aby monitorovali všechny nebo jednotlivé aplikace s daty téměř v reálném čase.
- Nakonfigurujte upozornění na změny vzoru ověřování, abyste mohli prošetřit a reagovat.
- Porovnejte trendy v určitém časovém období. Týden po týdnu je výchozím nastavením sešitu.
Poznámka:
Podívejte se na všechny dostupné sešity a požadavky pro jejich použití v tématu Použití sešitů služby Azure Monitor pro sestavy.
Během události, která ovlivňuje, se můžou vyskytnout dvě věci:
- Počet přihlášení pro aplikaci se může náhle hodit, když se uživatelé nemůžou přihlásit.
- Počet neúspěšných přihlášení se může zvýšit.
Požadavky
- Tenant Microsoft Entra.
- Uživatel má přiřazenou alespoň roli Správce zabezpečení.
- Pracovní prostor služby Log Analytics ve vašem předplatném Azure pro odesílání protokolů do protokolů služby Azure Monitor. Zjistěte, jak vytvořit pracovní prostor služby Log Analytics.
- Protokoly Microsoft Entra integrované s protokoly služby Azure Monitor Zjistěte, jak integrovat protokoly přihlašování Microsoft Entra se službou Azure Monitor Stream.
Konfigurace sešitu stavu přihlašování k aplikaci
Pokud chcete získat přístup k sešitům na webu Azure Portal, vyberte Microsoft Entra ID a vyberte Sešity.
Sešity se zobrazují v části Využití, Podmíněný přístup a Řešení potíží. Sešit stavu přihlášení aplikace se zobrazí v části Stav . Po použití sešitu se může zobrazit v části Naposledy upravené sešity .
Pomocí sešitu stavu přihlašování k aplikaci můžete vizualizovat, co se děje s vašimi přihlášeními. Jak je znázorněno na následujícím snímku obrazovky, sešit obsahuje dva grafy.
Na předchozím snímku obrazovky jsou dva grafy:
- Hodinové využití (počet úspěšných uživatelů). Porovnání aktuálního počtu úspěšných uživatelů s typickým obdobím využití vám pomůže odhalit pokles využití, který může vyžadovat šetření. Pokles úspěšnosti využití může pomoct zjistit problémy s výkonem a využitím, které míra selhání nedokáže rozpoznat. Když se například uživatelé nemůžou spojit s vaší aplikací, aby se pokusili přihlásit, dojde k poklesu využití, ale žádné chyby. Podívejte se na ukázkový dotaz na tato data v další části tohoto článku.
- Hodinová míra selhání Špička v četnosti selhání může znamenat problém s mechanismy ověřování. Míry míry selhání se zobrazují jenom v případě, že se uživatelé mohou pokusit ověřit. Pokud uživatelé nemůžou získat přístup k pokusu, nedojde k žádným selháním.
Konfigurace dotazu a upozornění
V Azure Monitoru vytvoříte pravidla upozornění a můžete automaticky spouštět uložené dotazy nebo vlastní prohledávání protokolů v pravidelných intervalech. Můžete nakonfigurovat výstrahu, která upozorní konkrétní skupinu, když využití nebo míra selhání překročí zadanou prahovou hodnotu.
Pomocí následujících pokynů můžete vytvářet e-mailová upozornění na základě dotazů, které se projeví v grafech. Ukázkové skripty odesílají e-mailové oznámení v následujících případech:
- Úspěšné využití klesne před 90 % ze stejné hodiny před dvěma dny, jak je znázorněno v předchozím příkladu hodinového grafu využití.
- Míra selhání se zvyšuje o 90 % ze stejné hodiny před dvěma dny, jak je znázorněno v předchozím příkladu míry selhání po hodinách.
Pokud chcete nakonfigurovat základní dotaz a nastavit upozornění, proveďte následující kroky pomocí ukázkového dotazu jako základ pro vaši konfiguraci. Popis struktury dotazu se zobrazí na konci této části. Naučte se vytvářet, zobrazovat a spravovat upozornění protokolu pomocí služby Azure Monitor v části Správa upozornění protokolu.
V sešitu vyberte Upravit , jak je znázorněno na následujícím snímku obrazovky. Vyberte ikonu dotazu v pravém horním rohu grafu.
Zobrazte protokol dotazu, jak je znázorněno na následujícím snímku obrazovky.
Zkopírujte jeden z následujících ukázkových skriptů pro nový dotaz Kusto.
Vložte dotaz do okna. Vyberte Spustit. Vyhledejte zprávu Dokončeno a výsledky dotazu, jak je znázorněno na následujícím snímku obrazovky.
Zvýrazněte dotaz. Vyberte + Nové pravidlo upozornění.
Nakonfigurujte podmínky upozornění. Jak je znázorněno na následujícím příkladu snímku obrazovky, v části Podmínka v části Měření vyberte řádky tabulky pro míru. Vyberte Počet pro typ agregace. Vyberte 2 dny pro členitost agregace.
- Řádky tabulky Počet vrácených řádků můžete použít k práci s událostmi, jako jsou protokoly událostí Systému Windows, Syslog a výjimky aplikací.
- Typ agregace Datové body použité s počtem
- Členitost agregace Tato hodnota definuje období, které funguje s frekvencí vyhodnocení.
V logice upozornění nakonfigurujte parametry, jak je znázorněno na ukázkovém snímku obrazovky.
- Prahová hodnota: 0. Tato hodnota upozorní na všechny výsledky.
- Frekvence vyhodnocení: 1 hodina. Tato hodnota nastaví zkušební období na jednou za hodinu za předchozí hodinu.
V části Akce nakonfigurujte nastavení, jak je znázorněno na ukázkovém snímku obrazovky.
- Vyberte skupinu akcí a přidejte skupinu, pro kterou chcete dostávat upozornění.
- V části Přizpůsobit akce vyberte E-mailová upozornění.
- Přidejte řádek předmětu.
V části Podrobnosti nakonfigurujte nastavení, jak je znázorněno na ukázkovém snímku obrazovky.
- Přidejte název předplatného a popis.
- Vyberte skupinu prostředků, do které chcete výstrahu přidat.
- Vyberte výchozí závažnost.
- Pokud chcete, aby se hned rozběhne, vyberte Povolit při vytváření . V opačném případě vyberte Ztlumit akce.
V části Zkontrolovat a vytvořit nakonfigurujte nastavení, jak je znázorněno na ukázkovém snímku obrazovky.
Zvolte Uložit. Zadejte název dotazu. Jako možnost Uložit jako vyberte Dotaz. V kategorii vyberte Výstraha. Znovu vyberte Uložit.
Upřesnění dotazů a upozornění
Úprava dotazů a upozornění pro maximální efektivitu:
- Upozornění vždy testujte.
- Upravte citlivost a frekvenci upozornění, abyste dostávali důležitá oznámení. Správci se můžou znecitlivět na výstrahy a zmeškat něco důležitého, pokud jich dostane příliš mnoho.
- V e-mailových klientech správce přidejte e-mail, ze kterého přicházejí výstrahy do seznamu povolených odesílatelů. Tento přístup brání zmeškaným oznámením kvůli filtru spamu u svých e-mailových klientů.
- Dotazy na výstrahy ve službě Azure Monitor mohou záměrně zahrnovat pouze výsledky za posledních 48 hodin.
Ukázkové skripty
Dotaz Kusto pro zvýšení míry selhání
V následujícím dotazu zjistíme rostoucí míru selhání. Podle potřeby můžete upravit poměr v dolní části. Představuje procentuální změnu provozu za poslední hodinu v porovnání s včerejším provozem najednou. Výsledek 0,5 označuje 50% rozdíl v provozu.
let today = SigninLogs
| where TimeGenerated > ago(1h) // Query failure rate in the last hour
| project TimeGenerated, UserPrincipalName, AppDisplayName, status = case(Status.errorCode == "0", "success", "failure")
// Optionally filter by a specific application
//| where AppDisplayName == **APP NAME**
| summarize success = countif(status == "success"), failure = countif(status == "failure") by bin(TimeGenerated, 1h) // hourly failure rate
| project TimeGenerated, failureRate = (failure * 1.0) / ((failure + success) * 1.0)
| sort by TimeGenerated desc
| serialize rowNumber = row_number();
let yesterday = SigninLogs
| where TimeGenerated between((ago(1h) – totimespan(1d))..(now() – totimespan(1d))) // Query failure rate at the same time yesterday
| project TimeGenerated, UserPrincipalName, AppDisplayName, status = case(Status.errorCode == "0", "success", "failure")
// Optionally filter by a specific application
//| where AppDisplayName == **APP NAME**
| summarize success = countif(status == "success"), failure = countif(status == "failure") by bin(TimeGenerated, 1h) // hourly failure rate at same time yesterday
| project TimeGenerated, failureRateYesterday = (failure * 1.0) / ((failure + success) * 1.0)
| sort by TimeGenerated desc
| serialize rowNumber = row_number();
today
| join (yesterday) on rowNumber // join data from same time today and yesterday
| project TimeGenerated, failureRate, failureRateYesterday
// Set threshold to be the percent difference in failure rate in the last hour as compared to the same time yesterday
// Day variable is the number of days since the previous Sunday. Optionally ignore results on Sat, Sun, and Mon because large variability in traffic is expected.
| extend day = dayofweek(now())
| where day != time(6.00:00:00) // exclude Sat
| where day != time(0.00:00:00) // exclude Sun
| where day != time(1.00:00:00) // exclude Mon
| where abs(failureRate – failureRateYesterday) > 0.5
Dotaz Kusto pro pokles využití
V následujícím dotazu porovnáváme provoz za poslední hodinu s včerejším provozem ve stejnou dobu. Vyloučíme sobotu, neděli a pondělí, protože ve stejnou dobu očekáváme velkou variabilitu provozu předchozího dne.
Podle potřeby můžete upravit poměr v dolní části. Představuje procentuální změnu provozu za poslední hodinu v porovnání s včerejším provozem najednou. Výsledek 0,5 označuje 50% rozdíl v provozu. Upravte tyto hodnoty tak, aby odpovídaly modelu obchodních operací.
Let today = SigninLogs // Query traffic in the last hour
| where TimeGenerated > ago(1h)
| project TimeGenerated, AppDisplayName, UserPrincipalName
// Optionally filter by AppDisplayName to scope query to a single application
//| where AppDisplayName contains "Office 365 Exchange Online"
| summarize users = dcount(UserPrincipalName) by bin(TimeGenerated, 1hr) // Count distinct users in the last hour
| sort by TimeGenerated desc
| serialize rn = row_number();
let yesterday = SigninLogs // Query traffic at the same hour yesterday
| where TimeGenerated between((ago(1h) – totimespan(1d))..(now() – totimespan(1d))) // Count distinct users in the same hour yesterday
| project TimeGenerated, AppDisplayName, UserPrincipalName
// Optionally filter by AppDisplayName to scope query to a single application
//| where AppDisplayName contains "Office 365 Exchange Online"
| summarize usersYesterday = dcount(UserPrincipalName) by bin(TimeGenerated, 1hr)
| sort by TimeGenerated desc
| serialize rn = row_number();
today
| join // Join data from today and yesterday together
(
yesterday
)
on rn
// Calculate the difference in number of users in the last hour compared to the same time yesterday
| project TimeGenerated, users, usersYesterday, difference = abs(users – usersYesterday), max = max_of(users, usersYesterday)
| extend ratio = (difference * 1.0) / max // Ratio is the percent difference in traffic in the last hour as compared to the same time yesterday
// Day variable is the number of days since the previous Sunday. Optionally ignore results on Sat, Sun, and Mon because large variability in traffic is expected.
| extend day = dayofweek(now())
| where day != time(6.00:00:00) // exclude Sat
| where day != time(0.00:00:00) // exclude Sun
| where day != time(1.00:00:00) // exclude Mon
| where ratio > 0.7 // Threshold percent difference in sign-in traffic as compared to same hour yesterday
Vytváření procesů pro správu výstrah
Po nastavení dotazů a upozornění vytvořte obchodní procesy pro správu výstrah.
- Kdo monitoruje sešit a kdy?
- Když dojde k upozorněním, kdo je prošetří?
- Jaké jsou potřeby komunikace? Kdo vytváří komunikaci a kdo je obdrží?
- Kdy dojde k výpadku, jaké obchodní procesy se použijí?
Další kroky
Další informace o sešitech