MAC 框架的内核体系结构

MAC 框架的内核体系结构

ID:40750202

大小:27.00 KB

页数:5页

时间:2019-08-07

MAC 框架的内核体系结构_第1页
MAC 框架的内核体系结构_第2页
MAC 框架的内核体系结构_第3页
MAC 框架的内核体系结构_第4页
MAC 框架的内核体系结构_第5页
资源描述:

《MAC 框架的内核体系结构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MAC框架的内核体系结构  TrustedBSDMAC框架为大多数的访问控制模块提供基本设施,允许它们以内核模块的形式灵活地扩展系统中实施的安全策略。如果系统中同时加载了多个策略,MAC框架将负责将各个策略的授权结果以一种(某种程度上)有意义的方式组合,形成最后的决策。6.5.1内核元素  MAC框架由下列内核元素组成:框架管理接口并发与同步原语策略注册内核对象的扩展性安全标记策略入口函数的组合操作标记管理原语由内核服务调用的入口函数API策略模块的入口函数API入口函数的实现(包括策略生命周期管理、标记管理和访问控制检查三部分)管理策略无关标记的

2、系统调用复用的mac_syscall()系统调用以MAC的策略加载模块形式实现的各种安全策略6.5.2框架管理接口  对TrustedBSDMAC框架进行直接管理的方式有三种:通过sysctl子系统、通过loader配置,或者使用系统调用。  多数情况下,与同一个内核内部变量相关联的sysctl变量和loader参数的名字是相同的,通过设置它们,可以控制保护措施的实施细节,比如,某个策略在各个内核子系统中的实施与否等等。另外,如果在内核编译时选择支持MAC调试选项,内核将维护若干计数器以跟踪标记的分配使用情况。通常不建议在实用环境下通过在不同子系统

3、上设置不同的变量或参数来实施控制,因为这种方法将会作用于系统中所有的活跃策略。如果希望对具体策略实施管理而不相影响其他活跃策略,则应当使用策略级别的控制,因为这种方法的控制粒度更细,并能更好地保证策略模块的功能一致性。  与其他内核模块一样,系统管理员可以通过系统的模块管理系统调用和其他系统接口,包括bootloader变量,对策略模块执行加载与卸载操作;策略模块可以在加载时,设置加载标志,来指示系统对其加载、卸载操作进行相应控制,比如阻止非期望的卸载操作。6.5.3策略链表的并发与同步  在运行时,系统中活跃的策略集合可能发生变化,然而对策略入口

4、函数的使用操作并不是原子性的,因此,当某一个入口函数正被使用时,系统需要提供额外的同步机制来阻止对该策略模块的加载与卸载,以确保当前活跃的策略集合不会在此过程中发生改变。通过使用"框架忙”计数器,就可以做到这一点:一旦某个入口函数被调用,计数器的值被增加1;而每当一个入口函数调用结束时,计数器的值被减少1。检查计数器的值,如果其值为正,框架将阻止对策略链表的修改操作,请求操作的线程将被迫进入睡眠,直到计数器的值重新减少到0为止。计数器本身由一个互斥锁保护,同时结合一个条件变量(用于唤醒等待对策略链表进行修改操作的睡眠线程)。采用这种同步模型的一个副

5、作用是,在同一个策略模块内部,允许嵌套地调用框架,不过这种情况其实很少出现。  为了减少由于采用计数器引入的额外开销,设计者采用了各种优化措施。其中包括,当策略链表为空或者其中仅含有静态表项(那些只能在系统运行之前加载而且不能动态卸载的策略)时,框架不对计数器进行操作,其值总是为0,从而将此时的同步开销减到0。另一个极端的办法是,使用一个编译选项来禁止在运行时对加载的策略链表进行修改,此时不再需要对策略链表的使用进行同步保护。  因为MAC框架不允许在某些入口函数之内阻塞,所以不能使用普通的睡眠锁。故而,加载或卸载操作可能会为等待框架空闲而被阻塞相

6、当长的一段时间。6.5.4标记同步  MAC框架必须对其负责维护的安全属性标记的存储访问提供同步保护。下列两种情形,可能导致对安全属性标记的不一致访问:第一,作为安全属性标记的持有者,内核对象本身可能同时被多个线程访问;第二,MAC框架代码是可重入的,即允许多个线程同时在框架内执行。通常,MAC框架使用内核对象数据上已有的内核同步机制来保护该其上附加的MAC安全标记。例如,套接字上的MAC标记由已有的套接字互斥锁保护。类似的,对于安全标记的并发访问的过程与对其所在对象进行的并发访问在语义上是一样的,例如,信任状安全标记,将保持与该数据结构中其他内容

7、一致的"写时复制"的更新过程。MAC框架在引用一个内核对象时,将首先对访问该对象上的标记需要用到的锁进行断言。策略模块的编写者必须了解这些同步语义,因为它们可能会限制对安全标记所能进行的访问类型。举个例子,如果通过入口函数传给策略模块的是对某个信任状的只读引用,那么在策略内部,只能读该结构对应的标记状态。6.5.5策略间的同步与并发  FreeBSD内核是一个可抢占式的内核,因此,作为内核一部分的策略模块也必须是可重入的,也就是说,在开发策略模块时必须假设多个内核线程可以同时通过不同的入口函数进入该模块。如果策略模块使用可被修改的内核状态,那么还需

8、要在策略内部使用恰当的同步原语,确保在策略内部的多个线程不会因此观察到不一致的内核状态,从而避免由此产生的策略误操作。为此

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。