跳到主要内容

2.5. Services provided by the User-based Security Model (基于用户的安全模型提供的服务)

2.5. Services provided by the User-based Security Model (基于用户的安全模型提供的服务)​

本节描述基于用户的安全模型及其输入和输出所提供的服务.

这些服务被描述为抽象服务接口的原语 (primitives), 输入和输出被描述为在这些抽象服务原语中传递的抽象数据元素.

2.5.1. Services for Generating an Outgoing SNMP Message (生成出站 SNMP 消息的服务)​

当消息处理 (MP) 子系统调用基于用户的安全模块来保护出站 SNMP 消息时, 它必须使用安全模块提供的适当服务.提供以下两种服务:

1) 生成请求消息的服务 (Service to Generate a Request Message)​

抽象服务原语为:

statusInformation =            -- 成功或错误指示
generateRequestMsg(
IN messageProcessingModel -- 通常为 SNMP 版本
IN globalData -- 消息头, 管理数据
IN maxMessageSize -- 发送 SNMP 实体的
IN securityModel -- 出站消息的
IN securityEngineID -- 权威 SNMP 实体
IN securityName -- 代表此主体
IN securityLevel -- 请求的安全级别
IN scopedPDU -- 消息 (明文) 有效负载
OUT securityParameters -- 由安全模块填充
OUT wholeMsg -- 完整生成的消息
OUT wholeMsgLength -- 生成的消息长度
)

2) 生成响应消息的服务 (Service to Generate a Response Message)​

抽象服务原语为:

statusInformation =            -- 成功或错误指示
generateResponseMsg(
IN messageProcessingModel -- 通常为 SNMP 版本
IN globalData -- 消息头, 管理数据
IN maxMessageSize -- 发送 SNMP 实体的
IN securityModel -- 出站消息的
IN securityEngineID -- 权威 SNMP 实体
IN securityName -- 代表此主体
IN securityLevel -- 请求的安全级别
IN scopedPDU -- 消息 (明文) 有效负载
IN securityStateReference -- 对安全状态的引用
-- 来自原始请求的信息
OUT securityParameters -- 由安全模块填充
OUT wholeMsg -- 完整生成的消息
OUT wholeMsgLength -- 生成的消息长度
)

Abstract Data Elements (抽象数据元素)​

在抽象服务原语中作为参数传递的抽象数据元素如下:

statusInformation (状态信息)​

指示消息的编码和保护是否成功.如果不成功, 则指示问题所在.

messageProcessingModel (消息处理模型)​

要生成的消息的 SNMP 版本号.基于用户的安全模块不使用此数据.

globalData (全局数据)​

消息头 (即其管理信息).基于用户的安全模块不使用此数据.

maxMessageSize (最大消息大小)​

消息中包含的最大消息大小.基于用户的安全模块不使用此数据.

securityParameters (安全参数)​

这些是安全参数.它们将由基于用户的安全模块填充.

securityModel (安全模型)​

正在使用的 securityModel.应为基于用户的安全模型.基于用户的安全模块不使用此数据.

securityEngineID (安全引擎 ID)​

权威 SNMP 引擎的 snmpEngineID.创建请求消息时, 如果尚不知道 securityEngineID (发现阶段), 则可以是零长度 OCTET STRING.

securityName (安全名称)​

与 securityLevel 和 securityEngineID 一起, 标识应使用 usmUserTable 中的哪一行来保护消息.

securityLevel (安全级别)​

请求的 securityLevel.取值之一: noAuthNoPriv、authNoPriv 或 authPriv.

scopedPDU (作用域 PDU)​

消息有效负载.scopedPDU 包含 contextEngineID、contextName 和 PDU.

securityStateReference (安全状态引用)​

cachedSecurityData 的句柄/引用.生成响应或报告消息时使用它来检索原始请求消息的安全信息.

wholeMsg (完整消息)​

准备传输的完整序列化消息.

wholeMsgLength (完整消息长度)​

wholeMsg 的长度 (以字节为单位).

2.5.2. Services for Processing an Incoming SNMP Message (处理传入 SNMP 消息的服务)​

当消息处理 (MP) 子系统调用基于用户的安全模块来处理传入的 SNMP 消息时, 它必须使用安全模块提供的适当服务.提供的服务为:

statusInformation =             -- 错误指示或成功
processIncomingMsg(
IN messageProcessingModel -- 通常为 SNMP 版本
IN maxMessageSize -- 接收 SNMP 实体的
IN securityParameters -- 接收消息的
IN securityModel -- 接收消息的
IN securityLevel -- 安全级别
IN wholeMsg -- 从网络上接收的
IN wholeMsgLength -- 接收的长度
OUT securityEngineID -- 权威 SNMP 实体
OUT securityName -- 主体的标识
OUT scopedPDU -- 消息 (明文) 有效负载
OUT maxSizeResponseScopedPDU -- 响应 PDU 的最大大小
OUT securityStateReference -- 对安全状态的引用
)

Abstract Data Elements for Processing (用于处理的抽象数据元素)​

作为参数传递的抽象数据元素如下:

statusInformation (状态信息)​

指示消息处理是否成功.如果不成功, 则指示错误, 并可能包括递增的错误计数器的 OID 和值.

messageProcessingModel (消息处理模型)​

接收消息的 SNMP 版本号.USM 不使用此参数.

maxMessageSize (最大消息大小)​

接收消息的最大消息大小.用于计算 maxSizeResponseScopedPDU.

securityParameters (安全参数)​

来自接收消息的安全参数.

securityModel (安全模型)​

来自接收消息的安全模型标识符.USM 应为 3.

securityLevel (安全级别)​

来自接收消息的安全级别: noAuthNoPriv、authNoPriv 或 authPriv.

wholeMsg (完整消息)​

接收的完整消息.

wholeMsgLength (完整消息长度)​

接收消息的长度 (以字节为单位).

securityEngineID (安全引擎 ID) (OUT)​

从 securityParameters 中提取的 msgAuthoritativeEngineID.

securityName (安全名称) (OUT)​

从 securityParameters 中提取的 msgUserName.

scopedPDU (作用域 PDU) (OUT)​

从消息中提取的解密和认证的 scopedPDU.

maxSizeResponseScopedPDU (响应作用域 PDU 的最大大小) (OUT)​

可以在响应消息中发送的 scopedPDU 的最大大小.这是基于接收的 maxMessageSize 和安全参数的大小计算的.

securityStateReference (安全状态引用) (OUT)​

对缓存的安全数据的引用.稍后在生成对接收消息的响应或报告消息时使用它.

Service Primitive Usage (服务原语的使用)​

这些抽象服务原语定义了消息处理子系统与基于用户的安全模型之间的接口.实际的实现细节在第 3 节 (过程要素) 中指定.