-1-
中国科技论文在线
RBAC访问控制机制原理分析与实现1
王峰,张彬,李国辉,郭军
北京邮电大学模式识别实验室,北京(100876)
摘 要:NETCONF 协议是一种解决网络配置管理问题较为有效的方法,是 IETF(工程任
务组)网络配置工作组提出的基于 XML 的网络数据设备配置协议,它提供了安装、操作和
删除网络设备配置的机制。访问控制是网络管理中必不可少的安全机制,本文介绍一种在
NETCONF网络管理协议下基于角色的访问控制机制(RBAC)的原理分析和实现,该机制
提出角色的使用不仅支持大量用户的访问,而且提高访问控制管理用户的灵活性。
关键词:NETCONF;RBAC;XML;访问控制
引言
传统的互联网技术的主要特点是具有很强的健壮性,是非赢利的网络,理念是自我管理
和无为而治,而现代商用化的互联网络必须具备必要的管理和控制能力。要实现网络业务的
管理和控制,需要依靠应用层和网络层的协同配合。网络层管理和控制的难点是配置管理、
资源管理、业务开通和准人控制,技术瓶颈是管理协议和管理对象的标准化模型。目前网络
管理协议主要是简单网络管理协议(SNMP),SNMP 采用 UDP 传送,实现简单,技术成
熟,但是在安全可靠性、管理操作效率、交互操作和复杂操作实现上还不能满足管理需求。
随着网络越来越复杂,新型的网络配置协议(NETCONF)应运而生,NETCONF 采用
XML 作为配置数据和协议消息内容的数据编码方式,采用基于 TCP 的 SSHv2 进行传送,
以简单的远程过程调用(RPC)方式实现操作和控制。XML 语言可以表达复杂的、具有内
在逻辑关系的、模型化的管理对象,如端口、协议、业务以及它们之间的关系等,大大提高
了操作效率和对象标准化;同时采用 SSHv2传送方式,可靠性、安全性、交互性较好。
访问控制是 NETCONF 网络管理中一种必不可少的安全机制,因为 NETCONF 网络管
理中不是任何人都能访问被管设备并读取或修改被管设备数据的,而是指定的人员可以访问
被管设备的指定的数据。同时,NETCONF网络管理中存在少量的网络管理站和大量的被管
设备。为了在 NETCONF 网络管理中有效地实现访问控制机制,本文提出了基于角色的访
问控制机制(RBAC)。文章的第二部分介绍 NETCONF协议,第三部分分析 RBAC机制的
工作原理,第四部分介绍 RBAC机制的实现流程,第五部分提出作者在研究 RBAC机制过
程中发现的不足以及未来的展望。
1. NETCONF协议
NETCONF协议[1]是一种最新的基于 XML的网络配置和管理协议。NETCONF协议针
对之前流行的 SNMP协议在功能和构架上的缺陷,并结合时下最流行的 XML技术,提出了
一套对于网络设备的配置信息和状态信息进行管理的机制。下面介绍 NETCONF 协议的层
次结构和访问控制在 NETCONF的作用层。
层次结构
NETCONF协议的架构具有很高的可扩展性和安全性,适合部署在不同规模、不同种类
1 本课题得到国家 863项目(项目编号:2007AA01Z417)和华为北研所资助。
-2-
中国科技论文在线
的网络设备之上,并提供完备的安全访问控制策略。如图 1-1 NETCOFN 协议结构图为
NETCONF协议整体结构图:
图 1-1 NETCOFN协议结构图
NETCOFN协议的消息传输被划分为四个层次:传输层(Server)、RPC层(RPC)、
操作层(Operation)和内容层(Module):
传输协议层主要用于在被管设备和管理应用之间建立通信路径。NETCONF并没有规定
传输协议层必须要采用哪些具体协议,它可以采纳任何一个可以满足 NETCONF 协议需求
的应用协议。当前,NETCONF 协议只是建议可以将 BEEP(Blocks Extensible Exchange
Protocol)[2]、SSH(Secure Shell)[3]、SSL 和 SOAP[4] 等协议作为传输协议层协议。
RPC 层表示了基于 RPC 的通信模型。它提供了一种简单的、不依赖于传输的 RPC 请
求和响应分割(Framing)机制,作为基本的封装管理信息的机制。它采用< rpc >元素封装
操作请求消息,并通过一个安全、面向连接的会话将请求发送给被管设备。而被管设备将采
用< rpc-reply >元素封装该 RPC 请求的响应消息,然后将此响应消息发送给请求者。
操作层定义了一组基本操作,这些操作可以作为 RPC 方法调用,最基本的有 get,edit,
copy,delete四种操作,这些操作可以应用到活跃配置或者其他的配置中。除了基本操作,
NETCONF还提供了被称之为 capabilities 的附加功能。NETCONF可利用网络设备发布的特
征调整管理应用的行为。
内容层描述了网络管理所涉及的配置数据,它基本上依赖于设备厂商。NETCONF认为
Content 层超出了它的范围,应该另行制订标准的数据定义语言和内容,但当前还没有制订
出支持 NETCONF 协议的标准管理信息模型。
访问控制的作用层
根据图 1-1 NETCOFN协议结构图对 NETCONF原型系统结构关系的层次进行分析,在
RBAC访问控制机制下,Server工作在传输层和应用层,可实现创建和维护网络连接和会话,
接收和发送网络消息的功能;RPC连接系统中的各个类,接收并分析 request,并根据 request
创建相应的操作,将操作结果转为字符串形式,作为 response(rpcReply)返回;Operation可
动态创建各种操作,可通过调用相应的模块(Moudule)以完成具体的操作,也可通过调用公
共的类以完成某些公共操作;Module可动态创建各种模块,并通过调用 API以实现模块的
具体功能,进行权限设置(rbac_Moudule策略的形成)。
-3-
中国科技论文在线
访问控制正式对 Operation 层创造的各种操作进行验证,判断操作是否可以执行。
NETCONF包含 9个基本操作,分别是:get、get-config、edit-config、copy-config、delete-config、
lock、unlock、close-session、kill-session。
机制的工作原理
基于角色的访问控制机制(RBAC)的最大优势在于其对授权管理的支持。常见的自主
型访问控制和强制性访问控制方法都是由主体和访问权限直接发生联系,根据主体/客体的
所属关系或主体/客体的安全级来决定主体是否具有对客体的访问权。但是,处于全球网络
环境中的计算机或软件系统的访问用户往往种类繁多、数量巨大且动态变化,这使得采用传
统的访问控制方法进行安全管理变得非常困难。RBAC方法引入了角色这个中介,安全管理
人员根据需要定义各种角色,并设定合适的访问权限,而用户根据其责任和资历再被指派为
不同的角色。
操作权限类型
本文规定在 RBAC机制中使用三种操作权限符号,分别是“—”、“R”、“W”。
1) “—”表示对 XML数据既不能读取,也不能修改。
2) “R”表示对 XML数据只能读取,不能修改。
3) “W”表示对 XML数据既能读取,也能修改。修改操作包括更改节点值和节点属性、
创建新的节点、删除节点以及替换节点。
操作权限强度规定为“—”<“R”<“W”,且子节点的权限不能低于父节点的权限,而权限
的严格程度则为“—”>“R”>“W”。
从以上的规定,可以得到以下规律:
1) 如果当前节点的权限为“—”时,其子节点的权限只能是“—”。
2) 如果当前节点的权限为“R”时,其子节点的权限可能是“R”或者“W”。
3) 如果当前节点的权限为“W”时,其子节点的权限只能是“W”。
对象类型
RBAC机制中主要存在两个对象用户和角色。用户(user)发起访问请求、存取操作的
一方,本文指登录时的用户名;角色(role)是被组织内授予一定数量权利和责任、拥有相
关语义的一项工作职能或工作资格的抽象实体。这两个对象分别存储在两个 XML格式的文
件中,文件用于保存 user对象,而 文件用于保存 role对象。users的格式
如下所示:
<users>
<user id=”1”>
<login>netconf</login>
<password>netconf</password>
</user>
</users>
users节点下面存在若干个 user节点,每个 user节点包含三个信息,属性 id、子节点 login
和 password。属性 id是表示 user列表的序号;子节点 login是登录系统时的用户名;子节点
password是登录系统时的密码。roles的格式如下所示:
<roles>
-4-
中国科技论文在线
<role id=”1”>
<name>visitor</name>
<modules>
<module name=”interface”>
<position op=”w”>/if:interface/if:name</position>
</module>
</modules>
<valid-operation-list>
<operation-name>get</operation-name>
</valid-operation-list>
</role>
</roles>
roles节点下面存在若干个 role节点,每个 role节点下定义了 role名、支持的操作名列
表、权限列表。<name>节点名是 role名;<modules>节点下定义了具体的权限列表,权限是
以模块为单位分开的;<valid-operation-list>节点表示所支持的操作名列表。权限列表以模块
为单位,每条权限的定义格式为<position op=” ”>xpath表达式</position>。每条权限是对数
据模型中的一个节点定义权限,op属性表示权限等级,<position>节点值表示该节点的 xpath
表达式,xpath表达式使用绝对路径。
user-role配置
通过 user-role配置给用户分配一个或多个角色,user-role配置关系如下所示:
<user-assignments>
<user-assignment user-id=”1”>
<role-id>1</role-id>
</user-assignment>
</user-assignments>
权限继承和权限冲突
NETCONF协议规定所有的数据存储模型都以 XML格式编码,对每个角色权限的设置
完全面向 XML,并以 xpath绝对路径的形式表达。然而在访问控制过程中,不可能对 XML
的所有节点进行权限配置,权限继承的思想能够使未进行权限设置的节点根据继承规则自动
添加权限。另外,同一节点被授予不同的权限是允许的,这种现象称为权限冲突。为了统一
解决权限继承和权限冲突问题,规定以下原则:
1) 子节点的权限强度不小于父节点的权限(基本原则)。
2) 如果一个节点的权限为“—”,则该节点对应的模块的权限为“—”。
3) (只涉及“W”和“R”两种权限)一个节点没有在权限列表中定义时,追溯其父节点
的权限作为该节点的权限,如果追溯到根节点仍没有定义权限,则该节点的权限为
默认权限“R”。
4) 对一个节点存在不同的权限等级时满足以下规律——a)如果存在“—”权限,则该
节点的权限为“—”;b)如果不存在“—”,而只有“R”权限和“W”权限时,则该节点
的权限为“W”。
5) 从权限列表中删除一条权限时,只需删除该条权限,其他权限列表都不变。
6) (只涉及“W”和“R”两种权限)往权限列表中增加一条对一个节点的权限时,从该
-5-
中国科技论文在线
节点的子节点中删除权限小于或者等于该节点的权限设置。
机制的实现流程
根据 RBAC 机制的基本原理,NETCONF 网络管理系统对具体用户的访问请求进行评
估,看该用户是否能够执行该操作。具体的评估过程包含身份认证和权限验证两个部分:根
据用户名和密码来判定用户能否访问服务器称为身份认证;而权限验证是根据给用户分配的
权限来对访问请求进行验证的过程。
身份认证
RBAC机制的身份认证既是对用户名和密码的验证,也是为用户分配权限的过程。由图
3-2 身份认证流程图用户在身份验证通过时就根据自己担任的不同角色获得权限,否则得不
到任何访问权限。
图 3-2 身份认证流程图
步骤(10):接收用户名、密码和角色类型。
步骤(20):根据用户名,密码和角色类型验证有效性。如果接收信息无效,则转到步
骤(30),否则转到步骤(40)。
步骤(30):向用户提示授权失败。
步骤(40):由 RBAC访问控制基本原理,对当前的用户进行权限分配。
步骤(50):向用户提示授权成功。
权限验证
NETCONF协议的操作中只有 get、get-config和 edit-config操作面向 XML节点集,因
此,验证过程把 NETCONF 操作分成两种类型,有节点集操作和无节点集操作。RBAC 机
制的具体操作验证过程如图 3-3 RBAC的操作验证过程所示:
-6-
中国科技论文在线
图 3-3 RBAC的操作验证过程
步骤(10):等待并接收Manager端发送的操作请求。
步骤(20):解析请求报文,获取操作名,接着判断是否支持该操作。如果权限中不包
含对应的操作名,则表示不支持该操作,将转向步骤(30),否则继续判断操作类型。如果
操作类型为非节点级操作,则转向步骤(40),否则继续判断是否是可写操作。如果是可写
操作,则转向步骤(70),否则转向步骤(50)。节点级操作表示操作是针对具体节点的操
作,如 get、get-config、edit-config 等操作,其他的操作是非节点级操作。非节点级操作包
括 lock、unlock、delete-config、copy-config、kill-session、close-session等。
步骤(30):表示权限不支持此操作,生成错误信息。
步骤(40):执行非节点级操作,生成结果。
步骤(50):对于节点的不可写操作是 get 操作和 get-config操作。根据操作请求执行
操作,生成结果。
步骤(60):根据权限从结果集中删除不可访问的节点。
步骤(70):对于节点的可写操作是 edit-config操作。根据权限判断请求报文是否允许
执行,如果允许,则转向步骤(90),否则转向步骤(80)。
步骤(80):表示请求报文中存在权限不允许访问的节点,生成错误信息。
步骤(90):执行 edit-config操作,生成结果。
步骤(100):向用户返回结果,进入等待状态,准备接受下一次访问请求。
只读操作的权限验证
在 NETCONF协议中只读操作包括 get操作和 get-config操作。对于只读操作,首先执
行操作获取结果,然后权限验证得到最后的结果。这种先执行后验证方法的好处是:支持
xpath 过滤、子树过滤以及扩展子树过滤;对以上三种过滤方式,可以统一考虑;支持对多
个模块的过滤;如果有其他过滤方式时不会影响权限验证。坏处是:结果集越大,验证时间
越长。只读操作的权限验证过程如图 3所示:
-7-
中国科技论文在线
图 3-4只读操作的验证过程
步骤(61):获取操作结果,接着判断结果是否为错误信息,如果是错误信息,则转向
步骤(66),否则转向步骤(62)。
步骤(62):从操作结果中获取结果所涉及到的模块个数,接着每个模块都进行权限验
证。当所有的模块都验证完以后转向步骤(65)。
步骤(63):根据模块名从权限集中过滤出对应的权限,接着判断过滤出的权限中是否
存在“—”权限,如果存在则转向步骤(64),否则处理下一个模块的结果。
步骤(64):删除相关模块的结果,处理下一个模块的结果。
可写操作的权限验证
在 NETCONF协议中可写操是 edit-config操作,可写操作包括修改、替换、创建、删除
等。对 edit-config操作存在以下特点:edit-config操作报文使用绝对路径,根据绝对路径可
以定位到具体节点;权限列表中把一个节点的权限设置为“W”时,该节点的子节点的权限都
是“W”。采用先验证后执行的方法,显然这种方法提高 edit-config操作的效率。可写操作的
权限验证过程如图 4所示。
图 错误!文档中没有指定样式的文字。-5 写操作的验证过程
步骤(71):根据请求报文获取模块名。
步骤(72):根据模块名过滤权限集。接着判断在过滤出的权限集中是否存在“—”权限,
如果存在则转向步骤(80),否则继续判断带有 operation 属性的节点是否设置了权限。如
果是则根据权限类型判断操作的可行性,否则定位到该节点的上一级节点。
-8-
中国科技论文在线
步骤(73):判断对当前节点是否设置了权限,如果是则根据权限的类型判断操作的可
行性,否则判断是否存在父节点。如果存在则转向步骤(73),否则转向步骤(90)。
4. 总结
本文在 NETCONF 网络配置协议的基础上对 RBAC 机制的基本原理和实现做了全面的
分析,并且对访问资源为 XML格式数据的访问控制机制做出了新的探索。该机制利用角色
不仅支持大量用户的管理和认证,而且实现了用户和权限之间的松耦合,大大提高访问控制
的灵活性。但是,该机制仍存在一些不足,验证面向底层数据使得验证效率会随着数据模型
不断变大而降低,这也在一定层度上降低了 XML大数据量的处理能力。考虑到 XML具有
schema文档,它的大小不会随着 XML的变化而变化。如果验证面向 schema的结构,上述
的问题就会得到解决,这也是我们正在研究的课题。
5. 致谢
该课题是在模式识别实验室和华为北研所的大力支持下完成的,在这不仅感谢我的导师
在百忙之中抽出时间来对我们进行辅导,同时也感谢华为北研所的同志对我们项目的帮助。
参考文献
[1] R. Enns, Ed, “NETCONF Configuration Protocol”, RFC4741, pp. 1- 95. Dec. 2006.
[2] E. Lear, K. Crozier, “Using the NETCONF Protocol over the Blocks Extensible Exchange Protocol (BEEP)”,
RFC 4744, Dec. 2006.
[3] T. Ylonen, C. Lonvick, Ed, “The Secure Shell (SSH) Connection Protocol”, RFC4254, Jan. 2006.
[4] T. Goddard, “Using NETCONF over the Simple Object Access Protocol (SOAP)”, RFC 4743, .
[5] 王德强. XML文档的信息安全保护研究.[学位论文]南京大学博士论文.2002.
[6] 李斓 ,何永忠,冯登国.面向 XML 文档的细粒度强制访问控制模型 .软件学报 . ,:
.
[7] 李斓.面向 XML文档的访问控制研究. [学位论文]中国科学院博士论文.2004.
The Implementation and Analysis of Role Based Access
Control Mechanism
Wang Feng, Zhang Bin, Li Guohui, Guo Jun
PRIS Lab, Beijing University of Posts and Telecommunications, Beijing (100876)
Abstract
NETCONF protocol is a valid way to solve network configuration management problems, which is a
XML-based protocol raised by IETF group and has supplied mechanisms of installing, implementing
and deleting network devices. While access control mechanisms is necessary during network
management, this paper introduces the analysis and implementation of role based access control
mechanism under the NETCONF protocol, which has a entity called role, not only supporting
numerous users access but increasing the flexibility to control and administer users.
Keywords: NETCONF; RBAC; XML; access control