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:
- Scoperta (Discovery) - restituire lo snmpEngineID del motore autorevole
- Sincronizzazione temporale (Time synchronization) - restituire i valori temporali correnti del motore
- 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 supportatiusmStatsNotInTimeWindows- Messaggi al di fuori della finestra temporaleusmStatsUnknownUserNames- Messaggi con nomi utente sconosciutiusmStatsUnknownEngineIDs- Messaggi con ID motore sconosciutiusmStatsWrongDigests- Messaggi con digest di autenticazione erratiusmStatsDecryptionErrors- 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:
- L'oggetto contatore delle statistiche USM appropriato
- Il valore corrente di quel contatore
- 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
usmStatsNotInTimeWindowsper 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:
-
noAuthNoPriv - Utilizzato per:
- Scoperta (engineID sconosciuto)
- Fallimenti di sincronizzazione temporale
- Nomi utente sconosciuti
-
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:
-
Risposta di scoperta: Se il rapporto contiene
usmStatsUnknownEngineIDse il varBind contiene un engineID non zero, l'applicazione ha scoperto con successo l'identità del motore autorevole. -
Risposta di sincronizzazione temporale: Se il rapporto contiene
usmStatsNotInTimeWindows, l'applicazione dovrebbe estrarremsgAuthoritativeEngineBootsemsgAuthoritativeEngineTimedai securityParameters e aggiornare la sua cache locale. -
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)
-
Evitare tempeste di rapporti: Le implementazioni dovrebbero limitare la velocità o sopprimere la generazione di rapporti per prevenire la congestione della rete.
-
Registrare i rapporti: I rapporti relativi alla sicurezza dovrebbero essere registrati per l'audit e l'analisi della sicurezza.
-
Feedback utente: Le applicazioni dovrebbero fornire un feedback chiaro agli utenti quando i rapporti indicano fallimenti di autenticazione o autorizzazione.
-
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.