Teilen über


Überwachen der Anwendungsanmeldeintegrität für mehr Resilienz

Richten Sie zum Erhöhen der Resilienz Ihrer Infrastruktur die Überwachung der Anwendungsanmeldeintegrität für Ihre kritischen Anwendungen ein. Sie können eine Benachrichtigung erhalten, wenn ein betroffener Vorfall eintritt. In diesem Artikel wird schrittweise das Einrichten der Arbeitsmappe „Anwendungsanmeldeintegrität“ zum Überwachen von möglichen Unterbrechungen bei Benutzeranmeldungen erläutert.

Sie können Warnungen basierend auf der Arbeitsmappe „Anwendungsanmeldeintegrität“ konfigurieren. Mithilfe dieser Arbeitsmappe können Administratoren Authentifizierungsanforderungen für Anwendungen in ihren Mandanten überwachen. Folgende Hauptfunktionen sind verfügbar:

  • Konfigurieren der Arbeitsmappe, um alle oder einzelne Apps in nahezu Echtzeit zu überwachen
  • Konfigurieren Sie Warnungen für veränderte Authentifizierungsmuster, damit Sie diese untersuchen und reagieren können.
  • Vergleichen Sie Trends über einen bestimmten Zeitraum hinweg. Der Vergleich mit der Vorwoche ist die Standardeinstellung der Arbeitsmappe.

Hinweis

Informationen zu allen verfügbaren Arbeitsmappen und den Voraussetzungen für deren Verwendung finden Sie unter Verwenden von Azure Monitor-Arbeitsmappen für Berichte.

Bei einem einschneidenden Ereignis können zwei Dinge passieren:

  • Die Anzahl der Anmeldungen für eine Anwendung kann steil abfallen, wenn Benutzer sich nicht anmelden können.
  • Die Anzahl der Anmeldefehler könnte sich erhöhen.

Voraussetzungen

Konfigurieren der Arbeitsmappe „Anwendungsanmeldeintegrität“

Um auf Arbeitsmappen im Azure-Portal zuzugreifen, wählen Sie Microsoft Entra ID und dann Arbeitsmappen aus.

Die Arbeitsmappen werden unter Nutzung, Bedingter Zugriff und Problembehandlung angezeigt. Die Arbeitsmappe „Anwendungsanmeldeintegrität“ wird im Abschnitt Integrität angezeigt. Nachdem Sie eine Arbeitsmappe verwendet haben, erscheint sie möglicherweise im Abschnitt Zuletzt geänderte Arbeitsmappen.

Sie können die Arbeitsmappe „Anwendungsanmeldeintegrität“ verwenden, um zu erkennen, was mit Ihren Anmeldungen geschieht. Wie im folgenden Screenshot zu sehen, zeigt die Arbeitsmappe zwei Diagramme.

Screenshot: Diagramme zur Anmeldeintegrität

Im vorherigen Screenshot gibt es zwei Diagramme:

  • Nutzung pro Stunde (Anzahl erfolgreicher Benutzer). Wenn Sie Ihre aktuelle Anzahl erfolgreicher Benutzer mit einer typischen Nutzungszeitraum vergleichen, können Sie einen Rückgang der Nutzung erkennen, der möglicherweise eine Untersuchung erfordert. Ein Abfall der Nutzungsrate mit erfolgreichen Anmeldungen kann beim Erkennen von Leistungs- und Auslastungsprobleme helfen, was mit der Fehlerrate nicht möglich ist. Wenn beispielsweise Benutzer Ihre Anwendung nicht erreichen können, um einen Anmeldeversuch auszuführen, tritt kein Fehler, sondern ein Abfall der Nutzungsrate auf. Sehen Sie sich die Beispielabfrage für diese Daten im nächsten Abschnitt dieses Artikels an.
  • Fehlerrate pro Stunde. Ein sprunghafter Anstieg der Fehlerquote könnte auf ein Problem mit Ihren Authentifizierungsmechanismen hinweisen. Das Fehlerrate-Measure wird nur angezeigt, wenn Benutzer versuchen können, sich zu authentifizieren. Wenn Benutzer keinen Zugriff erhalten, um einen Versuch zu unternehmen, treten auch keine Fehler auf.

Konfigurieren von Abfrage und Warnungen

