分布式系统的策略控制与访问控制基础设施
策略控制的基础与规则
在分布式系统的策略控制中,抽象系统由转换系统 Sys 表示。Sys 的状态是一个对 (σ, ξ),其中 σ 是 O 的全局状态,ξ 是控制栈的内容。转换关系 → 由一系列推理规则定义,这些规则涵盖了多种操作情况。
| 规则名称 | 规则描述 |
|---|---|
| (GASSIGN) |
IS(n) = “o.a := e”
,
n e2 →n2
,
σ′ = σ[o.a := σ ◦µ(e)]
,
σ′ ◦µ(e2) = true
,
(σ, ξ : (n, µ)) →(σ′, ξ : (n2, µ))
|
| (LASSIGN) |
IS(n) = “r := e”
,
n e2 →n2
,
µ′ = µ[r := σ ◦µ(e)]
,
σ ◦µ′(e2) = true
,
(σ, ξ : (n, µ)) →(σ, ξ : (n2, µ′))
|
| (CALL) |
IS(n) = “o2.m2(e1, ..., ek) ←o1”
,
CAN(σ, o2.m2 ←o1) = true
,
f2 = (IT[o2.m2], ⊥[arg1 := σ ◦µ(e1)] ... [argk := σ ◦µ(ek)])
,
Foblg(σ, beginning of o2.m2 ←o1) = fx,1 : fx,2 : · · · : fx,l
,
(σ, ξ : (n, µ)) →(σ, ξ : (n, µ) : f2 : fx,l : · · · : fx,2 : fx,1)
|
| (RETURN) |
IS(m) = “return e”
,
IS(n1) = “o2.m2(e1, ..., ek) ←o1”
,
f2 = (n1, µ[ret := σ ◦µ2(e)], true)
,
Foblg(σ, end of o2.m2 ←o1) = fx,1 : fx,2 : · · · : fx,l
,
(σ, ξ : (n1, µ) : (m, µ2)) →(σ, ξ : f2 : fx,l : · · · : fx,2 : fx,1)
|
| (FINISH) |
n1 /∈NOoblg
,
n1 e→n2
,
σ ◦µ(e) = true
,
(σ, ξ : (n1, µ, true)) →(σ, ξ : (n2, µ))
|
| (OFINISH) |
n1 ∈NOoblg
,
(σ, ξ : (n1, µ, true))→(σ, ξ)
|
这些规则详细地定义了系统状态的转换逻辑。例如,在方法调用时,只有当
CAN(σ, o2.m2 ←o1) = true
时,方法调用
o2.m2 ←o1
才会执行。并且,当方法刚被调用或执行完毕时,会将一系列栈帧添加到控制栈中,以完成由方法开始或结束所引发的义务。
下面是一个简单的系统行为示例,展示了在无义务情况下系统的运行流程:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([n1]):::startend -->|call| B(n2):::process
B -->|gassign| C(n2):::process
C -->|return n2| D(n2):::process
D -->|ef=true| E(n2):::process
E -->|gassign| F(n2):::process
F -->|finish| G(n3):::process
异常处理机制
为了增强系统的健壮性,引入了异常处理功能。具体包括以下两个方面的扩展:
1.
扩展程序模型
:允许指定在异常刚发生时要执行的操作。
2.
扩展转换系统
:当请求禁止的方法调用时,会触发异常。
一个程序可以表示为一个元组
(NO, TG, EG, IS, IT, VAR)
,其中
EG
是异常边的集合。异常边的元素是一个元组
(n1, r, ty, n2)
,表示当控制在
n1
且发生类型为
ty
的异常时,如果满足
n1 r:ty →EG n2
,则可以将异常捕获并将控制转移到
n2
,同时将异常赋值给
r
;如果不满足该条件,则将异常抛给调用该方法的上级方法。
异常处理的推理规则如下:
|规则名称|规则描述|
| ---- | ---- |
|(THROW1)|
IS(n) = “o1.throw(e1) ←o1”
,
ex 1 = σ ◦µ(e1)
,
(σ, ξ : (n, µ)) →(σ, ξ : (n, µ) : ex 1)
|
|(POLICY EX)|
IS(n) = “o2.m2(e1, ..., ek) ←o1”
,
CAN(σ, o2.m2 ←o1) = false
,
(σ, ξ : (n, µ)) →(σ, ξ : (n, µ) : expolicy)
|
|(CATCH)|
n r:typeof(ex) →EG n2
,
(σ, ξ : (n, µ, ef ) : ex) →(σ, ξ : (n2, µ[r := ex]))
|
|(THROW2)|
n r:typeof(ex) →EG n2
对于任何
n2
和
r
都不成立,
(σ, ξ : (n, µ, ef ) : ex) →(σ, CASTOFF(ξ : (n, µ, ef )) : ex)
|
其中,
CASTOFF
映射的定义如下:
CASTOFF(f1) = ϵ
CASTOFF(ξ : f1 : f2) =
{
ξ : f1, if ef 1 = true or n2 /∈NOoblg
CASTOFF(ξ : f1), otherwise
}
系统实现
在面向对象的编程环境(如 Java)中实现策略控制系统。将多对象系统中的成员称为基础对象,为每个基础对象附加一个新引入的元对象,类似于反射授权系统。基础对象之间不能直接通信,而是委托其元对象发送或接收消息。
以下是基础对象的 Java 实现示例:
class ObjectA extends BaseObject {
void methodA() {
BaseObject objB = PolicyController.getObject("somewhere/objectB");
Message msg = new Message("methodB", new Object[] {a1, a2});
sendMessage(msg, objB); // Send a message toward objectB.
}
}
class ObjectB extends BaseObject {
void methodB(Class1 p1, Class2 p2) {
...
}
}
在这个实现中,
ObjectA
的
methodA
方法通过
sendMessage
方法向
ObjectB
发送消息。
sendMessage
会调用调用者元对象的
delegateToSend
方法,元对象将消息传递给被调用者的元对象,然后调用
BaseObject
的
receiveMessage
方法,最终调用指定的方法(如
methodB
)。策略控制由元对象和策略解释器实现,元对象首先检查方法调用是否被允许,策略解释器计算
CAN
谓词的真值,如果为假则抛出策略违规异常,然后元对象执行操作和相关义务。
分布式系统访问控制的挑战
分布式系统中的对象通常具有异构的安全需求,这给底层安全机制,尤其是访问控制系统带来了重大挑战。常见的问题包括:
1.
用户未知性
:对象常被先前未知的用户访问,基于订阅的方案不适用。
2.
活动绑定
:版权协议执行、支付等活动必须与对象访问绑定。
3.
所有者控制
:对象的发起者或所有者需在对象被访问后仍保持控制。
4.
灵活性要求
:由于对象的异构性,需要高度的灵活性。
5.
动态性需求
:能够动态透明地更改访问控制参数至关重要。
6.
自动条件设置
:基于对象信息自动建立访问条件很重要。
然而,分布式系统的访问控制常依赖集中式安全管理,这种方式存在诸多缺点,如安全攻击和容错的薄弱点、不利于所有者保留控制机制的部署、降低系统性能以及强制实施不适合异构用户组和组织的统一访问控制方案。而现有的分布式安全管理系统也存在开放性问题,缺乏所需的灵活性和可管理性。
XML 基安全内容分发(XSCD)基础设施
为了解决上述问题,提出了 XML 基安全内容分发(XSCD)基础设施。它具有以下特点和优势:
1.
分布式访问控制与执行
:提供分布式的访问控制和执行机制。
2.
安全内容分发
:确保内容的安全分发。
3.
PMI 集成
:通过定义组件的语义描述机制,实现与特权管理基础设施(PMI)的集成。
4.
语义策略语言(SPL)
:引入 XML 基的策略定义语言 SPL,用于简单地指定策略,可由智能卡等能力有限的处理器评估,并便于语义策略验证过程。SPL 策略具有模块化和无歧义组合的特点。
5.
灵活自动化策略关联
:解决策略与对象的灵活自动化关联问题以及策略组合问题。通过扩展移动策略的概念,允许在不可信系统中执行策略,并广泛使用 XML 元数据技术。
相关工作对比
在访问控制方面,传统的访问控制方案(如 MAC、DAC 或 RBAC)不适用于用户未知或注册用户众多的场景。静态用户分组不够灵活,无法满足动态系统的需求。
在安全内容分发方面,一些基于自安全信息包的系统(如 IBM 的 Cryptolope 和 Intertrust 的 Rights|System 平台)存在平台依赖、缺乏集成支付方案等问题,不适用于低价值交易和偶尔的业务关系。
在政策规范方面,现有的 XML 基语言(如 XACL、XrML 等)不支持策略参数化和组合等相关属性,且许多功能在特定应用场景中并非必要。
Author - X 系统和 FASTER 项目针对 XML 文档的访问控制提出了类似系统,但它们的可扩展性有限,分别存在依赖 DTD 或 XML - Schema 以及集中式或服务器端的问题。
综上所述,XSCD 基础设施通过创新的设计和技术,有望解决分布式系统中对象访问控制和安全内容分发的诸多难题,为分布式系统的安全运行提供有效的解决方案。未来,还可以进一步研究和优化 XSCD 的性能和功能,以适应不断变化的分布式系统环境。
分布式系统的策略控制与访问控制基础设施
XSCD 基础设施的构建模块
XSCD 基础设施由多个关键部分组成,这些部分协同工作,实现了分布式访问控制和安全内容分发的功能。以下是对这些构建模块的详细介绍:
-
基础对象与元对象
- 基础对象是分布式系统中的核心元素,代表了实际的资源或服务。每个基础对象都关联一个元对象,元对象负责处理基础对象的通信和策略控制。
- 基础对象不能直接与其他基础对象通信,而是通过元对象进行消息的发送和接收。这种间接通信方式使得策略控制能够在元对象层面进行统一管理。
-
策略解释器
-
策略解释器是 XSCD 基础设施的重要组成部分,它负责计算
CAN谓词的真值,以确定方法调用是否被允许。 - 当元对象接收到方法调用请求时,会将请求传递给策略解释器。策略解释器根据系统的全局状态和策略规则,判断该方法调用是否符合安全策略。如果不符合,策略解释器将抛出策略违规异常。
-
策略解释器是 XSCD 基础设施的重要组成部分,它负责计算
-
语义策略语言(SPL)
- SPL 是一种基于 XML 的策略定义语言,用于简单地指定策略。它具有模块化和可组合的特点,使得策略的定义和管理更加灵活。
- SPL 策略可以由智能卡等能力有限的处理器进行评估,这为在资源受限的设备上实现安全策略提供了可能。同时,SPL 便于进行语义策略验证过程,确保策略的正确性和一致性。
-
XML 元数据技术
- XML 元数据技术在 XSCD 中被广泛应用,用于描述对象的属性、策略规则和其他相关信息。
- 通过使用 XML 元数据,系统能够实现对象和策略的灵活关联,以及策略的自动组合和应用。XML 元数据还使得不同系统之间的数据交换和互操作更加方便。
XSCD 基础设施的工作流程
XSCD 基础设施的工作流程可以分为以下几个主要步骤:
-
请求发起
- 基础对象发起方法调用请求,将请求传递给其关联的元对象。
-
例如,在 Java 实现中,
ObjectA的methodA方法通过sendMessage方法向ObjectB发送消息,sendMessage会调用调用者元对象的delegateToSend方法。
-
策略检查
- 元对象接收到请求后,将请求传递给策略解释器进行策略检查。
-
策略解释器计算
CAN谓词的真值,如果为真,则允许方法调用继续进行;如果为假,则抛出策略违规异常。
-
消息传递
- 如果策略检查通过,元对象将消息传递给被调用者的元对象。
-
被调用者的元对象接收到消息后,调用
BaseObject的receiveMessage方法,最终调用指定的方法。
-
异常处理
- 如果在方法调用过程中发生异常,系统将根据异常处理规则进行处理。
- 异常可能是策略违规异常,也可能是其他类型的异常。系统会根据异常的类型和异常边的定义,决定是捕获异常还是将异常抛给上级方法。
以下是 XSCD 基础设施工作流程的流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([基础对象发起请求]):::startend --> B(元对象接收请求):::process
B --> C{策略检查}:::decision
C -->|允许| D(元对象传递消息):::process
C -->|禁止| E(抛出策略违规异常):::process
D --> F(被调用者元对象接收消息):::process
F --> G(调用指定方法):::process
G --> H{是否发生异常}:::decision
H -->|是| I(异常处理):::process
H -->|否| J([方法调用完成]):::startend
I -->|捕获异常| K(继续执行):::process
I -->|抛出异常| B(元对象接收请求):::process
XSCD 基础设施的优势总结
| 优势 | 描述 |
|---|---|
| 分布式访问控制 | 提供分布式的访问控制和执行机制,避免了集中式管理的缺点。 |
| 安全内容分发 | 确保内容在分发过程中的安全性,保护对象的隐私和完整性。 |
| PMI 集成 | 实现与特权管理基础设施的集成,增强了系统的安全性和可管理性。 |
| 语义策略语言 | 引入 SPL 语言,使得策略的定义和管理更加简单、灵活和可靠。 |
| 灵活自动化关联 | 解决了策略与对象的灵活自动化关联问题,提高了系统的适应性和可扩展性。 |
总结与展望
综上所述,XSCD 基础设施通过创新的设计和技术,有效地解决了分布式系统中对象访问控制和安全内容分发的诸多难题。它提供了分布式的访问控制和执行机制,确保了内容的安全分发,实现了与特权管理基础设施的集成,并引入了语义策略语言和 XML 元数据技术,提高了系统的灵活性和可管理性。
未来,随着分布式系统的不断发展和安全需求的日益增长,XSCD 基础设施还有很大的发展空间。可以进一步研究和优化 XSCD 的性能和功能,例如提高策略解释器的效率、增强异常处理机制的健壮性、扩展语义策略语言的表达能力等。同时,可以探索将 XSCD 应用于更多的领域,如物联网、云计算等,为这些领域的安全问题提供有效的解决方案。
超级会员免费看
1010

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



