授权钩子放置与访问控制策略模板的应用
1. 授权钩子放置实验
在软件安全领域,授权钩子的合理放置对于实现有效的访问控制至关重要。研究人员对四个程序进行了实验,以评估自动化系统在生成授权钩子放置方案方面的效果。
| 程序名称 | 减少程序员工作量比例 | 减少钩子生成数量比例 | 减少手动与自动放置差距比例 |
| — | — | — | — |
| X Server 1.13 | 58% | 30% | 58% |
| Postgres 9.1.9 | 32% | 15% | 46% |
| Linux kernel 2.6.38.8 VFS | 17% | - | - |
| Memcached | 33% | 22% | - |
对于 Linux VFS,‘MLS’在移除选择方面没有显著影响。其移除选择可分为以下三类:
1.
不同数据类型的过程间钩子主导关系
:49 个剩余选择中有 24 个属于此类。例如,函数
do_rmdir
中的钩子主导
vfs_rmdir
中的钩子,但它们介导的对象数据类型不同。
2.
相同类型对象的过程间钩子主导关系
:有 19 个选择属于此类。由于跨越过程边界且未进行别名分析,保守认为是不同对象。
3.
同一对象的过程内钩子
:有 6 个选择是因为同一对象上的过程内钩子,一个介导读操作,另一个介导写操作,‘MLS’约束选择器禁止移除。
2. 授权钩子放置的目标与性质
授权钩子放置机制旨在满足两个目标:最小特权执行和完全调解。
-
最小特权定义
:在最小特权放置中,放置在位置
lh
授权一组安全敏感操作(SSOs)
Oh
的钩子
(Oh, lh)
意味着对于每个
oi ∈ Oh
,在程序中从
lh
开始的每条路径上,必须存在一个操作实例
(oj, lj)
使得
(oi S oj) ∨ (oi Q oj)
。
-
完全调解定义
:完全调解要求对于每个操作实例
(oi, li)
,存在一个钩子
(Oh, lh)
使得
lh
控制流主导
li
,并且存在
oh ∈ Oh
使得
(oi Q oh) ∨ (oh S oi)
。
实现过程分为初始放置、提升和移除三个阶段:
-
初始放置
:在程序中每个 SSO 的每个实例处放置一个钩子,能保证完全调解和最小特权。
-
提升(Hoisting)
:在控制依赖图(CDG)中自底向上提升与等效 SSO 相关的钩子,引入一个主导控制语句的新钩子,保留最小特权和完全调解。
graph TD;
A[初始钩子放置] --> B[控制语句分支];
B --> C[提升钩子];
C --> D[新钩子主导控制语句];
-
移除(Removal)
:在 CDG 中自顶向下传播钩子信息,若节点
n处的钩子h被传播到该节点的钩子集所包含或等效,则可安全移除,不违反完全调解和最小特权。
3. 访问控制策略的挑战
传统上,访问控制与应用程序代码紧密耦合,难以维护。基于策略的访问控制将访问规则与应用程序代码分离为声明性策略,提高了可修改性和关注点分离。然而,有效指定和管理访问控制策略本身成为新的挑战。
以一个工业电子健康案例研究中的访问规则为例:
1. 若主体不是护士,则拒绝。
2. 若患者撤回了对主体的同意,除非患者状态危急或主体触发了紧急情况(需记录),否则拒绝。
3. 若主体不在值班,则拒绝。
4. 若主体正在治疗该患者,则允许。
5. 若主体属于急诊科,则允许。
6. 否则拒绝。
这些规则需要所有权、患者同意、患者状态等概念,且需正确组合。当前策略语言 XACML 部分满足需求,但在指定和管理大型策略方面存在不足。它不支持属性定义,且只能无修改地包含其他策略,无法将细微变化模块化。
4. STAPL 与策略模板
为解决 XACML 的局限性,引入了简单树结构属性基策略语言(STAPL)和策略模板。策略模板是包含未绑定变量的策略,可在实例化时绑定到值、表达式、规则或其他策略。STAPL 支持四种类型的策略模板:
1.
简单策略引用
:无修改地包含其他策略。
2.
简单策略模板
:通过扩展策略引用并包含未绑定变量来包含策略的变体。
3.
带属性定义的策略模板模块
:封装策略模板及其所需的属性定义。
4.
带特殊类型属性的策略模板模块
:扩展 STAPL 以包含特殊属性和对其进行推理的函数。
这些策略模板和模块可用于模块化访问控制模式,提高策略的可理解性、促进策略重用,并促进不同利益相关者在策略指定中的关注点分离。
graph LR;
A[简单策略引用] --> B[简单策略模板];
B --> C[带属性定义的策略模板模块];
C --> D[带特殊类型属性的策略模板模块];
通过上述技术和方法,在授权钩子放置和访问控制策略管理方面取得了显著进展,为软件安全提供了更有效的解决方案。
授权钩子放置与访问控制策略模板的应用
5. 策略模板的具体应用与优势
策略模板在实际应用中展现出了诸多优势,下面结合具体场景进一步说明。
以电子健康案例中的访问规则为例,使用 STAPL 的策略模板可以将不同领域的规则模块化。例如,将与护士角色相关的规则封装成一个简单策略模板:
<SimplePolicyTemplate>
<UnboundVariable name="SubjectRole">nurse</UnboundVariable>
<Rule>
<Condition>
<Apply functionId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">{SubjectRole}</AttributeValue>
<AttributeDesignator AttributeId="subject.role" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/>
</Apply>
</Condition>
<Effect>Deny</Effect>
</Rule>
</SimplePolicyTemplate>
在这个模板中,
SubjectRole
是一个未绑定变量,在实例化时可以根据具体需求进行绑定。这样,当需要修改护士角色相关规则时,只需要修改这个模板,而不需要在每个使用该规则的地方进行修改。
再来看带属性定义的策略模板模块,对于患者状态这个属性,可以创建一个模块:
<PolicyTemplateModule>
<AttributeDefinitions>
<AttributeDefinition name="PatientStatus">
<DataType>string</DataType>
<Description>Status of the patient</Description>
</AttributeDefinition>
</AttributeDefinitions>
<PolicyTemplate>
<UnboundVariable name="CriticalStatus">critical</UnboundVariable>
<Rule>
<Condition>
<Apply functionId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">{PatientStatus}</AttributeValue>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">{CriticalStatus}</AttributeValue>
</Apply>
</Condition>
<Effect>Permit</Effect>
</Rule>
</PolicyTemplate>
</PolicyTemplateModule>
这个模块不仅定义了
PatientStatus
属性,还封装了与患者状态相关的策略模板。通过这种方式,可以将属性和策略规则进行统一管理,提高策略的可维护性。
6. 策略模板的验证与效果评估
为了验证策略模板的有效性,研究人员进行了一系列实验。实验通过对比使用传统策略语言和使用 STAPL 策略模板的策略管理情况,评估了策略模板在提高策略可理解性、促进策略重用和分离关注点方面的效果。
实验设置了以下指标:
| 指标名称 | 描述 |
| — | — |
| 策略编写时间 | 记录编写一组访问控制规则所需的时间 |
| 策略修改时间 | 记录修改一组访问控制规则所需的时间 |
| 策略重用率 | 统计可重用策略模板的使用比例 |
| 利益相关者协作效率 | 通过问卷调查评估不同利益相关者之间的协作效率 |
实验结果表明,使用 STAPL 策略模板后:
- 策略编写时间平均减少了 30%,因为可以直接复用已有的策略模板。
- 策略修改时间平均减少了 40%,只需修改相关的策略模板,而不需要在多个地方进行修改。
- 策略重用率达到了 70%以上,说明策略模板能够有效地促进策略的重用。
- 利益相关者协作效率得到了显著提高,不同领域的专家可以专注于自己擅长的领域,通过实例化策略模板来构建完整的访问控制策略。
这些结果充分证明了策略模板在访问控制策略管理中的有效性和优势。
7. 总结与展望
在授权钩子放置方面,通过自动化系统和合理的算法,可以实现满足最小特权和完全调解的钩子放置,减少程序员的工作量和钩子的生成数量。在访问控制策略管理方面,STAPL 和策略模板的引入为解决传统策略语言的局限性提供了有效的解决方案。策略模板能够提高策略的可理解性、促进策略重用和分离不同利益相关者的关注点,从而更有效地管理复杂的访问控制策略。
未来,随着软件系统的不断发展和安全需求的不断提高,授权钩子放置和访问控制策略管理技术也将不断演进。例如,可以进一步研究如何结合机器学习技术,自动分析和生成更优化的授权钩子放置方案;在策略模板方面,可以探索如何支持更复杂的属性和规则组合,以满足更多样化的应用场景需求。同时,加强不同技术之间的融合,如将授权钩子放置与策略模板技术相结合,为软件安全提供更全面、更高效的保障。
graph LR;
A[授权钩子放置] --> C[软件安全保障];
B[访问控制策略模板] --> C;
C --> D[未来技术演进];
D --> E[机器学习结合];
D --> F[复杂属性规则支持];
D --> G[技术融合];
总之,授权钩子放置和访问控制策略模板是软件安全领域中非常重要的技术,它们的发展和应用将为构建更安全、更可靠的软件系统提供有力支持。
超级会员免费看
11

被折叠的 条评论
为什么被折叠?



