Share via


Monitoraggio dell'integrità dell'accesso dell'applicazione per la resilienza

Per aumentare la resilienza dell'infrastruttura, configurare il monitoraggio dell'integrità dell'accesso delle applicazioni per le applicazioni critiche. È possibile ricevere un avviso quando si verifica un evento imprevisto. Questo articolo illustra come configurare la cartella di lavoro integrità dell'accesso dell'app per monitorare le interruzioni degli accessi degli utenti.

È possibile configurare gli avvisi in base alla cartella di lavoro integrità dell'accesso dell'app. Questa cartella di lavoro consente agli amministratori di monitorare le richieste di autenticazione per le applicazioni nei tenant. Offre queste funzionalità chiave:

  • Configurare la cartella di lavoro per monitorare tutte le app o le singole app con dati quasi in tempo reale.
  • Configurare gli avvisi per le modifiche al modello di autenticazione in modo da poter analizzare e rispondere.
  • Confrontare le tendenze in un periodo di tempo. Settimana su settimana è l'impostazione predefinita della cartella di lavoro.

Nota

Vedere tutte le cartelle di lavoro disponibili e i prerequisiti per usarle in Come usare le cartelle di lavoro di Monitoraggio di Azure per i report.

Durante un evento che influisce, possono verificarsi due cose:

  • Il numero di accessi per un'applicazione può diminuire bruscamente quando gli utenti non possono accedere.
  • Il numero di errori di accesso potrebbe aumentare.

Prerequisiti

Configurare la cartella di lavoro integrità dell'accesso dell'app

Per accedere alle cartelle di lavoro nel portale di Azure, selezionare Microsoft Entra ID, selezionare Cartelle di lavoro. Lo screenshot seguente mostra la raccolta cartelle di lavoro nella portale di Azure.

Screenshot che mostra la raccolta cartelle di lavoro nel portale di Azure.

Le cartelle di lavoro vengono visualizzate in Utilizzo, Accesso condizionale e Risoluzione dei problemi. La cartella di lavoro Integrità accesso app viene visualizzata nella sezione Integrità. Dopo aver usato una cartella di lavoro, potrebbe essere visualizzata nella sezione Cartelle di lavoro modificate di recente.

È possibile usare la cartella di lavoro integrità dell'accesso dell'app per visualizzare le operazioni eseguite con gli accessi. Come illustrato nello screenshot seguente, la cartella di lavoro presenta due grafici.

Screenshot che mostra i grafici di integrità dell'accesso.

Nello screenshot precedente sono disponibili due grafici:

  • Utilizzo orario (numero di utenti riusciti). Il confronto tra il numero corrente di utenti riusciti e un periodo di utilizzo tipico consente di individuare un calo dell'utilizzo che potrebbe richiedere un'indagine. Una riduzione della frequenza di utilizzo riuscita può aiutare a rilevare i problemi di prestazioni e utilizzo che la frequenza di errore non è in grado di rilevare. Ad esempio, quando gli utenti non riescono a raggiungere l'applicazione per tentare di accedere, si verifica un calo dell'utilizzo, ma non si verificano errori. Vedere la query di esempio per questi dati nella sezione successiva di questo articolo.
  • Frequenza oraria degli errori. Un picco di frequenza degli errori potrebbe indicare un problema con i meccanismi di autenticazione. Le misure di frequenza degli errori vengono visualizzate solo quando gli utenti possono tentare di eseguire l'autenticazione. Quando gli utenti non possono ottenere l'accesso per effettuare il tentativo, non ci sono errori.

Configurare la query e gli avvisi

È possibile creare regole di avviso in Monitoraggio di Azure ed eseguire automaticamente query salvate o ricerche di log personalizzate a intervalli regolari. È possibile configurare un avviso che notifica a un gruppo specifico quando la frequenza di utilizzo o di errore supera una soglia specificata.

Usare le istruzioni seguenti per creare avvisi di posta elettronica in base alle query riflesse nei grafici. Gli script di esempio inviano una notifica tramite posta elettronica quando:

  • L'utilizzo riuscito scende del 90% rispetto alla stessa ora due giorni fa, come illustrato nell'esempio di grafico relativo all'utilizzo orario precedente.
  • Il tasso di errore aumenta del 90% rispetto alla stessa ora due giorni fa, come illustrato nell'esempio di tasso di errore orario precedente.

