メインコンテンツまでスキップ

3. Elements of the Architecture (アーキテクチャの要素)

3. Elements of the Architecture (アーキテクチャの要素)​

このセクションでは, SNMP アーキテクチャを構成する要素について説明します。アーキテクチャは, 1 つ以上の SNMP アプリケーションにサービスを提供する SNMP エンジンの概念を中心に設計されています。

3.1. The Naming of Entities (エンティティの命名)​

アーキテクチャ内ではいくつかのタイプのエンティティが識別されます:

  • SNMP エンジン (SNMP engine): このアーキテクチャで定義されたサービスの実装。SNMP エンジンはメッセージ処理, セキュリティ, アクセス制御サービスを提供します。

  • SNMP エンティティ (SNMP entity): SNMP エンジンと 1 つ以上の SNMP アプリケーション。SNMP エンティティはエージェント, マネージャー, または両方として機能できます。

  • SNMP エージェント (SNMP agent): 管理情報へのアクセスを提供する SNMP エンティティ。エージェントは通常, 管理対象デバイス上で実行されます。

  • SNMP マネージャー (SNMP manager): SNMP リクエストを開始し, SNMP 応答と通知を処理する SNMP エンティティ。マネージャーは通常, 管理ステーション上で実行されます。

3.1.1. SNMP engine (SNMP エンジン)​

SNMP エンジンは, SNMP メッセージ処理, セキュリティ, アクセス制御サービスの実装です。SNMP エンジンは snmpEngineID によって一意に識別されます。

3.1.1.1. snmpEngineID​

snmpEngineID は, SNMP エンジンを一意に識別する OCTET STRING です。snmpEngineID は管理的に割り当てられ, ネットワーク内のすべての SNMP エンジン間で一意になるように選択する必要があります。

snmpEngineID の形式は一意性を保証するように設計されています。通常, エンタープライズ番号と MAC アドレス, IP アドレス, または管理的に割り当てられた値などの追加の識別情報が含まれます。

snmpEngineID はいくつかの重要な目的を果たします:

  1. メッセージを発信した SNMP エンジンを識別します
  2. 管理対象オブジェクトがアクセスされている SNMP エンジンを識別します
  3. セキュリティ情報のキーとして機能します
  4. ローカライズされたセキュリティパラメータのキーとして機能します
3.1.1.2. Dispatcher (ディスパッチャー)​

ディスパッチャーは以下を担当します:

  1. ネットワークからメッセージを受信し, メッセージバージョンを決定
  2. 適切なメッセージ処理モデルにメッセージをルーティング
  3. 適切な SNMP アプリケーションに PDU をルーティング
  4. ネットワークにメッセージを送信

ディスパッチャーは, アプリケーションおよび SNMP エンジンのサブシステムに抽象サービスインターフェースを提供します。

3.1.1.3. Message Processing Subsystem (メッセージ処理サブシステム)​

メッセージ処理サブシステムは, 送信用のメッセージの準備と受信したメッセージからのデータの抽出を担当します。

メッセージ処理サブシステムは複数のメッセージ処理モデルを含むことができます。各メッセージ処理モデルはメッセージ形式とそのメッセージ形式を処理する手順を定義します。

3.1.1.3.1. Message Processing Model (メッセージ処理モデル)​

メッセージ処理モデルは, メッセージ形式とそのメッセージ形式を処理する手順を定義します。異なるメッセージ処理モデルは単一の SNMP エンジン内で共存できます。

標準メッセージ処理モデルには以下が含まれます:

  • SNMPv1: RFC 3584 で定義
  • SNMPv2c: RFC 3584 で定義
  • SNMPv3: RFC 3412 で定義

各メッセージ処理モデルは一意の messageProcessingModel 値によって識別されます。

3.1.1.4. Security Subsystem (セキュリティサブシステム)​

セキュリティサブシステムは, 認証, プライバシー, 適時性チェックなどのセキュリティサービスを提供します。

