3. Elements of the Architecture (Elementi dell'architettura)
3. Elements of the Architecture (Elementi dell'architettura)
Questa sezione descrive gli elementi che compongono l'architettura SNMP. L'architettura è progettata attorno al concetto di un motore SNMP, che fornisce servizi a una o più applicazioni SNMP.
3.1. The Naming of Entities (La denominazione delle entità)
Diversi tipi di entità sono identificati all'interno dell'architettura:
-
Motore SNMP: Un'implementazione dei servizi definiti in questa architettura. Un motore SNMP fornisce servizi di elaborazione dei messaggi, sicurezza e controllo degli accessi.
-
Entità SNMP: Un motore SNMP più una o più applicazioni SNMP. Un'entità SNMP può agire come agente, manager o entrambi.
-
Agente SNMP: Un'entità SNMP che fornisce accesso alle informazioni di gestione. Un agente tipicamente viene eseguito su un dispositivo gestito.
-
Manager SNMP: Un'entità SNMP che avvia richieste SNMP ed elabora risposte e notifiche SNMP. Un manager tipicamente viene eseguito su una stazione di gestione.
3.1.1. SNMP engine (Motore SNMP)
Un motore SNMP è un'implementazione dei servizi di elaborazione dei messaggi, sicurezza e controllo degli accessi SNMP. Un motore SNMP è identificato univocamente da uno snmpEngineID.
3.1.1.1. snmpEngineID
Lo snmpEngineID è un OCTET STRING che identifica univocamente un motore SNMP. Lo snmpEngineID è assegnato amministrativamente e dovrebbe essere scelto per essere unico tra tutti i motori SNMP nella rete.
Il formato dello snmpEngineID è progettato per garantire l'unicità. Tipicamente include un numero di impresa e informazioni identificative aggiuntive come un indirizzo MAC, indirizzo IP o valore assegnato amministrativamente.
Lo snmpEngineID serve diversi scopi importanti:
- Identifica il motore SNMP che ha originato un messaggio
- Identifica il motore SNMP i cui oggetti gestiti vengono accessibili
- Serve come chiave per le informazioni di sicurezza
- Serve come chiave per i parametri di sicurezza localizzati
3.1.1.2. Dispatcher
Il dispatcher è responsabile di:
- Ricevere messaggi dalla rete e determinare la versione del messaggio
- Instradare messaggi al modello di elaborazione dei messaggi appropriato
- Instradare PDU all'applicazione SNMP appropriata
- Inviare messaggi alla rete
Il dispatcher fornisce interfacce di servizio astratte alle applicazioni e ai sottosistemi del motore SNMP.
3.1.1.3. Message Processing Subsystem (Sottosistema di elaborazione dei messaggi)
Il sottosistema di elaborazione dei messaggi è responsabile della preparazione dei messaggi per la trasmissione e dell'estrazione dei dati dai messaggi ricevuti.
Il sottosistema di elaborazione dei messaggi può contenere più modelli di elaborazione dei messaggi. Ogni modello di elaborazione dei messaggi definisce un formato di messaggio e le procedure per elaborare quel formato di messaggio.
3.1.1.3.1. Message Processing Model (Modello di elaborazione dei messaggi)
Un modello di elaborazione dei messaggi definisce un formato di messaggio e le procedure per elaborare quel formato di messaggio. Diversi modelli di elaborazione dei messaggi possono coesistere all'interno di un singolo motore SNMP.
I modelli di elaborazione dei messaggi standard includono:
- SNMPv1: Definito in RFC 3584
- SNMPv2c: Definito in RFC 3584
- SNMPv3: Definito in RFC 3412
Ogni modello di elaborazione dei messaggi è identificato da un valore messageProcessingModel unico.
3.1.1.4. Security Subsystem (Sottosistema di sicurezza)
Il sottosistema di sicurezza fornisce servizi di sicurezza come autenticazione, privacy e controllo della tempestività.
Il sottosistema di sicurezza può contenere più modelli di sicurezza. Ogni modello di sicurezza definisce un insieme di protocolli di sicurezza e le procedure per applicarli.
3.1.1.4.1. Security Model (Modello di sicurezza)
Un modello di sicurezza definisce un insieme di protocolli di sicurezza e le procedure per applicarli ai messaggi SNMP. Diversi modelli di sicurezza possono coesistere all'interno di un singolo motore SNMP.
I modelli di sicurezza standard includono:
- Modello di sicurezza basato sull'utente (USM): Definito in RFC 3414, fornisce autenticazione e privacy utilizzando crittografia simmetrica
- Modello di sicurezza basato sulla comunità: Utilizzato con SNMPv1 e SNMPv2c, definito in RFC 3584
Ogni modello di sicurezza è identificato da un valore securityModel unico.
3.1.1.4.2. Security Protocol (Protocollo di sicurezza)
Un protocollo di sicurezza è un algoritmo crittografico specifico utilizzato da un modello di sicurezza. Ad esempio, il modello di sicurezza basato sull'utente supporta più protocolli di autenticazione (HMAC-MD5-96, HMAC-SHA-96) e più protocolli di privacy (CBC-DES, CBC-AES).
3.1.2. Access Control Subsystem (Sottosistema di controllo degli accessi)
Il sottosistema di controllo degli accessi determina se una particolare operazione SNMP dovrebbe essere consentita. Prende questa decisione in base all'identità dell'utente, al tipo di operazione e all'oggetto gestito a cui si accede.
Il sottosistema di controllo degli accessi può contenere più modelli di controllo degli accessi. Ogni modello di controllo degli accessi definisce una politica per prendere decisioni di controllo degli accessi.
3.1.2.1. Access Control Model (Modello di controllo degli accessi)
Un modello di controllo degli accessi definisce una politica per determinare se l'accesso a un oggetto gestito dovrebbe essere concesso. Diversi modelli di controllo degli accessi possono coesistere all'interno di un singolo motore SNMP.
Il modello di controllo degli accessi standard è il modello di controllo degli accessi basato su viste (VACM), definito in RFC 3415.
Ogni modello di controllo degli accessi è identificato da un valore accessControlModel unico.
3.1.3. Applications (Applicazioni)
Le applicazioni SNMP utilizzano i servizi del motore SNMP per eseguire funzioni di gestione. Un'entità SNMP può contenere più applicazioni.
3.1.3.1. SNMP Manager (Manager SNMP)
Un manager SNMP è un'entità SNMP che avvia richieste SNMP ed elabora risposte e notifiche SNMP. Un manager tipicamente contiene i seguenti tipi di applicazioni:
- Command Generator: Avvia operazioni Get, GetNext, GetBulk e Set
- Notification Receiver: Riceve operazioni Trap e InformRequest
Un manager può anche contenere un'applicazione Proxy Forwarder, che inoltra messaggi SNMP ad altre entità SNMP.
3.1.3.2. SNMP Agent (Agente SNMP)
Un agente SNMP è un'entità SNMP che fornisce accesso alle informazioni di gestione. Un agente tipicamente contiene i seguenti tipi di applicazioni:
- Command Responder: Risponde alle operazioni Get, GetNext, GetBulk e Set
- Notification Originator: Avvia operazioni Trap e InformRequest
Un agente può anche contenere un'applicazione Proxy Forwarder, che inoltra messaggi SNMP ad altre entità SNMP.
Un agente contiene strumentazione, che è il software che fornisce accesso agli oggetti gestiti effettivi. La strumentazione traduce tra operazioni SNMP e le operazioni necessarie per accedere agli oggetti gestiti sottostanti.
3.2. The Naming of Identities (La denominazione delle identità)
L'architettura distingue tra entità (che sono implementazioni) e identità (che rappresentano utenti o principal).
3.2.1. Principal
Un principal è un utente o sistema per conto del quale viene inviato o ricevuto un messaggio SNMP. Il principal è la fonte ultima di autorità per un'operazione SNMP.
3.2.2. securityName
Un securityName è una stringa leggibile dall'uomo che rappresenta un principal. È l'identificatore indipendente dal modello di sicurezza per un utente.
Il securityName è utilizzato dal sottosistema di controllo degli accessi per determinare se un'operazione dovrebbe essere consentita. Diversi modelli di sicurezza possono utilizzare formati diversi per rappresentare il principal, ma tutti devono essere in grado di produrre un securityName che possa essere utilizzato dal sottosistema di controllo degli accessi.
3.2.3. Model-dependent security ID (ID di sicurezza dipendente dal modello)
Un ID di sicurezza dipendente dal modello è la rappresentazione specifica del modello di sicurezza di un principal. Ad esempio, nel modello di sicurezza basato sull'utente, l'ID di sicurezza dipendente dal modello è un userName.
Il modello di sicurezza è responsabile della traduzione tra l'ID di sicurezza dipendente dal modello e il securityName.
3.3. The Naming of Management Information (La denominazione delle informazioni di gestione)
Le informazioni di gestione sono organizzate in raccolte di oggetti correlati. L'architettura fornisce meccanismi per denominare e identificare queste raccolte.
3.3.1. An SNMP Context (Un contesto SNMP)
Un contesto SNMP è una raccolta di informazioni di gestione accessibili da un'entità SNMP. Un'entità SNMP può avere accesso a più contesti.
L'uso di contesti consente a un singolo agente SNMP di rappresentare informazioni di gestione da più dispositivi o sottosistemi. Ad esempio, un agente proxy potrebbe rappresentare informazioni di gestione da diversi dispositivi, con le informazioni di ciascun dispositivo in un contesto separato.
I contesti sono identificati da un contextEngineID e un contextName.
3.3.2. contextEngineID
Il contextEngineID identifica univocamente un'entità SNMP che può realizzare un'istanza di un contesto con un particolare contextName. Questo è tipicamente lo snmpEngineID del motore SNMP che ha accesso alle informazioni di gestione.
3.3.3. contextName
Il contextName è utilizzato per denominare un contesto. È una stringa leggibile dall'uomo.
Insieme, il contextEngineID e il contextName identificano univocamente una raccolta di informazioni di gestione.
3.3.4. scopedPDU
Un scopedPDU è un PDU che include campi contextEngineID e contextName. Questo consente al PDU di identificare a quale contesto si applica l'operazione.
Lo scopedPDU è utilizzato nei messaggi SNMPv3. È costituito da:
- contextEngineID
- contextName
- PDU (l'unità dati di protocollo effettiva)
3.4. Other Constructs (Altri costrutti)
3.4.1. maxSizeResponseScopedPDU
Il maxSizeResponseScopedPDU è la dimensione massima di uno scopedPDU che può essere inviato in un messaggio di risposta. Questo è negoziato durante lo scambio di messaggi ed è utilizzato per evitare di inviare messaggi troppo grandi per l'entità ricevente da elaborare.
3.4.2. Local Configuration Datastore (Datastore di configurazione locale)
Il datastore di configurazione locale (LCD) è un repository concettuale di informazioni di configurazione. Contiene informazioni necessarie al motore SNMP, come parametri di sicurezza e regole di controllo degli accessi.
Il LCD è tipicamente implementato utilizzando oggetti gestiti che possono essere accessibili e modificati utilizzando SNMP. Gli oggetti gestiti specifici sono definiti in vari moduli MIB, come SNMP-FRAMEWORK-MIB, SNMP-USER-BASED-SM-MIB e SNMP-VIEW-BASED-ACM-MIB.
3.4.3. securityLevel
Il securityLevel indica il livello di sicurezza applicato a un messaggio SNMP. Sono definiti tre livelli di sicurezza:
- noAuthNoPriv: Nessuna autenticazione e nessuna privacy
- authNoPriv: Autenticazione ma nessuna privacy
- authPriv: Sia autenticazione che privacy
Il securityLevel è specificato dall'applicazione quando si invia un messaggio ed è determinato dal sottosistema di sicurezza quando si riceve un messaggio.