Board logo

标题: 访问控制框架中多策略模块的组合方法(2) [打印本页]

作者: look_w    时间: 2018-5-10 08:54     标题: 访问控制框架中多策略模块的组合方法(2)

3. 访问控制框架中基于控制标记的多策略组合方法3.1        基本思想前面我们已经介绍几种访问控制框架中多安全策略的组合问题分别是如何解决的,总的来说,主要是两类。一类是多安全策略之间是并列关系,没有主从、优先顺序,访问控制决定需要满足所有的多安全策略,如Flask、GFAC和TrustedBSD中的MAC框架;另一类是多安全策略之间有主从关系,安全策略的组合问题由最先向系统注册也即主安全模块决定,它可以允许或禁止多安全策略模块的堆栈,如果允许,则需要处理模块堆栈的相关处理,如LSM。
对于前一种情况,多安全策略并列关系,这是多安全策略组合最简单也是最常用的方式,但是应用环境多样性和多变性,不同的系统运行环境对安全策略的需求不同,需要多种安全策略之间存在一种主从、优先顺序。对于第二种情况,安全策略之间的确存在优先顺序,但是其将安全策略的组合问题交给主安全策略模块,增加了主安全模块的设计及实现难度。在当前的LSM实现中,因为相互之间存在的冲突并没有很好地解决,多安全策略的堆栈中辅助安全模块主要是那些不影响主安全模块中内核数据结构安全域的安全模块,如能力等。
为了满足现实系统运行环境对多种策略有主从、优先级的需求,同时不增加安全策略模块的设计难度,我们提出一种新的多策略组合方法:基于控制标记的多策略组合方法。当安全管理员加载安全策略模块时,根据现实系统的需要,提供一个策略模块优先级控制标记control_flag,根据控制标记的不同组织访问控制策略模块,并形成相应的访问控制决定。策略模块的控制标记有:
表1说明了一个例子配置情况,在此使用MLS、BIBA和LOMAC策略模块。Required控制标记表明MLS访问控制策略对于形成最终的访问控制决定是必要的,对于BIBA访问控制策略作为一种可选择的策略,LOMAC策略模块也是必要的。只有在满足MLS和LOMAC策略模块之后才可以获得访问权限。
表一:
顺序模块类型控制标记1MLSrequired2BIBAoptional3LOMACrequired
3.2        基于控制标记的多策略组合方法在基于Linux的GFAC上的实现针对基于控制标记的多策略组合思想,我们选择在基于Linux的GFAC框架上实现。RSBAC是一个基于GFAC实现的安全操作系统,它支持多个安全策略,包括MAC、FF、RC、CAP(能力)等。如何在Linux上构建RSBAC系统,可以参考网站:。
针对具体的某个访问请求,RSBAC系统定义了4个ADF的判定返回值:
enum rsbac_adf_req_ret_t  {NOT_GRANTED,GRANTED, DO_NOT_CARE, UNDEFINED };
RSBAC还定义了系统支持的多个安全策略:
enum  rsbac_switch_target_t {MAC,FC, FF,RC,AUTH,CAP, SW_NONE};
系统定义一个存放不同策略情况下的访问判定结果的数组:
enum rsbac_adf_req_ret_t   mod_result[SW_NONE]
当有某个访问请求时,系统调用对应的访问判定函数,如在MAC访问控制策略下,调用rsbac_adf_request_mac()函数,将判定结果值存储于mod_result[MAC]中,然后将当前结果值与以前的result进行计算,以判定在包括MAC策略下的访问判定,代码包括:
1
2
3
4
5
6
7
8
      mod_result[MAC] = rsbac_adf_request_mac(request,
                                        caller_pid,
                                        target,
                                        tid,
                                        attr,
                                        attr_val,
                                        owner);
result = adf_and_plus(result, mod_result[MAC]);