セキュリティサブシステムは複数のセキュリティモデルを含むことができます。各セキュリティモデルは一連のセキュリティプロトコルとそれらを適用する手順を定義します。

3.1.1.4.1. Security Model (セキュリティモデル)​

セキュリティモデルは, 一連のセキュリティプロトコルとそれらを SNMP メッセージに適用する手順を定義します。異なるセキュリティモデルは単一の SNMP エンジン内で共存できます。

標準セキュリティモデルには以下が含まれます:

  • ユーザーベースセキュリティモデル (USM): RFC 3414 で定義, 対称暗号を使用して認証とプライバシーを提供
  • コミュニティベースセキュリティモデル: SNMPv1 および SNMPv2c で使用, RFC 3584 で定義

各セキュリティモデルは一意の securityModel 値によって識別されます。

3.1.1.4.2. Security Protocol (セキュリティプロトコル)​

セキュリティプロトコルは, セキュリティモデルで使用される特定の暗号アルゴリズムです。たとえば, ユーザーベースセキュリティモデルは複数の認証プロトコル (HMAC-MD5-96, HMAC-SHA-96) と複数のプライバシープロトコル (CBC-DES, CBC-AES) をサポートします。

3.1.2. Access Control Subsystem (アクセス制御サブシステム)​

アクセス制御サブシステムは, 特定の SNMP 操作を許可すべきかどうかを決定します。ユーザーの ID, 操作の種類, およびアクセスされている管理対象オブジェクトに基づいてこの決定を行います。

アクセス制御サブシステムは複数のアクセス制御モデルを含むことができます。各アクセス制御モデルはアクセス制御決定を行うためのポリシーを定義します。

3.1.2.1. Access Control Model (アクセス制御モデル)​

アクセス制御モデルは, 管理対象オブジェクトへのアクセスを許可すべきかどうかを決定するためのポリシーを定義します。異なるアクセス制御モデルは単一の SNMP エンジン内で共存できます。

標準アクセス制御モデルは, RFC 3415 で定義されたビューベースアクセス制御モデル (VACM) です。

各アクセス制御モデルは一意の accessControlModel 値によって識別されます。

3.1.3. Applications (アプリケーション)​

SNMP アプリケーションは, SNMP エンジンのサービスを使用して管理機能を実行します。SNMP エンティティは複数のアプリケーションを含むことができます。

3.1.3.1. SNMP Manager (SNMP マネージャー)​

SNMP マネージャーは, SNMP リクエストを開始し, SNMP 応答と通知を処理する SNMP エンティティです。マネージャーは通常, 以下のタイプのアプリケーションを含みます:

  • コマンドジェネレーター (Command Generator): Get, GetNext, GetBulk, Set 操作を開始
  • 通知受信者 (Notification Receiver): Trap および InformRequest 操作を受信

マネージャーは, SNMP メッセージを他の SNMP エンティティに転送するプロキシフォワーダーアプリケーションも含む場合があります。

3.1.3.2. SNMP Agent (SNMP エージェント)​

SNMP エージェントは, 管理情報へのアクセスを提供する SNMP エンティティです。エージェントは通常, 以下のタイプのアプリケーションを含みます:

  • コマンドレスポンダー (Command Responder): Get, GetNext, GetBulk, Set 操作に応答
  • 通知発信者 (Notification Originator): Trap および InformRequest 操作を開始

エージェントは, SNMP メッセージを他の SNMP エンティティに転送するプロキシフォワーダーアプリケーションも含む場合があります。

エージェントには計装が含まれており, これは実際の管理対象オブジェクトへのアクセスを提供するソフトウェアです。計装は, SNMP 操作と基礎となる管理対象オブジェクトにアクセスするために必要な操作の間を変換します。

3.2. The Naming of Identities (アイデンティティの命名)​

アーキテクチャは, エンティティ (実装) とアイデンティティ (ユーザーまたはプリンシパルを表す) を区別します。

3.2.1. Principal (プリンシパル)​

