为了保护云资源的安全,防止数据泄露和非授权访问,必须对云平台的资源访问实施访问控制.然而,目前主流云平台通常采用自己的安全策略语言和访问控制机制,从而造成两个问题:(1)云用户若要使用多个云平台,则需要学习不同的策略语言,分别编写安全策略;(2)云服务提供商需要自行设计符合自己平台的安全策略语言及访问控制机制,开发成本较高.对此,提出一种基于元模型的访问控制策略描述语言PML及其实施机制PML-EM.PML支持表达BLP、RBAC、ABAC等访问控制模型.PML-EM实现了3个性质:策略语言无关性、访问控制模型无关性和程序设计语言无关性,从而降低了用户编写策略的成本与云服务提供商开发访问控制机制的成本.在OpenStack云平台上实现了PML-EM机制.实验结果表明,PML策略支持从其他策略进行自动转换,在表达云中多租户场景时具有优势.性能方面,与OpenStack原有策略相比,PML策略的评估开销为4.8%.PML-EM机制的侵入性较小,与云平台原有代码相比增加约0.42%.
In order to protect the cloud resources, access control mechanisms have to be established in the cloud. However, cloud platforms have tendency to design their own security policy languages and authorization mechanisms. It leads to two issues:(ⅰ) a cloud user has to learn different policy languages to customize the permissions for each cloud, and (ⅱ) a cloud service provider has to design and implement the authorization mechanism from the beginning, which is a high development cost. In this work, a new access control policy specification language called PML is proposed to support expressing multiple access control models like BLP, RBAC, ABAC and important features like multi-tenants. An authorization framework called PML-EM is implemented on OpenStack to centralize the authorization. PML-EM is irrelative to policy languages, access control models and programming languages that implement the authorization module. Other policies like XACML policy and OpenStack policy can be automatically translated into PML, which facilitates the migration between the clouds that both support PML-EM. The experimental results indicate PML-EM has improved the 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%.
近年来, 云计算已经成为企业减少开销、按需分配计算资源的重要手段[
可见, 当前云平台上存在多种不同的访问控制机制、策略语言.其差异具体表现为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)[
1) 策略语言无关性:策略编写者可以利用一种自身所熟悉或业务所依赖的安全策略语言, 对所有支持PML-EM的云平台实施统一访问控制.不需要因为业务迁移到不同云平台再学习额外的策略语言, 极大地节省了学习成本和迁移成本.
2) 访问控制模型无关性:策略语言本身通常基于某种访问控制模型, 因此实现访问控制模型无关性是实现策略语言无关性的基础.与策略语言无关性类似, 该性质方便了云用户使用同一套访问控制模型对不同云平台的资源实施访问控制.对云服务提供商而言, 则可以在不显著增加设计成本的情况下, 实现对多种访问控制模型(如BLP、RBAC、ABAC)的支持, 从而满足不同的应用场景.
3) 程序设计语言无关性:云服务提供商不需要使用自身云平台所使用的程序设计语言再将PML解释器再进行实现, 从而极大地降低了云服务提供商的开发成本.解释器通常逻辑比较复杂.由于现代软件迭代速度加快, 即使云服务提供商有意愿直接开发PML解释器, 也很难保证各程序设计语言的PML解释器的版本一致, 后续维护成本高昂.而在采用中间脚本语言如Lua实现PML解释器后, 云服务提供商只需要提供Lua解释器即可, 而Lua解释器在各知名程序设计语言中都有成熟的开源实现, 可以直接采用.
本文在OpenStack云平台上实现了PML-EM框架.实验结果表明, 在性能方面, 与OpenStack原有策略相比, PML的策略评估开销平均为4.8%;在策略转换方面, 实验验证了PML策略转换为XACML、OpenStack、IAM等策略的正确性; 在表达能力方面, PML支持BLP、RBAC、ABAC等访问控制模型以及多租户、RESTful (representational state transfer)[
近年来, 学术界和工业界都致力于研究如何利用访问控制实现更安全的云计算.业界主流公有云AWS通过IAM(identity and access management)组件来实施基于身份的访问控制.IAM为租户提供了用户、组、角色、权限、属性等概念来表达安全策略, 包含了对RBAC和ABAC的支持.其他云平台如Microsoft Azure、Google App Engine也提供了类似的机制.这些安全策略通常都需要采用云服务提供商自己的策略语言来编写, 不同平台的安全策略之间无法通用.
OASIS组织基于ABAC提出了可扩展访问控制标记语言XACML[
Wu等人[
Damianou等人[
实施访问控制策略通常包括策略规则以及实施这些策略规则的逻辑两个部分.一个支持多用户、多安全策略的系统通常支持用户自定义策略规则.然而实施这些策略规则的逻辑通常是静态不可改变的, 导致策略配置方面不够灵活.为了让云用户能够灵活配置自身策略, 需要明确策略评估中策略实施逻辑的概念.由于策略实施逻辑本质上反映了策略规则所属的访问控制模型, 因此有必要将访问控制模型与策略规则进行分离.在本文中, 将反映策略实施逻辑的抽象访问控制模型称为“模型”, 将被实施的策略规则称为“策略”或“策略规则”.模型代表了逻辑, 策略代表数据, 它们之间类似于一个程序中代码与数据之间的关系.
本节提出PERM建模语言(PERM modeling language, 简称PML)来表达访问控制模型及其策略规则.PML语言是一个元模型语言, 其基于本文提出的PERM(policy-effect-request-matcher)元模型.PERM元模型如
PERM元模型
PERM metamodel
Request原语是对访问请求的抽象, 其定义了访问请求的语义.一个访问请求通常由经典的三元组构成:进行访问的主体(subject)、被访问的客体(object)、访问动作(action).PML中描述上述三元组的Request原语可表示为
PML提供了自定制Request原语的能力, 例如, 如果不需要控制到具体的资源, 可采用
Policy原语定义了策略规则的语义, 该字段制定了PML策略的解释器应如何解释策略规则.为简单起见, 本文采用逗号分隔值(comma-separated values, 简称CSV)来作为策略规则的语法.与Request原语类似, 经典的Policy原语也由主体、客体、动作三元组构成:
与其相应的策略规则可以为
策略中的每一行都是一条策略规则.策略规则的第1个元素是策略类型, 该字段与Policy原语相对应, 通过指定不同的策略类型可以支持多个Policy原语, 如
上述绑定类似于变量赋值, 可以在Matcher原语中使用.
Matcher原语定义了策略规则如何与访问请求进行匹配的匹配器, 其本质上是布尔表达式.可以理解为Request、Policy等原语定义了关于策略和请求的变量, 然后将这些变量代入Matcher原语中求值, 从而进行策略决策.Matcher原语支持+, -, *, /等算数运算符、==, !=, > , < 等关系运算符以及 & & (与), ||(或), !(非)等逻辑运算符. Matcher原语最终的运算结果应为布尔值0或1:1表示策略规则满足该匹配器, 0则表示不满足.与上节中列举的经典Policy原语相对应的Matcher原语为
该Matcher原语表示访问请求中的主体、客体、动作三元组应与策略规则中的主体、客体、动作三元组分别对应相同.
Effect原语定义了当多个策略规则同时匹配访问请求时, 该如何对多个决策结果进行集成以实现统一决策, 决策结果包括
该Effect原语表示如果存在任意一个决策结果为
该Effect原语表示如果不存在任何决策结果为
该Effect原语表示当至少存在1个决策结果为
Role原语定义了RBAC中的角色继承关系, 该原语的特点是支持多重RBAC体系的表达.比如, 当主体和客体同时具有角色(或组)的概念时, 主体角色和客体角色两套RBAC体系可以互不干扰.同时支持主体角色和客体角色的Role原语可以定义如下:
上述Role原语表示
上述策略规则表示
该Matcher原语表达了经典的RBAC场景:策略规则定义哪些角色可以具备哪些权限(即采用哪种动作访问哪个资源), 只有当请求主体继承策略规则中指定的角色, 并且请求与策略规则中的资源和动作对应相同时, Matcher原语才会成功匹配该请求与该策略规则.
云平台中通常存在租户的概念.为了实现灵活的授权管理, PML通过域内Role原语来支持租户内的授权.一个域代表一个租户, 域内角色只在本域内生效, 也只能分配本域内的资源的权限.域内角色机制实现了云平台租户间的安全隔离.域内Role原语可以定义为
原语中第3个_表示域的概念.相对应的策略规则的实例如下:
●
●
●
●
相对应的Matcher原语可以为
该实例表示
为了支持ABAC的属性概念, PML采用.(点)语法来表达元素属性(元素即主体、客体、动作等).属性本身也是元素, 因此可以继续获取属性的属性.例如,
上述Matcher原语表示只有当请求的主体所在的域与请求的客体所在的域相同时, 才允许该请求.PML本身也依赖与属性类似的语法, 如
虽然PML的Matcher原语通过各种运算符提供了强大的表达能力, 但是仍有一些复杂的处理逻辑无法用PML表达, 如查询外部数据库、进行复杂数学运算等.PML中提供了桩函数机制以满足自定义处理逻辑的需求.策略编写者可以在PML以外以其他程序设计语言自定义若干桩函数(stub function), 然后将这些函数注册到PML中, 从而被PML的Matcher原语所识别和调用.桩函数与普通函数类似, 可以带有多个参数, 并具有返回值.下面给出桩函数
boolean
}
这样就可以在Matcher原语中指定该函数, 参与到匹配中:
PML提供内置的桩函数, 以满足常用Matcher匹配需求.比如,
访问控制策略需要实施机制来保证策略的决策、实施, 例如, XACML策略由策略决策点PDP来进行实施.现有的策略实施机制都依赖于某种策略语言或访问控制模型, 并且需要在某个具体的程序设计语言上进行实现, 无法很好地满足前文提出的访问控制机制的3个性质:策略语言无关性、访问控制模型无关性、程序设计语言无关性.第2节提出的PML语言能够实现对不同访问控制模型的统一描述, 从而实现访问控制模型无关性.为了实现另外两个性质, 本节在PML的基础上提出了PML策略实施机制(PML enforcement mechanism, 简称PML-EM).
PML-EM的体系结构如
PML策略实施机制PML-EM
PML-EM: PML enforcement mechanism
1) 策略规则层:策略规则层包含各个访问控制策略描述语言的策略规则, 所有策略编写者所制定的策略规则位于该层, 如XACML规则、OpenStack规则、IAM规则等.PML语言除了描述访问控制模型外, 自身也支持描述策略规则, 即PML规则, PML规则也属于策略规则层.与其他策略不同的是, PML规则可以直接与PML模型兼容, 因此不需要额外的策略规则适配器.
2) 策略规则适配器层:策略规则适配器层包含对各个策略描述语言的适配器, 适配器可以将某一种策略语言描述的规则转换为等价的PML规则.例如, XACML策略规则适配器可以将XACML规则等价转换为PML规则.这里, PML规则就类似于一种中间语言.该层通过适配器机制实现了策略语言无关性.需要注意的是, 该转换主要是语法层面的转换, 不包括语义的转换, 语义层面的解析由模型层负责.
3) 模型层:该层包含采用PML语言描述的各种不同的访问控制模型.不同的策略描述语言(如XACML、OpenStack等)的访问控制模型也不同, 因此需要采用PML语言进行统一描述.该层实现了访问控制模型无关性.
4) 解释器层:该层主要负责解析PML模型和规则, 依据解析结果对访问请求进行策略决策, 给出
在PML-EM机制中, 策略规则层即为不同策略语言所描述的具体策略规则, 如XACML规则、OpenStack规则以及本文的PML规则.而模型层则为PML语言所描述的各种不同的访问控制模型, 在第2节已经阐述.因此, 下文主要阐述另外两层:策略规则适配器层和解释器层.
策略规则适配器负责将某种策略语言描述的策略规则(即目标策略)转换为PML模型及PML规则.本节提出一种基于抽象语法树(abstract syntax tree, 简称AST)的策略转换方法.AST常用于编程语言源代码分析领域.将源代码通过词法、语法分析解析为AST后, 该AST不再依赖于具体编程语言语法, 相当于一种通用的“中间语言”, 为下一步处理提供一个清晰的接口.策略语言与编程语言有类似之处, 都具有特定的语法, 因此首先将策略语言(包括目标策略和PML模型、规则)转换为AST进行处理, 可以屏蔽策略语言的语法细节, 有助于实现策略转换.AST是一种无语义损失的表示形式, 意味着策略不仅可以转换为AST, AST还可以转换回原有的策略.利用AST技术, 原来的将目标策略转换为PML模型、规则的问题就可以简化为将目标策略AST转换为PML对应的AST的问题.由于策略语言大多基于某种通用数据格式, 如XML、JSON等, 因此可以直接借助相关的解析器等就能实现将目标策略的各个元素, 如策略、规则、主体、客体、动作等表达成AST.
为了完成策略转换, 给出一种策略转换算法.算法的输入是目标策略AST, 输出是PML对应的AST.目标策略AST也包含对请求格式的定义.策略转换算法的具体步骤如下.
1) 分析目标策略的请求格式AST, 将AST的每个叶子节点转换为Request原语AST的叶子节点.
2) 将目标请求AST中, 每一个带有匹配逻辑的AST子树转换为Matcher原语的AST子树.
3) 将目标策略AST中, 带有策略集成逻辑的AST子树转换为Effect原语的AST子树.
4) 将具有相同子树结构, 并具有同一个父节点的Matcher原语AST子树定义为同类Matcher原语, 将其合并为一个Matcher原语、一个Policy原语以及若干策略规则.
5) 相同格式的Policy原语进行合并, 合并为一个Policy原语, 同时合并对应的策略规则.
上述算法的伪代码如算法1所示.
Input: targetAST:目标策略AST.
Output: pmlAST:PML AST.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
PML解释器主要包含3个原语:加载模型、加载策略和策略决策.本文假设PML模型、策略都存储在策略数据库中.接下来详细介绍这3个原语.
1) 加载模型:负责加载PML模型.输入为策略数据库, 输出为PML模型.加载PML模型主要包括解析各种原语:Request原语、Policy原语、Matcher原语、Effect原语、Role原语等, 以及加载用户注册的桩函数.
2) 加载策略:负责加载PML规则.输入为策略数据库, 输出为PML规则.加载策略较为简单, 主要是将PML规则一条一条地加载到解释器中.如果存在角色继承规则, 则需要在加载完毕时建立角色继承关系树, 从而实现对间接角色继承的判断.每一个RBAC角色体系都具有不同的角色继承关系树, 从而互不干扰.
3) 策略决策:对请求进行策略决策.输入为PML模型、PML规则以及访问请求, 输出为决策结果.在PML中, 访问请求的语义由Request原语定义, PML策略规则的语义则由Policy原语定义.在决策过程中, PML解释器会根据上述语义将访问请求的上下文(即具体的主体、客体、动作等)、每一条PML规则以及所有的桩函数代入到Matcher原语中, 然后对Matcher原语求值.对Matcher的求值可以采用Lua的按字符串执行的内置函数loadstring进行实现.需要注意的是, Role原语(包括域)和属性也是以桩函数的形式定义的, 因此可与用户自定义的桩函数一同代入到Matcher原语中, 不需要特殊处理.由于可能存在多条PML规则, 因此Matcher的求值结果也可能不唯一.这时, PML解释器再通过Effect原语对多个Matcher求值结果进行集成, 从而得到统一的决策结果.算法2描述了策略决策的过程.
Input: model:PML模型; policy:PML策略; request:访问请求.
Output: decision:决策结果.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
由于Matcher需要执行外部的桩函数代码来进行策略决策, 假如桩函数内部存在恶意代码, 则会影响访问控制机制甚至整个云平台系统的安全性.这个问题的解决方案包括:
1) 为桩函数创建沙箱, 桩函数仅在沙箱内执行代码, 不会影响到整个PML解释器以及外部系统.Lua语言环境本身也是一层沙箱, 因此可以作为第2道防线.
2) 静态代码检查, 即服务提供商在为用户注册桩函数之前, 先通过代码静态分析等手段检查桩函数源代码, 确定其没有恶意行为.
3) 定制桩函数编辑接口, 即服务提供商不直接提供编写桩函数代码的功能, 而是将常用的功能封装在编辑接口(可以为命令行或图形界面)中, 用户只能采用预定义的编辑接口定制桩函数的功能, 由于编辑接口的安全性是可控的, 因此该方式也可以有效屏蔽恶意代码.
PML解释器本身采用脚本语言Lua编写.Lua是一种轻量级的脚本语言, 该语言代码通常不直接独立运行, 而是作为脚本语言嵌套在其他程序设计语言中执行特定逻辑.Lua的解释器通常非常轻量级(不大于200KB), 目前, 绝大多数主流程序设计语言如C、Java、Python等都有成熟、开源的Lua解释器实现.因此, 用Lua编写PML解释器具有跨程序设计语言的优势, 从而可实现程序设计语言无关性:需要实施访问控制的系统不需要实现PML解释器, 而只需要嵌入现有的Lua解释器, 即可实现对PML的支持.另外, 从接口交互来讲, 访问控制与系统其他模块的接口比较明确、耦合程度较低, 因此, 用脚本语言实现也不会造成系统复杂度的明显增加.
本文实验环境为OpenStack Pike云平台, 集群中包含1个控制节点(包含网络)、4个计算节点和2个块存储节点.本文实现的原型系统如
采用PML后的OpenStack云平台架构
Architecture of the OpenStack cloud after using PML
Patron组件包括以下3个模块.
1) API模块(patron-api):对外以RESTful接口提供Patron服务, 接受决策请求, 返回决策结果.
2) 决策模块(patron-decide):负责进行策略决策.实现了PML-EM策略实施机制, 包括PML解释器、各策略规则适配器等.
3) 策略更新模块(patron-update):负责策略存储和策略更新.
原型系统中, PML解释器、策略规则适配器采用Lua语言实现, 其他模块则与OpenStack一致, 采用Python实现.这里的PML解释器、策略规则适配器可以在其他系统上重用, 印证了PML-EM的程序设计语言无关性, 即, 对需要实施访问控制系统的开发语言不存在依赖.
本文将PML与其他主流策略语言进行了对比, 结果见
不同策略语言的表达能力对比
Expressiveness comparison of different policy languages
策略语言 | 支持特性 | ||||||||||
ACL | BLP | RBAC | ABAC | Superuser | 多租户 | RESTful | 决策集成 | 桩函数 | 策略转换 | 多语言 | |
OpenStack | ✘ | ✘ | √ | √ | ✘ | √ | √ | ✘ | ✘ | ✘ | ✘ |
AWS IAM | | ✘ | √ | √ | ✘ | √ | ✘ | √ | ✘ | ✘ | ✘ |
ACaaS[ |
✘ | ✘ | √ | ✘ | √ | √ | √ | √ | ✘ | ✘ | ✘ |
OSAC[ |
✘ | ✘ | √ | ✘ | ✘ | √ | √ | ✘ | ✘ | ✘ | ✘ |
IaaSop[ |
√ | ✘ | √ | √ | √ | √ | √ | ✘ | ✘ | ✘ | ✘ |
XACML[ |
√ | √ | √ | √ | ✘ | ✘ | √ | √ | √ | ✘ | ✘ |
Ponder[ |
✘ | ✘ | √ | √ | ✘ | ✘ | ✘ | ✘ | √ | ✘ | ✘ |
SPL[ |
√ | ✘ | √ | √ | ✘ | ✘ | ✘ | √ | ✘ | ✘ | ✘ |
PML | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
为了验证策略规则适配器, 本文设计了XACML策略、OpenStack策略和AWS IAM策略的策略规则适配器, 并采用用例验证其效果.
XACML访问控制策略采用XML语法来描述, 包括Policy、Rule等核心概念, 并通过策略集成算法和规则集成算法实现统一决策.本节通过XACML conformance测试集来验证XACML策略规则适配器的可用性.由OASIS推出的XACML conformance测试集提供了对XACML策略、请求、响应的标准测试.所有XACML PDP实现都需要满足该测试集的要求.该测试集包括强制的5类测试用例:IIA、IIB、IIC、IID、IIE, 分别为属性用例、目标用例、函数用例、集成算法用例和模式用例.下面以IIA001策略为例验证策略转换的效果, XACML策略规则适配器首先需要将IIA001策略预处理为如
XACML策略IIA001对应的抽象语法树
AST of XACML policy: IIA001
IIA001策略主要针对主体id、客体id、动作id进行匹配, 授权效果为Permit, 采用deny-overrides的规则集成算法.由于其动作id存在两个:
PML规则为
http://medico.com/record/patient/BartSimpson, (
XACML官方策略示例集共有374条策略, 本文XACML策略适配器已经成功适配其中的350条, 其他未适配的策略由于需要实现特殊的匹配函数(如复杂字符串操作), 在未实现相应PML桩函数时暂时无法匹配, 但在PML中注册相应的桩函数后也可实现.
本节验证OpenStack策略规则适配器的可用性.以下为OpenStack Nova计算组件内置策略的一个片段.
“context_is_admin”: “role: admin”
“admin_or_owner”: “is_admin: True or project_id:%(project_id)s”
“default”: “rule: admin_or_owner”
“compute: get”: “·”
“compute: get_all”: “·”
“compute: get_all_tenants”: “is_admin: True”
“compute: delete”: “rule: admin_or_owner”
OpenStack策略主要采用的ABAC模型, 有很多属性的表达, 可以采用PML的属性机制来描述.例如, 其用户的管理员身份通过role和
通过以上分析, 可以设计出相应的OpenStack策略规则适配器.通过适配器转换后, 上述Nova策略实例可转换为PML模型和规则.其中, PML模型为:
PML规则为:
通过分析易得出, OpenStack Nova内置策略和策略转换后的PML策略是等效的.本文还验证了Glance、Neutron、Cinder等其他组件的内置策略均可转换为等效的PML策略.
本节验证AWS IAM策略规则适配器的可用性.IAM策略综合采用了RBAC与ABAC两种模型, 采用JSON格式进行描述.AWS公有云目前共内置261条安全策略, 分别应用于AWS的众多类型的云服务.以下为针对EC2(elastic compute cloud)弹性计算服务的AmazonEC2ReadOnlyAccess策略, 该策略允许附加该策略的用户只读访问EC2、ELB弹性负载均衡、AutoScaling自动扩缩服务、CloudWatch监控服务的所有资源.
“Version”: “2012-10-17”,
“Statement”: [{
“Effect”: “Allow”,
“Action”: “ec2: Describe*”,
“Resource”: “*”
}, {
“Effect”: “Allow”,
“Action”: “elasticloadbalancing: Describe*”,
“Resource”: “*”
}, {
“Effect”: “Allow”,
“Action”: [
“cloudwatch: ListMetrics”, “cloudwatch: GetMetricStatistics”, “cloudwatch: Describe*”
],
“Resource”: “*”
}, {
“Effect”: “Allow”,
“Action”: “autoscaling: Describe*”,
“Resource”: “*”
}]
设计AWS IAM策略适配器, 主要需要对客体(resource)、操作(action)、效果(effect)进行适配.
由于Resource和Action都需要通配符“*”的支持, 因此在PML中需要采用keyMatch桩函数来表达通配符“*”, 即
通过以上分析, 可以设计出相应的AWS IAM策略规则适配器.
通过适配器转换后, 上述AmazonEC2ReadOnlyAccess策略实例可以转换为PML模型和规则.其中, PML模型为:
PML规则为:
*, ec2: Describe*, allow
*, elasticloadbalancing: Describe*, allow
*, cloudwatch: ListMetrics, allow
*, cloudwatch: GetMetricStatistics, allow
*, cloudwatch: Describe*, allow
*, autoscaling: Describe*, allow
类似于上述AmazonEC2ReadOnlyAccess策略, 通过分析AWS现有的261条安全策略的策略转换结果, 验证了AWS原策略和策略转换后的PML策略是等效的.
本文采用OpenStack云平台的tempest测试集对PML策略评估性能进行测试.OpenStack原有安全策略与PML-EM的策略评估性能对比结果见
PML策略评估性能
PML evaluation performance
组件 | OpenStack原有策略 | PML策略 | 开销(%) | PML策略+缓存 | 开销增加(%) |
Nova | 676.24 | 726.58 | 7.4 | 715.43 | 5.8 |
Glance | 273.10 | 297.86 | 9.1 | 285.76 | 4.6 |
Neutron | 227.79 | 246.76 | 8.3 | 237.31 | 4.2 |
Cinder | 146.92 | 169.55 | 15.4 | 158.47 | 7.9 |
Heat | 394.95 | 430.68 | 9.0 | 415.23 | 5.1 |
Ceilometer | 643.85 | 665.13 | 3.3 | 651.04 | 1.1 |
PML-EM对OpenStack原有访问控制机制的侵入性见
PML-EM对OpenStack原有访问控制机制的影响(LOC)
Modification of PML-EM to OpenStack's original access control mechanism (LOC)
组件 | OpenStack原LOC | PML-EM影响 | LOC增加(%) | ||||
-安全钩子 | +AEM代码 | +AEM配置 | +PML模型 | +PML规则 | |||
Nova | 278 614 | 484 | 423 | 4 | 16 | 463 | 0.33 |
Glance | 78 645 | 51 | 423 | 5 | 16 | 49 | 0.63 |
Neutron | 97 983 | 132 | 423 | 3 | 16 | 181 | 0.64 |
Cinder | 207 442 | 77 | 423 | 6 | 16 | 82 | 0.25 |
Heat | 114 692 | 86 | 423 | 4 | 16 | 73 | 0.45 |
Ceilometer | 59 713 | 24 | 423 | 3 | 16 | 6 | 0.75 |
Patron | 6 055 | N/A | N/A | N/A | 14 | 0 | N/A |
本文提出一种基于元模型的访问控制策略描述语言PML及其实施机制PML-EM.PML支持表达BLP、RBAC、ABAC等多种访问控制模型, 并且具备多租户、RESTful、桩函数等特性, 以支持云平台场景下的访问控制.PML-EM则实现了策略语言无关性、访问控制模型无关性和程序设计语言无关性, 不仅降低了用户编写策略的成本, 而且降低了云服务提供商设计、开发访问控制机制的成本.在OpenStack上的实验结果表明, PML策略表达能力较强, 支持从XACML、OpenStack、IAM等其他策略进行转换.性能上, PML策略评估的开销平均为4.8%, 从而能够在不影响租户体验的同时, 有效提高云平台访问控制的安全性和灵活性.PML-EM机制的侵入性较小, 与云平台原有代码相比, 增加约0.42%.
下一步工作包括:研究PML策略之间的冲突检测问题, 给出冲突消解方案; 进一步探索提高策略转换、策略评估性能的优化方法.
Lin C, Su WB, Meng K, Liu Q, Liu WD. Cloud computing security:Architecture, mechanism and modeling. Chinese Journal of Computers, 2013, 36(9):1765-1784(in Chinese with English abstract).
林闯, 苏文博, 孟坤, 刘渠, 刘卫东.云计算安全:架构、机制与模型评价.计算机学报, 2013, 36(9):1765-1784.
Moses T. Extensible Access Control Markup Language (XACML) Version 2.0. Oasis Standard. 2005.
Ribeiro C, Zuquete A, Ferreira P, Guedes P. SPL: An access control language for security policies with complex constraints. In: Proc. of the Network and Distributed System Security Symp. 2001. 89-107.
Damianou N, Dulay N, Lupu E, Sloman M. The ponder policy specification language. In: Proc. of the Workshop on Policies for Distributed Systems and Networks (Policy 2001). 2001. 18-38.
Li NH, Mitchell JC, Winsborough WH. Design of a role-based trust-management framework. In: Proc. of the IEEE Symp. on Security and Privacy. 2002. 114-130.
Han WL, Lei C. A survey on policy languages in network and security management. Computer Networks, 2012, 56(1):477-489.
Ferraolo D, Kuhn R. Role-based access control. In: Proc. of the 15th National Computer Security Conf. 1992. 554-563.
Sandhu RS, Coyne EJ, Feinstein HL, Youman CE. Role-based access control models. Computer, 1996, 29(2):38-47.
Bertino E, Jajodia S, Samarati P. Supporting multiple access control policies in database systems. In: Proc. of the IEEE Symp. on Security and Privacy. 1996. 94-107.
Minsky NH, Ungureanu V. Unified support for heterogeneous security policies in distributed systems. In: Proc. of the 7th USENIX Security Symp. 1998. 131-142.
Bell DE, Lapadula LJ. Secure computer systems: Mathematical foundations. MITRE Corporation Report, 1973.
Fielding RT, Taylor RN. Architectural styles and the design of network-based software architectures[Ph.D. Thesis]. University of California, 2000.
Wu R, Zhang X, Ahn G, Sharifi H, Xie H. ACaaS: Access control as a service for iaas cloud. In: Proc. of the Int'l Conf. on Social Computing. 2013. 423-428.
Tang B, Sandhu R. Extending openstack access control with domain trust. In: Proc. of the Int'l Conf. on Network and System Security. 2014. 54-69.
Jin X, Krishnan R, Sandhu R. Role and attribute based collaborative administration of intra-tenant cloud IaaS. In: Proc. of the 10th IEEE Int'l Conf. on Collaborative Computing: Networking, Applications and Worksharing. IEEE, 2014. 261-274.
Kagal L, Finin T, Joshi A. A policy language for a pervasive computing environment. In: Proc. of the Int'l Conf. on Collaborative Computing: Networking, Applications and Worksharing. 2003. 63-74.
Ashley P, Hada S, Karjoth GUN, Powers C, Schunter M. Enterprise privacy authorization language (EPAL). In: Proc. of the IBM Research. 2003. 1−69.