
440
Journal of Software 软件学报 Vol.31, No.2, February 2020
flexibility of policy management from a tenant’s perspective. And the performance overhead for policy evaluation is 4.8%, and the
invasiveness is about 0.42%.
Key words: access control model; policy l anguage; po licy tr anslation; in terpreter; abstr act syntax tr ee
近年来,云计算已经成为企业减少开销、按需分配计算资源的重要手段
[1,2]
.目前,主流云平台通常利用 Web
接口提供服务.由于这些接口直接暴露在 Internet 上,因此,为了防止数据泄露和非授权访问,有必要利用访问控
制策略对云平台资源进行安全防护.近年来,学术界提出了多种访问控制策略描述语言,如 XACML(extensible
access control markup langua ge)
[3]
、SPL (security policy language )
[4]
、Ponde r
[5]
等.目前较为主流的 XACM L 语言
由标准组织 OASIS 提出,采用基于属性访问控制(attribute-based access control,简称 ABAC) 模型
[6]
.然而,除了
JBoss、Axiomaics、OpenAZ 等系统外,XACML 并没有被业界云平台广泛应用.大型公有云提供商如 AWS
(Amazon Web service s )、Micros oft Azure 等更倾向于自行设计一套策略描述语言用于自身平台.类似的还有 HP
Openview PolicyXpert、CiscoAssure 等网络管理平台,也都仅支持自己的策略语言
[7]
.OpenStack 作为目前主流的
开源 IaaS(infrastructure as a service)云平台,利用 Keystone 组件为其他服务提供统一的身份认证,然而访问控制
则依赖于云主机上本地存储的策略文件.该策略文件除了云服务提供商以外,其他人无法进行修改.OpenStack
策略支持 ABAC 及基于角色访问控制(role-based access control,简称 RBAC)
[8,9]
.这些模型都是硬编码到云平台
中,并且缺乏自定义功能.虽然目前多策略、混合策略成为访问控制策略领域的研究热点
[10−12]
,然而这些解决方
案仍然侧重于提高策略描述语言的表达能力和功能,大多数存在语法复杂、实现复杂度过高、难以直接适配实
际环境等问题.
可见,当前云平台上存在多种不同的访问控制机制、策略语言.其差异具体表现为 3 个方面.
1) 各访问控制模型在概念上存在区别,难以互通.如 RBAC 定义了角色概念,ABAC 定义了属性概念等.
2) 即使访问控制模型相同或相似,不同的策略语言在语法层面仍存在巨大差异.例如,XACML 与
OpenStack 策略都支持 ABAC,然而 XACML 定义了策略集、策略、规则、集成算法等元素,并采用
XML 语法;而 OpenStack 策略则采用较为简单的“条件-动作”式的规则集合表达正向授权动作,基于
JSON 语法.
3) 策略决策、实施的逻辑需要依赖某种具体程序设计语言来实现.不同云平台的开发语言不同,导致策
略决策、实施逻辑无法跨云平台使用.例如,OpenStack 采用 Python 实现,CloudStack 则采用 Java 实现,
容器云平台 Kubernetes 则采用 Go 实现.即使这些云平台支持相同的访问控制模型及策略语言,其策
略决策、实施逻辑仍需要在多个开发语言上分别进行实现.
本文假设云用户具有策略编写的能力,可以为本租户内的云资源定义访问控制策略.上述 3 个差异会造成
如下问题:(1) 若同时使用多个云平台,云用户则需要学习多种安全策略语言,学习成本较高,并且云迁移时,安全
策略无法迁移,需要重新编写;(
2) 云服务提供商需要自行设计一套安全策略语言,并设计、实现相应的访问控制
机制,设计、开发成本较高.
为了解决上述问题,本文提出一种基于请求(request)、策略(policy)、匹配器(matcher)、策略效果(effect)的
访问控制元模型 PERM(policy-effect-request-matcher),并设计了相应的策略描述语言 PML(PERM modeling
language).PML 能够表达一系列现有的访问控制模型,如 ACL(access control list ),BLP(Bell LaPadula)
[13]
、RBAC、
ABAC 等.基于 PML 提出了策略实施机制 PML-EM(PML enforcement mechanism).PML-EM 包含策略规则层、
策略规则适配器层、模型层、解释器层等.现有的访问控制机制在实施安全策略时,通常直接依据某种具体策
略语言设计相应的决策逻辑.这种方式虽然简单,但与策略语言、策略所基于的访问控制模型、程序实现语言
都存在紧耦合,从而不具备通用型.本文提出了访问控制机制的 3 个性质:策略语言无关性、访问控制模型无关
性、程序设计语言无关性.在 PML-EM 中,策略规则适配器层实现了策略语言无关性,模型层实现了访问控制模
型无关性,解释器层实现了程序设计语言无关性.这 3 个性质对云用户、云服务提供商的意义在于:
1) 策略语言无关性:策略编写者可以利用一种自身所熟悉或业务所依赖的安全策略语言,对所有支持
PML-EM 的云平台实施统一访问控制.不需要因为业务迁移到不同云平台再学习额外的策略语言,极
评论