2. 模型元素
-
模型元素
本节包含用于实现基于视图的访问控制模型所提供访问控制服务的定义.
2.1. 组
组是零个或多个 <securityModel, securityName> 元组的集合, SNMP 管理对象可代表这些元组被访问. 组定义属于该组的所有 securityName 所拥有的访问权限. securityModel 和 securityName 的组合最多映射到一个组. 组由 groupName 标识.
访问控制模块假定 securityName 已按需要完成认证, 并且自身不再提供进一步认证.
基于视图的访问控制模型在被调用以检查访问权限时, 使用 securityModel 和 securityName 作为访问控制模块的输入. 它将 groupName 确定为 securityModel 和 securityName 的函数.
2.2. securityLevel
可以为组成员在不同安全级别下定义不同访问权限, 即 noAuthNoPriv, authNoPriv 和 authPriv. securityLevel 标识检查访问权限时假定的安全级别. securityLevel 的定义见 SNMP 体系结构文档 [RFC3411].
基于视图的访问控制模型要求在调用访问控制模块检查访问权限时, 将 securityLevel 作为输入传递.
2.3. 上下文
SNMP 上下文是 SNMP 实体可访问的管理信息集合. 一个管理信息项可以存在于多个上下文中. 一个 SNMP 实体可能可以访问许多上下文. 关于管理信息命名的详细信息见 SNMP 体系结构文档 [RFC3411].
基于视图的访问控制模型定义 vacmContextTable, 该表按 contextName 列出本地可用上下文.
2.4. MIB 视图和视图族
出于安全原因, 通常需要能够将某些组的访问权限限制为管理域中管理信息的一个子集. 为提供这种能力, 对上下文的访问通过 "MIB view" 进行, 该视图详细列出该上下文中特定的托管对象类型集合 (并可选地列出对象类型的具体实例). 例如, 对于给定上下文, 通常总会有一个 MIB view 提供对该上下文中所有管理信息的访问, 并且常常还会有其他 MIB view, 每个视图包含信息的某个子集. 因此, 可以通过按组在每个适当上下文内可访问的特定 (子集) MIB view 指定其权限, 以期望的方式限制该组允许的访问.
由于托管对象类型 (及其实例) 通过 ISO OBJECT IDENTIFIER [ISO-ASN.1, RFC2578] 的树状命名结构标识, 因此将 MIB view 定义为一组 "view subtrees" 的组合很方便, 其中每个 view subtree 是托管对象命名树内的一个子树. 因此, 简单的 MIB view (例如 Internet Network Management Framework 内的所有托管对象) 可以定义为单个 view subtree, 而更复杂的 MIB view (例如与特定网络接口相关的所有信息) 可以表示为多个 view subtree 的并集.
虽然任意托管对象集合都可以通过若干 view subtree 的并集描述, 但也可能出现需要大量 view subtree 的情况. 例如, 在指定 MIB 表某个概念行中的所有列时就可能发生这种情况, 因为这些列会出现在不同子树中, 每列一个子树, 且每个子树格式非常相似. 由于格式相似, 所需子树集合可以很容易聚合为一个结构. 该结构按照其概念上表示的子树集合命名为 view subtree 族. view subtree 族可以被包含在 MIB view 中, 也可以从 MIB view 中排除.
2.4.1. 视图子树
view subtree 是其名称具有共同 ASN.1 OBJECT IDENTIFIER 前缀的所有 MIB 对象实例集合. view subtree 由 OBJECT IDENTIFIER 值标识, 该值是该子树中所有 (潜在) MIB 对象实例共同拥有的最长 OBJECT IDENTIFIER 前缀.
2.4.2. ViewTreeFamily
view subtree 族是一个 OBJECT IDENTIFIER 值 (称为族名称) 与一个位串值 (称为族掩码) 的配对. 族掩码指示关联族名称中哪些子标识符对该族的定义有意义.
对于每个可能的托管对象实例, 如果以下两个条件都为真, 则该实例属于特定 ViewTreeFamily:
-
托管对象实例的 OBJECT IDENTIFIER 名称至少包含与族名称一样多的子标识符, 并且
-
每当关联族掩码的对应位非零时, 托管对象实例 OBJECT IDENTIFIER 名称中的每个子标识符都与族名称的对应子标识符匹配.
当族掩码的配置值全为 1 时, view subtree 族与族名称标识的单个 view subtree 相同.
当族掩码的配置值短于执行上述测试所需长度时, 其值隐式以 1 扩展. 因此, 族掩码长度为零的 view subtree 族总是对应于单个 view subtree.
2.5. 访问策略
基于视图的访问控制模型确定某个组的访问权限, 该组表示具有相同访问权限的零个或多个 securityName. 对于由 contextName 标识的特定上下文, 如果由 groupName 标识的组使用特定 securityModel 和 securityLevel 访问该上下文, 该组的访问权限由 read-view,write-view 和 notify-view 给出.
read-view 表示该组读取对象时被授权访问的对象实例集合. 读取对象发生在处理检索操作时 (处理 Read Class PDU 时).
write-view 表示该组写入对象时被授权访问的对象实例集合. 写入对象发生在处理写操作时 (处理 Write Class PDU 时).
notify-view 表示该组在通知中发送对象时被授权访问的对象实例集合, 例如发送通知时 (发送 Notification Class PDU 时).