Sie können Warnungsregeln in Azure Monitor erstellen und in regelmäßigen Abständen automatisch gespeicherte Abfragen oder benutzerdefinierte Protokollsuchen ausführen. Sie können eine Warnung konfigurieren, um eine bestimmte Gruppe zu benachrichtigen, wenn die Nutzungs- oder Fehlerrate einen angegebenen Schwellenwert überschreitet.

Erstellen Sie anhand der folgenden Anweisungen E-Mail-Warnungen, die auf den in den Diagrammen dargestellten Abfragen basieren. Die folgenden Beispielskripts senden unter folgenden Bedingungen E-Mail-Benachrichtigungen:

  • Die Nutzungsrate erfolgreicher Anmeldungen ist gegenüber der gleichen Stunde vor zwei Tagen um 90 % gefallen, wie im vorherigen Beispieldiagramm der Nutzung pro Stunde zu erkennen ist.
  • Die Fehlerrate ist gegenüber der gleichen Stunde vor zwei Tagen um 90 % gestiegen, wie im vorherigen Beispieldiagramm der Fehlerrate pro Stunde zu erkennen ist.

Führen Sie die folgenden Schritte aus, um die zugrunde liegende Abfrage zu konfigurieren und Warnungen festzulegen, indem Sie die Beispielabfrage als Basis für Ihre Konfiguration verwenden. Eine Beschreibung der Abfragestruktur finden Sie am Ende dieses Abschnitts. Erfahren Sie unter Protokollwarnungen verwalten, wie Sie Protokollwarnungen mithilfe von Azure Monitor erstellen, anzeigen und verwalten.

  1. Wählen Sie in der Arbeitsmappe Bearbeiten aus, wie im folgenden Screenshot gezeigt wird. Wählen Sie das Abfragesymbol in der rechten oberen Ecke des Diagramms aus.

    Screenshot: Bearbeiten der Arbeitsmappe

  2. Zeigen Sie das Abfrageprotokoll an, wie im folgenden Screenshot gezeigt.

    Screenshot: Abfrageprotokoll

  3. Kopieren Sie eines der folgenden Beispielskripts für eine neue Kusto-Abfrage.

  4. Fügen Sie die Abfrage in das Fenster ein. Klicken Sie auf Run (Ausführen). Suchen Sie nach der Meldung Abgeschlossen und den Abfrageergebnissen, wie im folgenden Screenshot gezeigt.

    Screenshot: Ergebnisse der ausgeführten Abfrage

  5. Heben Sie die Zelle hervor. Wählen Sie + Neue Warnungsregel aus.

    Screenshot: Bildschirm für neue Warnungsregel

  6. Konfigurieren Sie die Warnungsbedingungen. Wie im folgenden Beispiel-Screenshot gezeigt, wählen Sie im Abschnitt Bedingung unter Messung die Option Tabellenzeilen für Measure aus. Wählen Sie für Anzahl als Aggregationstyp aus. Wählen Sie 2 Tage als Aggregationsgranularität.

    Screenshot: Bildschirm zum Konfigurieren von Warnungen

    • Tabellenzeilen. Sie können die Anzahl der zurückgegebenen Zeilen für die Arbeit mit Ereignissen wie Windows-Ereignisprotokollen, Syslog und Anwendungsausnahmen verwenden.
    • Aggregationstyp. Datenpunkte, die mit Count angewendet werden.
    • Aggregationsgranularität. Dieser Wert definiert den Zeitraum, der mit der Häufigkeit der Auswertung funktioniert.
  7. Konfigurieren Sie unter Warnungslogik die Parameter, wie im Beispiel-Screenshot gezeigt wird.

    Screenshot, der den Bildschirm „Warnungslogik“ zeigt.

    • Schwellenwert: 0. Mit diesem Wert erfolgt eine Warnung bei allen Ergebnissen.
    • Häufigkeit der Auswertung:: 1 Stunde. Mit diesem Wert wird der Auswertungszeitraum auf einmal pro Stunde für die vorherige Stunde festgelegt.
  8. Konfigurieren Sie im Abschnitt Aktionen die Einstellungen, wie im Beispiel-Screenshot gezeigt wird.

    Screenshot, der den Bildschirm „Warnungsregel erstellen“ zeigt.

    • Wählen Sie Aktionsgruppe auswählen aus, und fügen Sie die Gruppe hinzu, für die Sie Warnungsbenachrichtigungen erhalten möchten.
    • Wählen Sie unter Aktionen anpassen die Option E-Mail-Benachrichtigungen aus.
    • Fügen Sie eine Betreffzeile hinzu.
  9. Konfigurieren Sie im Abschnitt Details die Einstellungen, wie im Beispiel-Screenshot gezeigt wird.

    Screenshot, der den Abschnitt „Details“ zeigt.

    • Fügen Sie ein Abonnement, einen Namen und eine Beschreibung hinzu.
    • Wählen Sie die Ressourcengruppe aus, der sie die Warnung hinzufügen möchten.
    • Wählen Sie den standardmäßigen Schweregrad.
    • Wählen Sie Bei Erstellung aktivieren aus, wenn Sie möchten, dass die Regel sofort live geschaltet werden soll. Wählen Sie andernfalls Aktionen stummschalten aus.
  10. Konfigurieren Sie im Abschnitt Überprüfen + Erstellen die Einstellungen aus, wie im Beispiel-Screenshot gezeigt wird.

    Screenshot, der den Abschnitt „Überprüfen + erstellen“ zeigt.

  11. Wählen Sie Speichern aus. Geben Sie einen Namen für die Abfrage ein. Wählen Sie unter Speichern unter die Option Abfrage aus. Wählen Sie Warnung als Kategorie aus. Wählen Sie erneut Speichern aus.

    Screenshot: Schaltfläche zum Speichern der Abfrage

