1 / 5
文档名称:

MAC 框架的内核体系结构.doc

格式:doc   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MAC 框架的内核体系结构.doc

上传人:xxj165868 2016/6/18 文件大小:0 KB

下载得到文件列表

MAC 框架的内核体系结构.doc

相关文档

文档介绍

文档介绍:MAC 框架的内核体系结构 TrustedBSD MAC 框架为大多数的访问控制模块提供基本设施, 允许它们以内核模块的形式灵活地扩展系统中实施的安全策略。如果系统中同时加载了多个策略, MAC 框架将负责将各个策略的授权结果以一种(某种程度上)有意义的方式组合,形成最后的决策。 内核元素 MAC 框架由下列内核元素组成: 框架管理接口并发与同步原语策略注册内核对象的扩展性安全标记策略入口函数的组合操作标记管理原语由内核服务调用的入口函数 API 策略模块的入口函数 API 入口函数的实现(包括策略生命周期管理、标记管理和访问控制检查三部分) 管理策略无关标记的系统调用复用的 mac_syscall() 系统调用以 MAC 的策略加载模块形式实现的各种安全策略 框架管理接口对 TrustedBSD MAC 框架进行直接管理的方式有三种: 通过 sysctl 子系统、通过 loader 配置, 或者使用系统调用。多数情况下, 与同一个内核内部变量相关联的 sysctl 变量和 loader 参数的名字是相同的, 通过设置它们, 可以控制保护措施的实施细节, 比如, 某个策略在各个内核子系统中的实施与否等等。另外,如果在内核编译时选择支持 MAC 调试选项,内核将维护若干计数器以跟踪标记的分配使用情况。通常不建议在实用环境下通过在不同子系统上设置不同的变量或参数来实施控制, 因为这种方法将会作用于系统中所有的活跃策略。如果希望对具体策略实施管理而不相影响其他活跃策略, 则应当使用策略级别的控制,因为这种方法的控制粒度更细,并能更好地保证策略模块的功能一致性。与其他内核模块一样,系统管理员可以通过系统的模块管理系统调用和其他系统接口, 包括 boot loader 变量, 对策略模块执行加载与卸载操作; 策略模块可以在加载时, 设置加载标志, 来指示系统对其加载、卸载操作进行相应控制,比如阻止非期望的卸载操作。 策略链表的并发与同步在运行时, 系统中活跃的策略集合可能发生变化,然而对策略入口函数的使用操作并不是原子性的, 因此, 当某一个入口函数正被使用时, 系统需要提供额外的同步机制来阻止对该策略模块的加载与卸载, 以确保当前活跃的策略集合不会在此过程中发生改变。通过使用" 框架忙”计数器, 就可以做到这一点: 一旦某个入口函数被调用, 计数器的值被增加 1; 而每当一个入口函数调用结束时,计数器的值被减少 1 。检查计数器的值,如果其值为正,框架将阻止对策略链表的修改操作, 请求操作的线程将被迫进入睡眠, 直到计数器的值重新减少到0 为止。计数器本身由一个互斥锁保护, 同时结合一个条件变量( 用于唤醒等待对策略链表进行修改操作的睡眠线程) 。采用这种同步模型的一个副作用是,在同一个策略模块内部, 允许嵌套地调用框架,不过这种情况其实很少出现。为了减少由于采用计数器引入的额外开销,设计者采用了各种优化措施。其中包括,当策略链表为空或者其中仅含有静态表项( 那些只能在系统运行之前加载而且不能动态卸载的策略)时, 框架不对计数器进行操作, 其值总是为 0, 从而将此时的同步开销减到 0。另一个极端的办法是, 使用一个编译选项来禁止在运行时对加载的策略链表进行修改, 此时不再需要对策略链表的使用进行同步保护。因为 MAC 框