操作系统与虚拟化安全重点 5.2.GFAC与FLASK安全体系结构
本文对比分析了两种访问控制体系结构——GFAC与FLASK。GFAC采用策略中立设计,将访问控制实施(AEF)与决策(ADF)分离,支持多策略模块化组合,但存在性能开销较大的问题。FLASK在GFAC基础上发展而来,通过客体管理器(OM)与安全服务器(SS)的协作,实现了更精细的动态策略管理,其特点包括:细粒度访问控制、权限实时撤回、多实例化支持以及高效的缓存机制(AVC)。FLASK架构已成功应
·
GFAC与FLASK安全体系结构
一、GFAC(广义存取控制框架)的主要特点
1. 设计目标与核心思想
GFAC的设计目标是为多安全策略提供一个统一的表达与支持框架。其核心思想是将访问控制的实施(AEF)与决策(ADF)分离,从而实现策略的模块化与可配置性。这样用户可以根据需要选择并组合不同的安全策略模块,而无需修改系统底层实施逻辑。
2. 结构组成
- AEF(访问控制实施部分):负责接收访问请求,并依据ADF的决策结果执行“允许”或“拒绝”操作。
- ADF(访问控制决策部分):负责根据安全策略和元策略进行访问决策,参考ACI(访问控制信息)和ACR(访问控制规则)。
- ACI(访问控制信息):包括主体与客体的安全属性,如用户身份、安全等级、角色等。
- ACR(访问控制规则):形式化描述安全属性之间的关系,由权威机构制定。
3. 主要特点总结
- 策略中立性:AEF与具体策略解耦,支持策略的动态添加与替换。
- 多策略支持:可同时支持保密性、完整性等多种安全目标。
- 形式化与可验证性:每个策略均可形式化描述,并可验证其正确实施。
- 权威驱动:安全属性与规则由“权威”定义与管理,确保策略的集中控制。
- 缺点:由于决策与实施的分离及多策略并行处理,系统性能开销较大,特别是在策略复杂时更为明显。
二、FLASK安全体系结构的主要特点
1. 设计背景与目标
FLASK是在DTOS基础上发展而来的多策略安全框架,旨在支持动态安全策略和细粒度访问控制,特别强调权限实时撤回和策略一致性维护。
2. 核心架构
FLASK体系结构由两部分组成:
- 客体管理器(Object Manager, OM):负责安全策略的执行与实施。
- 安全服务器(Security Server, SS):负责安全策略的决策与策略逻辑维护。
3. 主要特点总结
- 策略与实施分离:延续GFAC思想,但更强调动态性与实时性。
- 支持细粒度访问控制:可控制到文件、进程、网络端口等系统资源。
- 支持动态策略更新与权限撤回:系统能在运行时更新策略并实时撤销已授权限。
- 支持多实例化:可根据用户安全级别动态创建资源的不同实例(如不同安全级别的/tmp目录)。
- 标识机制灵活:使用SID(安全标识符)与安全上下文分离,既保证效率又支持策略语义。
- 缓存机制高效:通过AVC(访问向量缓存)缓存决策结果,减少对SS的频繁查询。
- 广泛应用于SELinux:FLASK成为SELinux等现代安全系统的核心架构。
三、FLASK体系结构中OM与SS的基本组成与作用
1. 客体管理器(OM)的组成与作用
OM是策略的执行者,负责在系统调用级别实施访问控制。其基本组成包括:
| 组成部分 | 功能说明 |
|---|---|
| 访问决策接口 | 接收客户端访问请求,向SS或AVC查询是否允许访问。 |
| 标记决策接口 | 为新创建客体请求安全标识(SID),由SS决策后绑定。 |
| 多实例化决策接口 | 为多实例化资源选择对应安全级别的实例。 |
| 访问向量缓存(AVC) | 缓存访问决策结果,提升系统性能,减少SS负载。 |
| 策略变更通知处理 | 接收SS发出的策略变更通知,更新本地状态并确保策略一致性。 |
2. 安全服务器(SS)的组成与作用
SS是策略的决策者与管理中心,其基本组成与作用如下:
| 组成部分 | 功能说明 |
|---|---|
| 策略决策引擎 | 根据策略逻辑(访问规则、标记规则、多实例化规则)进行访问控制决策。 |
| SID与上下文映射表 | 维护SID与可变长安全上下文之间的映射关系。 |
| 新客体SID分配 | 为OM创建的新客体分配合适的SID。 |
| 成员客体SID分配 | 为多实例化资源中的成员分配合适的SID。 |
| AVC控制机制 | 可向OM发送指令以清除或更新AVC缓存,确保策略一致性。 |
| 策略加载与更新接口 | 支持动态加载、更新安全策略数据库,并通知所有OM。 |
| 自身缓存机制 | SS也可缓存决策结果,以提升响应速度。 |
3. OM与SS的协作流程示例
以创建文件为例:
- 用户请求创建文件 → OM向SS请求SID。
- SS根据标记规则确定安全上下文,返回对应SID。
- OM将SID绑定到新文件,后续访问时先查AVC,若无缓存则向SS发起访问决策请求。
- 若策略变更,SS通知OM更新AVC,确保后续访问符合新策略。
四、总结对比:GFAC vs FLASK
| 特性 | GFAC | FLASK |
|---|---|---|
| 核心架构 | AEF + ADF 分离 | OM + SS 分离 |
| 策略支持 | 多策略静态组合 | 多策略动态支持 |
| 权限撤回 | 未强调 | 支持实时撤回 |
| 标识机制 | 属性与规则分离 | SID + 安全上下文 |
| 缓存机制 | 未明确 | AVC + SS缓存 |
| 典型应用 | 早期多策略系统 | SELinux、现代安全操作系统 |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)