Passa al contenuto principale

11.4. Use of Reports (Uso dei rapporti)

11.4. Use of Reports (Uso dei rapporti)​

Questa sezione descrive come l'USM utilizza il meccanismo di rapporto (Report) SNMP per comunicare errori e altre informazioni.

Report PDU (PDU di rapporto)​

Il PDU di rapporto (Report PDU), definito in [RFC3416], è utilizzato dall'USM per restituire informazioni sugli errori che si sono verificati durante l'elaborazione dei messaggi. I rapporti sono particolarmente importanti per:

  1. Scoperta (Discovery) - restituire lo snmpEngineID del motore autorevole
  2. Sincronizzazione temporale (Time synchronization) - restituire i valori temporali correnti del motore
  3. Notifica di errore (Error notification) - indicare errori di autenticazione, privacy o altri errori correlati alla sicurezza

USM Statistics (Statistiche USM)​

L'USM mantiene diversi contatori che tracciano varie condizioni di errore. Questi contatori sono definiti nel gruppo usmStats del modulo MIB (sezione 5):

  • usmStatsUnsupportedSecLevels - Messaggi con livelli di sicurezza non supportati
  • usmStatsNotInTimeWindows - Messaggi al di fuori della finestra temporale
  • usmStatsUnknownUserNames - Messaggi con nomi utente sconosciuti
  • usmStatsUnknownEngineIDs - Messaggi con ID motore sconosciuti
  • usmStatsWrongDigests - Messaggi con digest di autenticazione errati
  • usmStatsDecryptionErrors - Messaggi con errori di decrittazione

Report Generation (Generazione di rapporti)​

Quando l'USM rileva un errore durante l'elaborazione di messaggi in ingresso, PUÒ (MAY) generare un Report-PDU contenente:

  1. L'oggetto contatore delle statistiche USM appropriato
  2. Il valore corrente di quel contatore
  3. Il msgID rilevante dal messaggio ricevuto (per l'abbinamento)

Considerazioni importanti:

  • I rapporti NON vengono sempre generati per ogni errore. La decisione dipende dal livello di sicurezza e dal tipo di errore.
  • I rapporti per determinati errori (come usmStatsNotInTimeWindows per la scoperta) sono utilizzati in modo costruttivo.
  • I rapporti NON DEVONO (MUST NOT) essere inviati in risposta a un altro rapporto per evitare cicli infiniti.

Security Levels for Reports (Livelli di sicurezza per i rapporti)​

I rapporti vengono inviati con livelli di sicurezza variabili a seconda dell'errore:

  1. noAuthNoPriv - Utilizzato per:

    • Scoperta (engineID sconosciuto)
    • Fallimenti di sincronizzazione temporale
    • Nomi utente sconosciuti
  2. Uguale alla richiesta - Utilizzato per:

    • Fallimenti di autenticazione (digest errato)
    • Errori di decrittazione
    • Errori fuori finestra temporale (dopo la sincronizzazione)

Report Reception (Ricezione di rapporti)​

Quando un generatore di comandi o un iniziatore di notifiche riceve un Report-PDU:

  1. Risposta di scoperta: Se il rapporto contiene usmStatsUnknownEngineIDs e il varBind contiene un engineID non zero, l'applicazione ha scoperto con successo l'identità del motore autorevole.

  2. Risposta di sincronizzazione temporale: Se il rapporto contiene usmStatsNotInTimeWindows, l'applicazione dovrebbe estrarre msgAuthoritativeEngineBoots e msgAuthoritativeEngineTime dai securityParameters e aggiornare la sua cache locale.

  3. Indicazione di errore: Per altri tipi di rapporti, l'applicazione dovrebbe trattare il rapporto come un'indicazione che la richiesta originale è fallita per il motivo specificato.

Report Handling Best Practices (Migliori pratiche di gestione dei rapporti)​

  1. Evitare tempeste di rapporti: Le implementazioni dovrebbero limitare la velocità o sopprimere la generazione di rapporti per prevenire la congestione della rete.

  2. Registrare i rapporti: I rapporti relativi alla sicurezza dovrebbero essere registrati per l'audit e l'analisi della sicurezza.

  3. Feedback utente: Le applicazioni dovrebbero fornire un feedback chiaro agli utenti quando i rapporti indicano fallimenti di autenticazione o autorizzazione.

  4. Errori di finestra temporale: Dopo diversi rapporti usmStatsNotInTimeWindows, le implementazioni dovrebbero sospettare uno scostamento dell'orologio e possono richiedere un intervento manuale.

Privacy and Reports (Privacy e rapporti)​

I rapporti generati in risposta a messaggi con privacy possono richiedere una gestione speciale:

  • Se la decrittazione fallisce, il rapporto dovrebbe indicare usmStatsDecryptionErrors.
  • Il rapporto stesso dovrebbe essere inviato con lo stesso livello di sicurezza richiesto nel messaggio originale, se possibile.
  • Se il livello di sicurezza non può essere determinato (ad esempio, a causa di grave corruzione del messaggio), il rapporto dovrebbe essere inviato con noAuthNoPriv.