SNMPv3基于视图的访问控制模型VACM

2024-05-04 14:58

本文主要是介绍SNMPv3基于视图的访问控制模型VACM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载:http://blog.csdn.net/fw0124/article/details/8557777


SNMPv3使用了基于视图的访问控制模型VACM, 它提供对MIB的访问控制。
- RFC 3411 Architecture for SNMP Frameworks http://www.ietf.org/rfc/rfc3411.txt
- RFC 3415 View Access Control Model (VACM)  http://www.ietf.org/rfc/rfc3415.txt


VACM引入的元素
1) Groups
A group is a set of zero or more <securityModel, securityName> tuples on whose behalf SNMP management objects can be accessed.  A group defines the access rights afforded to all securityNames which belong to that group.  The combination of a securityModel and a securityName maps to at most one group.  A group is identified by a groupName.
一个VCAM Group包含多个<securityModel, securityName>的组合。一个<securityModel, securityName>的组合最多只能属于一个Group.
在Group上可以定义访问控制策略。
securityModel定义如下:
                     0  reserved for 'any'
                     1  reserved for SNMPv1
                     2  reserved for SNMPv2c
                     3  User-Based Security Model (USM)
对于USM,securityName就是userName。

2) securityLevel
Different access rights for members of a group can be defined for different levels of security.
在一个Group内可以为不同的securityLevel定义不同的访问权限。securityLevel包括
                     noAuthNoPriv(1),   --无认证无加密
                     authNoPriv(2),       --有认证无加密
                     authPriv(3)            --有认证有加密
      
3) Contexts
一个SNMP context可以看作是管理信息的一个集合。
一个SNMP entity里面可以访问多个SNMP context。

4) MIB View
一个MIB View在一个Context里面定义了管理信息的一个子集。
由于MIB是定义为树形结构,所以一个MIB View也可以看作是一个view subtree或者多个view subtree的集合。

5) Access Policy
For a particular context, identified by contextName, to which a group, identified by groupName, has access using a particular securityModel and securityLevel, that group's access rights are given by a read-view, a write-view and a notify-view.
Access Policy定义在一个特定的context, group,  securityModel, securityLevel上。包括read-view, a write-view and a notify-view,分别代表读,写,发送Notification权限。

VACM MIB
RFC3415为VACM定义了4张MIB Table,包含在SNMP-VIEW-BASED-ACM-MIB中。
1) Context Table
vacmContextTable存放了所有的Context.
表的index为contextName, 只包含1列vacmContextName。
VACM在进行访问控制时首先会在vacmContextTable中搜索scopedPDU里的contextName。
如未找到匹配,拒绝访问并返回noSuchContext,否则继续访问控制检查。

2) Security To Group Table
vacmSecurityToGroupTable存放了Group信息。
表格的index为
 1: vacmSecurityModel 
 2: vacmSecurityName 
包含3列
 1: vacmGroupName - SnmpAdminString(4 - octets)
 2: vacmSecurityToGroupStorageType - StorageType(2 - integer (32 bit))
 3: vacmSecurityToGroupStatus - RowStatus(2 - integer (32 bit))
*StorageType包含other, volatile,nonVolatile,permanent,readOnly。
根据SNMP消息中msgSecurityModel和msgUserName,在表中匹配搜索的Group。
如果没有找到匹配表项,拒绝访问并返回noSuchGroupName。
否则返回相应的groupName,继续访问控制检查。

3) Access Table
vacmAccessTable存放各组的访问权限。
表格的index为
 1: vacmGroupName 
 2: vacmAccessContextPrefix 
 3: vacmAccessSecurityModel 
 4: vacmAccessSecurityLevel 
包含6列
 1: vacmAccessContextMatch - INTEGER(2 - integer (32 bit))
 2: vacmAccessReadViewName - SnmpAdminString(4 - octets)
 3: vacmAccessWriteViewName - SnmpAdminString(4 - octets)
 4: vacmAccessNotifyViewName - SnmpAdminString(4 - octets)
 5: vacmAccessStorageType - StorageType(2 - integer (32 bit))
 6: vacmAccessStatus - RowStatus(2 - integer (32 bit))
* vacmAccessContextMatch可以为exact或prefix.
* exact说明contextName必须与vacmAccessContextPrefix精确匹配。
* 如果设置为prefix,contextName只需与vacmAccessContextPrefix前面几个字符匹配即可。
VCAM从表中选取相应的viewName进行后续访问控制检查。
检查该表时所用contextName是通过vacmContextTable检查的有效contextName。
所用groupName来自检查vacmSecurityToGroupTable时的返回值。
securityModel来自消息中的msgSecurityModel,securityLevel来自msgFlags。
如果最终未匹配出一个访问权限,则拒绝访问并返回noAccessEntry。
一个组可能对应着多种访问权限,最终只选取最高securityLevel、最长contextPrefix匹配的表项。
一旦匹配出一个访问权限,与之对应的适当的viewName将被选取出来如果相应viewName未被配置,拒绝访问并返回noSuchView。
如果匹配出一个访问权限也选取了适当的viewName,访问控制检查继续进行。