プリンシパルは, SNMP メッセージが送受信される代理としてのユーザーまたはシステムです。プリンシパルは SNMP 操作の最終的な権限のソースです。

3.2.2. securityName​

securityName は, プリンシパルを表す人間が読める文字列です。これはユーザーのセキュリティモデル独立識別子です。

securityName は, 操作を許可すべきかどうかを決定するためにアクセス制御サブシステムによって使用されます。異なるセキュリティモデルは, プリンシパルを表すために異なる形式を使用する場合がありますが, すべてアクセス制御サブシステムで使用できる securityName を生成できる必要があります。

3.2.3. Model-dependent security ID (モデル依存セキュリティ ID)​

モデル依存セキュリティ ID は, プリンシパルのセキュリティモデル固有の表現です。たとえば, ユーザーベースセキュリティモデルでは, モデル依存セキュリティ ID は userName です。

セキュリティモデルは, モデル依存セキュリティ ID と securityName の間の変換を担当します。

3.3. The Naming of Management Information (管理情報の命名)​

管理情報は関連オブジェクトのコレクションに編成されます。アーキテクチャは, これらのコレクションの命名と識別のためのメカニズムを提供します。

3.3.1. An SNMP Context (SNMP コンテキスト)​

SNMP コンテキストは, SNMP エンティティがアクセス可能な管理情報のコレクションです。SNMP エンティティは複数のコンテキストにアクセスできます。

コンテキストの使用により, 単一の SNMP エージェントが複数のデバイスまたはサブシステムからの管理情報を表現できます。たとえば, プロキシエージェントは複数のデバイスからの管理情報を表現する場合があり, 各デバイスの情報は別々のコンテキストにあります。

コンテキストは contextEngineID と contextName によって識別されます。

3.3.2. contextEngineID​

contextEngineID は, 特定の contextName を持つコンテキストのインスタンスを実現する可能性がある SNMP エンティティを一意に識別します。これは通常, 管理情報にアクセスできる SNMP エンジンの snmpEngineID です。

3.3.3. contextName​

contextName はコンテキストの命名に使用されます。これは人間が読める文字列です。

contextEngineID と contextName を合わせて, 管理情報のコレクションを一意に識別します。

3.3.4. scopedPDU​

scopedPDU は, contextEngineID および contextName フィールドを含む PDU です。これにより, PDU は操作が適用されるコンテキストを識別できます。

scopedPDU は SNMPv3 メッセージで使用されます。以下で構成されます:

  • contextEngineID
  • contextName
  • PDU (実際のプロトコルデータユニット)

3.4. Other Constructs (その他の構成要素)​

3.4.1. maxSizeResponseScopedPDU​

maxSizeResponseScopedPDU は, 応答メッセージで送信できる scopedPDU の最大サイズです。これはメッセージ交換中にネゴシエートされ, 受信エンティティが処理するには大きすぎるメッセージの送信を回避するために使用されます。

3.4.2. Local Configuration Datastore (ローカル設定データストア)​

ローカル設定データストア (LCD) は, 設定情報の概念的なリポジトリです。セキュリティパラメータやアクセス制御ルールなど, SNMP エンジンに必要な情報が含まれます。

LCD は通常, SNMP を使用してアクセスおよび変更できる管理対象オブジェクトを使用して実装されます。特定の管理対象オブジェクトは, SNMP-FRAMEWORK-MIB, SNMP-USER-BASED-SM-MIB, SNMP-VIEW-BASED-ACM-MIB などのさまざまな MIB モジュールで定義されています。

3.4.3. securityLevel​

securityLevel は, SNMP メッセージに適用されるセキュリティのレベルを示します。3 つのセキュリティレベルが定義されています:

  1. noAuthNoPriv: 認証なしでプライバシーなし
  2. authNoPriv: 認証ありでプライバシーなし
  3. authPriv: 認証とプライバシーの両方

securityLevel は, メッセージを送信するときにアプリケーションによって指定され, メッセージを受信するときにセキュリティサブシステムによって決定されます。