查看源代码 snmp_user_based_sm_mib (snmp v5.18)

SNMP-USER-BASED-SM-MIB 的检测函数

模块 snmp_user_based_sm_mib 实现了 SNMP-USER-BASED-SM-MIB 的检测函数,以及用于配置数据库的函数。

请注意,身份验证已根据 RFC 7860 (SNMP-USM-HMAC-SHA2-MIB) 进行了扩展。

配置文件在 SNMP 用户手册中进行了描述。

概要

类型

列表的大小/长度取决于身份验证协议

注意

“指示是否可以对代表此用户发送到/来自由 usmUserEngineID 标识的 SNMP 引擎的消息进行身份验证,如果可以,则指示使用的身份验证协议的类型。”

注意

“指向此 usmUserTable 中另一个概念行的指针。此另一个概念行中的用户称为克隆自用户。”

注意

“每个使用此语法定义的对象都必须标识一个协议 P、一个密钥 K 和一个生成 L 个八位字节输出的哈希算法 H。”

注意

“表示用户名称的可读字符串。这是(基于用户的安全)模型相关的安全 ID。”

列表的大小/长度取决于隐私协议

注意

“指示是否可以保护代表此用户发送到/来自由 usmUserEngineID 标识的 SNMP 引擎的消息免遭泄露,如果可以,则指示使用的隐私协议的类型。”

OCTET STRING (SIZE(0..32))

函数

将 USM 安全数据(用户)添加到代理配置。相当于 usm.conf 文件中的一行。

此函数在系统启动时从 supervisor 调用。

从代理配置中删除 USM 安全数据(用户)。

将配置文件中的所有数据插入数据库,并销毁所有旧数据,包括具有 StorageType nonVolatile 的行。从配置文件创建的行将具有 StorageType nonVolatile

类型

-type auth_key() :: snmp:octet_string().

列表的大小/长度取决于身份验证协议

               Size any for usmNoAuthProtocol
               Size 16  for usmHMACMD5AuthProtocol
               Size 20  for usmHMACSHAAuthProtocol
               Size 28  for usmHMAC128SHA224AuthProtocol
               Size 32  for usmHMAC192SHA256AuthProtocol
               Size 48  for usmHMAC256SHA384AuthProtocol
	       Size 64  for usmHMAC384SHA512AuthProtocol
-type auth_protocol() ::
          usmNoAuthProtocol | usmHMACMD5AuthProtocol | usmHMACSHAAuthProtocol |
          usmHMAC128SHA224AuthProtocol | usmHMAC192SH256AuthProtocol | usmHMAC256SHA384AuthProtocol |
          usmHMAC384SHA512AuthProtocol.

注意

“指示是否可以对代表此用户发送到/来自由 usmUserEngineID 标识的 SNMP 引擎的消息进行身份验证,如果可以,则指示使用的身份验证协议的类型。”

注意

此类型的一些条目实际上由 SNMP-USM-HMAC-SHA2-MIB mib 定义。

AutonomousType

-type clone_from() :: zeroDotZero | snmp:row_pointer().

注意

“指向此 usmUserTable 中另一个概念行的指针。此另一个概念行中的用户称为克隆自用户。”

RowPointer

-type key_change() :: snmp:octet_string().

注意

“每个使用此语法定义的对象都必须标识一个协议 P、一个密钥 K 和一个生成 L 个八位字节输出的哈希算法 H。”

OCTET STRING

-type name() :: snmp_framework_mib:admin_string().

注意

“表示用户名称的可读字符串。这是(基于用户的安全)模型相关的安全 ID。”

SnmpAdminString (SIZE(1..32))

-type priv_key() :: snmp:octet_string().

列表的大小/长度取决于隐私协议

	       Size any for usmNoPrivProtocol
               Size 16  for usmDESPrivProtocol
               Size 16  for usmAesCfb128Protocol
-type priv_protocol() :: usmNoPrivProtocol | usmDESPrivProtocol | usmAesCfb128Protocol.

注意

“指示是否可以保护代表此用户发送到/来自由 usmUserEngineID 标识的 SNMP 引擎的消息免遭泄露,如果可以,则指示使用的隐私协议的类型。”

注意

此类型的一些条目实际上由 SNMP-USM-AES-MIB mib 定义。

AutonomousType

-type public() :: string().

OCTET STRING (SIZE(0..32))

-type usm_entry() ::
          {EngineID :: snmp_framework_mib:engine_id(),
           UserName :: name(),
           SecName :: snmp_framework_mib:admin_string(),
           Clone :: clone_from(),
           AuthP :: auth_protocol(),
           AuthKeyC :: key_change(),
           OwnAuthKeyC :: key_change(),
           PrivP :: priv_protocol(),
           PrivKeyC :: key_change(),
           OwnPrivKeyC :: key_change(),
           Public :: public(),
           AuthKey :: auth_key(),
           PrivKey :: priv_key()}.

函数

链接到此函数

add_user(EngineID, Name, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC, PrivP, PrivKeyC, OwnPrivKeyC, Public, AuthKey, PrivKey)

查看源代码
-spec add_user(EngineID, Name, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC, PrivP, PrivKeyC,
               OwnPrivKeyC, Public, AuthKey, PrivKey) ->
                  {ok, Key} | {error, Reason}
                  when
                      EngineID :: snmp_framework_mib:engine_id(),
                      Name :: name(),
                      SecName :: snmp_framework_mib:admin_string(),
                      Clone :: clone_from(),
                      AuthP :: auth_protocol(),
                      AuthKeyC :: key_change(),
                      OwnAuthKeyC :: key_change(),
                      PrivP :: priv_protocol(),
                      PrivKeyC :: key_change(),
                      OwnPrivKeyC :: key_change(),
                      Public :: public(),
                      AuthKey :: auth_key(),
                      PrivKey :: priv_key(),
                      Key :: term(),
                      Reason :: term().

将 USM 安全数据(用户)添加到代理配置。相当于 usm.conf 文件中的一行。

-spec configure(ConfDir) -> snmp:void() when ConfDir :: string().

此函数在系统启动时从 supervisor 调用。

将配置文件中的所有数据插入数据库,并销毁所有具有 StorageType volatile 的旧行。从配置文件创建的行将具有 StorageType nonVolatile

所有 snmp 计数器都设置为零。

如果在配置文件中发现错误,则使用错误报告模块的函数 config_err/2 进行报告,并且该函数失败,原因为 configuration_error

ConfDir 是一个指向配置文件所在目录的字符串。

读取的配置文件是:usm.conf

-spec delete_user(Key) -> ok | {error, Reason} when Key :: term(), Reason :: term().

从代理配置中删除 USM 安全数据(用户)。

-spec reconfigure(ConfDir) -> snmp:void() when ConfDir :: string().

将配置文件中的所有数据插入数据库,并销毁所有旧数据,包括具有 StorageType nonVolatile 的行。从配置文件创建的行将具有 StorageType nonVolatile

因此,在此函数被调用之后,SNMP-USER-BASED-SM-MIB 中的数据是来自配置文件的数据。

所有 snmp 计数器都设置为零。

如果在配置文件中发现错误,则使用错误报告模块的函数 config_err/2 进行报告,并且该函数失败,原因为 configuration_error

ConfDir 是一个指向配置文件所在目录的字符串。

读取的配置文件是:usm.conf