Optimieren von Abfragen und Warnungen

Um Ihre Abfragen und Warnungen zu modifizieren, um maximale Effektivität zu erzielen, tun Sie Folgendes:

  • Testen Sie Warnungen immer.
  • Ändern Sie die Warnungsempfindlichkeit und -häufigkeit, damit Sie wichtige Benachrichtigungen erhalten. Administratoren können gegenüber Warnungen abstumpfen und Wichtiges übersehen, wenn sie zu viele von ihnen erhalten.
  • Fügen Sie im E-Mail-Client des Administrators die E-Mail-Adresse, von der die Warnungen kommen, zur Liste zulässiger Absender hinzu. Dieser Ansatz verhindert verpasste Benachrichtigungen aufgrund eines Spamfilters in ihren E-Mail-Clients.
  • Standardmäßig können Warnungsabfragen in Azure Monitor nur Ergebnisse aus den letzten 48 Stunden enthalten.

Beispielskripts

Kusto-Abfrage für Anstieg der Fehlerrate

In der folgenden Abfrage erkennen wir steigende Fehlerraten. Bei Bedarf können Sie unten das Verhältnis anpassen. Es stellt die prozentuale Veränderung des Datenverkehrs der letzten Stunde im Vergleich zum gestrigen Datenverkehr zur gleichen Zeit dar. Ein Ergebnis von 0,5 bedeutet einen Unterschied von 50 % hinsichtlich des Datenverkehrs.

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

Kusto-Abfrage für Nutzungsabfall

In der folgenden Abfrage vergleichen wir den Datenverkehr der letzten Stunde mit dem gestrigen Datenverkehr zur selben Zeit. Wir schließen Samstag, Sonntag und Montag aus, da wir große Variabilität im Datenverkehr des Vortags zur gleichen Zeit erwarten.

Bei Bedarf können Sie unten das Verhältnis anpassen. Es stellt die prozentuale Veränderung des Datenverkehrs der letzten Stunde im Vergleich zum gestrigen Datenverkehr zur gleichen Zeit dar. Ein Ergebnis von 0,5 bedeutet einen Unterschied von 50 % hinsichtlich des Datenverkehrs. Passen Sie diese Werte an Ihr Geschäftsmodell an.

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

Erstellen von Prozessen zum Verwalten von Warnungen

Nachdem Sie Abfragen und Warnungen eingerichtet haben, erstellen Sie Geschäftsprozesse, um die Warnungen zu verwalten.

  • Wer überwacht wann die Arbeitsmappe?
  • Wer untersucht Warnungen, wenn welche auftreten?
  • Welche Anforderungen gelten für die Kommunikation? Wer erstellt die Kommunikation? Wer empfängt sie?
  • Welche Geschäftsprozesse greifen bei einem Ausfall?

Nächste Schritte

Weitere Informationen zu Arbeitsmappen