Per configurare la query sottostante e impostare gli avvisi, completare i passaggi seguenti usando la query di esempio come base per la configurazione. La descrizione della struttura di query viene visualizzata alla fine di questa sezione. Informazioni su come creare, visualizzare e gestire gli avvisi dei log usando Monitoraggio di Azure in Gestire gli avvisi dei log.

  1. Nella cartella di lavoro selezionare Modifica come illustrato nello screenshot seguente. Selezionare l'icona della query nell'angolo superiore destro del grafico.

    Screenshot che mostra la modifica della cartella di lavoro.

  2. Visualizzare il log delle query come illustrato nello screenshot seguente.

    Screenshot che mostra il log delle query.

  3. Copiare uno degli script di esempio seguenti per una nuova query Kusto.

  4. Incollare la query nella finestra. Selezionare Esegui. Cercare il messaggio Completato e i risultati della query, come illustrato nello screenshot seguente.

    Screenshot che mostra i risultati della query di esecuzione.

  5. Evidenziare la query. Selezionare + Nuova regola di avviso.

    Screenshot che mostra la schermata della nuova regola di avviso.

  6. Configurare le condizioni di avviso. Come illustrato nello screenshot di esempio seguente, nella sezione Condizione, in Misurazione selezionare Righe tabella per Misura. Selezionare Conteggio per Tipo di aggregazione. Selezionare 2 giorni per Granularità aggregazione.

    Screenshot che mostra la schermata di configurazione degli avvisi.

    • Righe di tabella. È possibile usare il numero di righe restituite per funzionare con eventi quali registri eventi di Windows, Syslog ed eccezioni dell'applicazione.
    • Tipo di aggregazione. Punti dati applicati con Count.
    • Granularità delle aggregazioni. Questo valore definisce il periodo che funziona con Frequenza di valutazione.
  7. In Logica di avviso configurare i parametri come illustrato nello screenshot di esempio.

    Screenshot che mostra la schermata della logica degli avvisi.

    • Valore soglia: 0. Questo valore avvisa su tutti i risultati.
    • Frequenza di valutazione: 1 ora. Questo valore imposta il periodo di valutazione su una volta all'ora per l'ora precedente.
  8. Nella sezione Azioni configurare le impostazioni come illustrato nello screenshot di esempio.

    Screenshot che mostra la schermata Crea una regola di avviso.

    • Selezionare Seleziona gruppo di azioni e aggiungere il gruppo per cui si desidera ricevere notifiche di avviso.
    • In Personalizza azioni selezionare Avvisi di posta elettronica.
    • Aggiungere una riga dell'oggetto.
  9. Nella sezione Dettagli configurare le impostazioni come illustrato nello screenshot di esempio.

    Screenshot che mostra la sezione Dettagli.

    • Aggiungere un nome sottoscrizione e una descrizione.
    • Selezionare il gruppo di risorse a cui si vuole aggiungere l'avviso.
    • Selezionare la gravità predefinita.
    • Selezionare Abilita al momento della creazione se si vuole che venga attivata immediatamente. In caso contrario, selezionare Disattiva azioni.
  10. Nella sezione Rivedi e crea configurare le impostazioni come illustrato nello screenshot di esempio.

    Screenshot che mostra la sezione Rivedi e crea.

  11. Seleziona Salva. Immettere un nome per la query. Per Salva con nome selezionare Query. Per Categoria selezionare Avviso. Selezionare di nuovo Salva.

    Screenshot che mostra il pulsante Salva query.

Ridefinire le query e gli avvisi

Per modificare le query e gli avvisi per ottenere la massima efficacia:

  • Testare sempre gli avvisi.
  • Modificare la sensibilità e la frequenza degli avvisi per ricevere notifiche importanti. Amministrazione possono diventare desensibili agli avvisi e perdere qualcosa di importante se ottengono troppi.
  • Nei client di posta elettronica dell'amministratore aggiungere il messaggio di posta elettronica da cui provengono gli avvisi all'elenco dei mittenti consentiti. Questo approccio impedisce le notifiche perse a causa di un filtro di posta indesiderata nei client di posta elettronica.
  • Per impostazione predefinita, le query di avviso in Monitoraggio di Azure possono includere solo i risultati delle ultime 48 ore.

Script di esempio

Query Kusto per aumentare la frequenza di errori

Nella query seguente viene rilevato un aumento delle percentuali di errore. Se necessario, è possibile regolare il rapporto in basso. Rappresenta la percentuale di variazione del traffico nell'ultima ora rispetto al traffico di ieri contemporaneamente. Un risultato 0,5 indica una differenza del 50% nel traffico.

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

Query Kusto per l'eliminazione dell'utilizzo

Nella query seguente il traffico dell'ultima ora viene confrontato contemporaneamente con il traffico di ieri. Escludiamo sabato, domenica e lunedì perché ci aspettiamo una grande variabilità nel traffico del giorno precedente contemporaneamente.

Se necessario, è possibile regolare il rapporto in basso. Rappresenta la percentuale di variazione del traffico nell'ultima ora rispetto al traffico di ieri contemporaneamente. Un risultato 0,5 indica una differenza del 50% nel traffico. Modificare questi valori in base al modello operativo aziendale.

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

Creare processi per gestire gli avvisi

Dopo aver configurato query e avvisi, creare processi aziendali per gestire gli avvisi.

  • Chi monitora la cartella di lavoro e quando?
  • Quando si verificano avvisi, chi li esamina?
  • Quali sono le esigenze di comunicazione? Chi crea le comunicazioni e chi le riceve?
  • Quando si verifica un'interruzione, quali processi aziendali si applicano?

Passaggi successivi

Altre informazioni sulle cartelle di lavoro