rsbac_adf_request_mac()函数中的参数,包括是访问请求,主体、客体的标识和属性等,这些都是MAC访问控制策略在形成访问判定时所必需的参数,result是在复合策略情况下的访问判定。
adf_and_plus()函数是计算两个判定结果的复合结果,判定情况如下:
从表中可以看出,只有当判定结果是GRANTED或DO_NOT_CARE时,才会允许该访问请求。
在RSBAC系统的基础上,为了实现基于控制标记的多策略组合方法,本文新定义不同策略对应的控制标记:
enum rsbac_control_flag_t  { REQUIRED, REQUISITE, OPTIONAL,SUFFICIENT};
然后将不同策略与控制标记对应起来:
enum rsbac_control_flag_t  mod_control_flag[SW_NONE]
通过赋值,可以将不同策略对应某个不同的控制标记,从而说明不同策略的重要性及在形成访问判定时的优先级。
mod_result[]数组还是存放在不同策略下形成的判定结果,主要是修改adf_and_plus()函数以体现基于控制标记的多策略组合方法的思想。
在进行访问控制判定时,首先需要查找访问控制策略配置情况,根据控制标记按顺序调用已注册的策略模块对应的访问控制函数,返回访问控制判定结果。访问控制判定算法如下:
(1)        初始化
定义返回判定结果的初始值result、访问控制策略数组的第一项:poliy[0]
(2)        按顺序遍历访问控制策略数组
针对当前指向的策略模块作出访问控制决定,然后根据控制标记形成总的判定结果while(policy是策略数组中未作出判定的策略)
执行当前策略对应的访问控制检查函数,返回结果mod_result;
针对result、mod_result和mod_control_flags三个值形成当前的result值
1
2
3
4
5
6
7
8
9
10
11
12
13
如果mod_control_flags为required,则
如果mod_result为允许,则当前result值不变;
如果mod_result为禁止,则当前result为错误情况值;
如果mod_control_flags为requisite,则
如果mod_result为允许,则当前result值不变;
如果mod_result为禁止,则当前result为错误情况值,马上返回错误结果;
如果mod_control_flags为optional,则
如果mod_result为允许,则当前result值不变;
如果mod_result为禁止,则当前result为特殊情况值;
如果mod_control_flags为sufficient,则
如果mod_result为允许,则当前result为允许,马上返回结果
如果mod_result为禁止,则当前result为特殊情况值,类似于optional控制标记;
    i++;




(3)        返回判定结果result
具体在RSBAC中上述算法的实现对其源代码的影响很小,主要是对返回值进行比较判定。
3.3        分析多安全策略模块如何有效组合以满足现实系统环境中不同的策略需求,这是比较重要且比较实际的问题。上述基于控制标记的多策略组合方法可以有效地解决系统在不同条件下对安全策略的不同需求;而且实现比较简单,对访问控制模块的影响也比较小。
基于控制标记的多策略组合方法,只是需要安全操作系统的管理员加载策略模块时作出相应的控制标记的选择,同时安全策略模块的加载顺序也是很重要的,需要特别注意,当然对于安全操作系统的管理员,加载哪些安全策略模块以及以什么样的顺序加载都是应该知道的。这其实并没有增加系统本身及管理的复杂性。
我们知道,如果所加载的多策略模块的控制标记都选择为required,则各个安全策略没有优先及侧重点,只有当所有的安全策略都满足时才允许访问控制请求。这是基于控制标记的多策略组合方法的一种特例,与当前的一些多策略组合方法一致。
4.        结论安全操作系统的发展需要支持动态多安全策略,支持策略灵活性,访问控制框架可以很好地满足安全操作系统发展的需要。但是多个安全策略之间可能存在冲突,如何有效组织多个安全策略形成最终的安全决定,则是访问控制框架比较重要的问题。本文通过对当前主要的访问控制框架进行分析,我们知道多安全策略的组合问题解决方法主要是两类:一类是多安全策略之间是并列关系,没有主从、优先顺序,访问控制决定需要满足所有的多安全策略;另一类是多安全策略之间有主从关系,安全策略的组合问题由主安全策略决定。前一种不能很好地满足系统环境的多样化和多变化的需要,而后一种则增加了安全策略模块设计及实现的难点。本文提出的基于控制标记的多策略组合方法在基本上不增加系统及策略模块的复杂性的基础上,又可以实现多安全策略的主从、优先关系,可以很好地满足实际的需要。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0