4) View Tree Family Table
vacmViewTreeFamilyTable存放MIB views。
表格的index为
 1: vacmViewTreeFamilyViewName 
 2: vacmViewTreeFamilySubtree
包含4列
 1: vacmViewTreeFamilyMask - OCTET STRING(4 - octets)
 2: vacmViewTreeFamilyType - INTEGER(2 - integer (32 bit))
 3: vacmViewTreeFamilyStorageType - StorageType(2 - integer (32 bit))
 4: vacmViewTreeFamilyStatus - RowStatus(2 - integer (32 bit))
* vacmViewTreeFamilyType可以为included或者excluded。

对于每个给定OID,当下列两点同时满足时,被认为属于一个特定MIB view:
1) OID长度大于或等于OID子树长度
2) OID子树&掩码  的结果完全和  OID & 掩码 的结果相同,
    如果OID长度大于OID子数长度,前者完全是后者的前缀。
 
掩码是可配置的,如果它比OID或OID子树短,隐式认为不足部分为均为1。
所以,如果掩码为空(长度为零),意味着这个掩码为全1,对应一颗单一的OID子树。
例如,假设定义了如下一些MIB视图
    (A) subtree: 1.3.6.1.2.1
           mask: 1 1 1 1 1 1
    (B) subtree: 1.3.6.1.2.1.1.1
           mask: 1 1 1
    (C) subtree: 1.3.6.1.2.1.2
           mask: none
    (D) subtree: 1.3.6.1.2.1.1
           mask: 1 1 0 1 0 1 1
    (E) subtree: 1.3.6.1.2.1.2
           mask: 1 1 0 1 0
    (F) subtree: 1.3.6.1.2.1
           mask: 1 1 0 1 0 1
根据如上MIB view检查来自如下一些OID,以确定这些OID是否是否属于某个MIB视图。
由于掩码的存在,一个OID可能位于多个MIB视图,也可能不属于任何视图。
    1.3.6.1.2.1        belongs to: A, F
    1.2.6.1.2.1.1      belongs to: none of them
    1.3.6.1.3.1        belongs to: F
    1.3.4.1.4.1.2      belongs to: E, F
    1.3.6.1.2.1.1.1.0  belongs to: A, B, D, F
    1.3.6.1.2          belongs to: none of them

VACM访问控制流程


statusInformation =          -- success or errorIndication
          isAccessAllowed(
              securityModel        -- Security Model in use
              securityName         -- principal who wants access
              securityLevel        -- Level of Security
              viewType             -- read, write, or notify view
              contextName          -- context containing variableName
              variableName         -- OID for the managed object
              )

statusInformation - one of the following:
         accessAllowed  - a MIB view was found and access is granted.
         notInView      - a MIB view was found but access is denied.
                          The variableName is not in the configured
                          MIB view for the specified viewType (e.g., in
                          the relevant entry in the vacmAccessTable).
         noSuchView     - no MIB view found because no view has been
                          configured for specified viewType (e.g., in
                          the relevant entry in the vacmAccessTable).
         noSuchContext  - no MIB view found because of no entry in the
                          vacmContextTable for specified contextName.
         noGroupName    - no MIB view found because no entry has been
                          configured in the vacmSecurityToGroupTable
                          for the specified combination of
                          securityModel and securityName.
         noAccessEntry  - no MIB view found because no entry has been
                          configured in the vacmAccessTable for the
                          specified combination of contextName,
                          groupName (from vacmSecurityToGroupTable),
                          securityModel and securityLevel.
         otherError     - failure, an undefined error occurred.


这篇关于SNMPv3基于视图的访问控制模型VACM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959470

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

模型压缩综述

https://www.cnblogs.com/shixiangwan/p/9015010.html

MySQL数据库(四):视图和索引

在数据库管理中,视图和索引是两种关键工具,它们各自发挥独特的作用以优化数据查询和管理。视图通过简化复杂查询、提高数据安全性和提供数据抽象,帮助用户轻松访问数据。而索引则通过加速查询、确保数据唯一性以及优化排序和分组操作,显著提升数据库性能。理解和合理运用这两者,对数据库系统的高效运行至关重要。 目录 一、视图概念(面试) 二、视图的作用(面试) 三、视图的创建和使用 3.1

AI赋能天气:微软研究院发布首个大规模大气基础模型Aurora

编者按:气候变化日益加剧,高温、洪水、干旱,频率和强度不断增加的全球极端天气给整个人类社会都带来了难以估计的影响。这给现有的天气预测模型提出了更高的要求——这些模型要更准确地预测极端天气变化,为政府、企业和公众提供更可靠的信息,以便做出及时的准备和响应。为了应对这一挑战,微软研究院开发了首个大规模大气基础模型 Aurora,其超高的预测准确率、效率及计算速度,实现了目前最先进天气预测系统性能的显著

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能,将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型,现在我们调整下,将其数据类型调整为实体,如下图所示: 数据类型需要选择实体,并在实体选择框中选择自身“文件夹” 这时候,再点击生成代码,平台会报错,提示“实体【文件夹】未设置主参照视图”。这是因为文件夹选择的功能页面,同样是基于配置产生的,因为视图我们还没有配置,所以会报错。