一种云计算平台管理员权限最小化的自动化划分方法及访问控制方法与流程

文档序号:12864108阅读:396来源:国知局
一种云计算平台管理员权限最小化的自动化划分方法及访问控制方法与流程

本发明属于云计算安全领域,涉及一种权限划分方法,尤其涉及一种面向开源云计算平台的最小特权自动划分方法及访问控制方法。



背景技术:

近年来云计算作为一种新兴的计算资源服务,因其可靠性、易用性、按需付费、最大化资源利用等特点被企业和独立用户追捧,其安全问题已经延伸到各个领域,主要包括用户的数据安全、隐私泄露、黑客攻击以及内部攻击等方面。由于云计算平台的管理员具有庞大的权力,一个恶意的内部攻击者往往能够轻易地获取用户隐私数据,甚至破坏整个云平台的安全。而通过应用最小特权原则,可以有效地限制管理员的权限,将内部攻击带来的危害降到最低限度。

目前,主流的开源云计算平台openstack,在使用的时候,对于如何进行合理、安全的内部管理没有考虑。当openstack云平台初始化时,平台仅有一个系统管理员,拥有平台的全部权限,云平台设计者期望使用者根据自身的需求进行权限策略配置。然而,云平台架构庞大复杂,api数量众多,对于小型的企业用户和独立用户而言,配置系统管理权限策略的工作面临很大的困难。因此,在云计算平台中进行管理员权限自动化划分的问题亟待解决。

目前安全研究人员已经从系统层面提出了安全策略,系统安全机制由认证和授权两大部分构成。认证就是简单地对一个实体的身份进行判断;而授权则是向实体授予对数据资源和信息访问权限的决策过程。其中,认证机制采用token方案实现,授权机制则是通过引入基于角色的访问控制(rolebasedaccesscontrol,rbac)和基于属性的访问控制(attributebasedaccesscontrol,abac)实现的。

认证机制

openstack采用token方案实现认证机制。token指的是一串比特值或者字符串,用来作为访问资源的记号,token中含有用户可访问资源的范围和有效时间。首先用户向openstack的认证组件keystone提供自己的身份验证信息,如用户名和密码。keystone会从数据库中读取数据对其验证,如验证通过,会向用户返回一个token,此后用户所有的请求都会使用该token进行身份验证。如用户向openstack的计算组件nova申请虚拟机服务,nova会将用户提供的token发给keystone进行验证,keystone会根据token判断用户是否拥有进行此项操作的权限,若验证通过那么nova会向其提供相对应的服务。其它组件和keystone的交互也是如此。

授权机制

在openstack中,授权机制是通过基于角色的访问控制(rolebasedaccesscontrol,rbac)和基于属性的访问控制(attributebasedaccesscontrol,abac)实现的。

1)基于角色的访问控制:为了方便管理集群中的用户,openstack中定义了用户、租户和角色等概念,管理员可以为用户分配角色,也可以为角色分配权限,被赋予特定角色的用户仅拥有该角色的权限。

2)基于属性的访问控制:为了提供更加细粒度的访问控制,openstack提供了基于属性的访问控制,管理员可以通过修改配置文件对拥有不同属性的用户进行授权,不仅提高了平台授权的安全性,也增加了平台授权的灵活性和适用性。

现有安全机制的缺点和局限性

1)现有的授权机制的默认策略中只配置了一个超级管理员,即拥有平台所有操作的权限,一般认为云计算平台运行在安全可信赖的环境下,因此对云平台的安全加固作用意义不大。

2)云计算平台中restfulapi数量庞大、系统功能复杂,而授权策略需要对平台中每个restfulapi的调用进行权限配置,这项工作需要策略制定者对平台有全面的了解和安全意识,由使用者进行策略配置容易出现错误的配置,从而导致授权出现安全隐患。

此外,本发明依赖于最小特权原则、restfulapi和集成测试等背景知识,现进行如下分析。

最小特权原则

最小特权原则是系统安全中最基本的原则之一。所谓最小特权(leastprivilege),指的是在完成某种操作时所赋予系统中每个主体(用户或进程)必不可少的特权。最小特权原则,则是指应限定系统中每个主体所必须的最小特权,确保可能的事故、错误等原因造成的损失最小。对于云计算平台来说,管理员的权限的分配应该满足最小特权原则的要求,否则可能会对平台中的数据和资源造成安全威胁。

restfulapi

rest即表述性状态传递(representationalstatetransfer,rest)是royfielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。restfulapi是基于http协议的一种设计规范,一个restfulapi由两部分构成:http动作和api地址,其中http动作包括get、post、put、delete等,代表了对资源的一种操作,如post代表了创建操作,delete代表删除操作;api地址标识了具体资源,如“/v2/servers”就代表了实例资源。因此,特定的http动作和特定的api地址可以唯一确定一个restfulapi,例如“get/v2/servers”。

openstack中使用restfulapi进行服务暴露,不同组件之间可以通过restfulapi进行信息交互,使用者通过调用restfulapi进行平台上的操作。因此在云计算平台中,本发明将每一个restfulapi视作云平台中一个特定的资源,而调用一个restfulapi的能力可以被视作为一个特权,所以对于云计算平台的特权管理就转换为了对restfulapi的授权管理。

集成测试

集成测试是将软件产品中各个模块组装起来,检查其接口是否存在问题,以及组装后的整体功能、性能表现。在常见的开源云计算平台中,集成测试都会被作为检验平台整体功能的必备工具,云平台往往会提供完备的集成测试框架以及详细的测试用例,以供开发者进行功能校验。



技术实现要素:

在云计算平台最初部署时,对于平台中的管理员权限划分有所欠缺,默认情况下只有一个超级管理员并且拥有平台的所有操作权限。当超级管理员发生误操作,或被恶意攻击者盗用账户后,都会对整个云平台造成巨大的安全威胁。为了降低超级管理员带来的安全隐患,必须实施最小特权原则,限制管理员的权限范围。而云计算平台中的操作复杂、暴露的restfulapi数量众多,对于普通的云管理员而言,制定权限划分策略工作量巨大并且复杂易错,因此制定一份权限分配合理的、符合最小特权原则的授权策略是非常困难的。

本发明的目的在于提供一种面向云计算平台的管理员权限自动划分方法及访问控制方法,为了降低管理员误操作、管理员账户被攻破和恶意管理员进行内部攻击后带来的安全威胁。本发明按照特定的算法将开源云计算平台内的所有公开的restfulapi进行自动化分组,并根据分组情况制定管理员权限划分策略,采用统一的策略引擎对该策略进行实施,从而达到对云计算平台管理员的权限细分和授权管理,增强云计算平台的安全性。

本发明解决技术问题所采用的技术方案为:

一种面向云计算平台的管理员权限自动划分的方案,如图1所示,其步骤为:

1)首先,在云计算平台中运行集成测试,模拟平台的大部分操作。由于云计算平台通过web服务提供了restfulapi,因此可以在其源代码中找到暴露restfulapi的位置并插入日志钩子函数,该钩子函数的作用是记录集成测试中每个测试用例的restfulapi调用情况,包括测试用例的信息、restfulapi的地址信息和对应的http动作信息,并将这些信息保存到云计算平台的日志中。

2)在完成集成测试后,可以获取到云计算平台的日志信息。首先需要对日志进行必要的处理,将日志文件中具体的restfulapi调用记录处理为抽象的restfulapi调用信息,例如对于一条restfulapi调用记录:“get,/v2/servers/06cb05a8705c4184b458ff13ce38850f”,该api地址中的“06cb05a8705c4184b458ff13ce38850f”为通用唯一识别码(universallyuniqueidentifier,uuid),用来唯一标识分布式系统中的元素。对于会创建新资源的restfulapi,例如创建虚拟机的api,当新资源对象被创建时系统就会为其分配一个uuid进行唯一标识。uuid的格式由32位十六进制数组成,因此可以使用正则表达式对restfulapi的地址进行处理,将不同的uuid替换为统一的字符例如“uuid”,处理后的restfulapi调用记录变为:“get,/v2/servers/uuid”。通过这样的方式处理后,可以对日志信息进行去重和简化。

3)得到经过2)步骤处理后的测试用例中的restfulapi调用信息后,需要对其中包含的restfulapi进行依赖程度分析。根据最小特权原则得出的三点原则可以计算出抽象化后的restfulapi之间的依赖程度,这三点原则分别如下:

①对于每一对restfulapi,若是在同一个测试用例中被调用,其之间的依赖程度应高于不在同一测试用例中调用的restfulapi。

②对于每一对restfulapi,根据云计算平台的公开文档可以了解每个restfulapi属于的云计算平台组件,若其属于云计算的同一服务组件,则其之间的依赖程度相对于属于不同组件的restfulapi应该更高。

③对于每一对restfulapi,若操作的资源对象相同,则其依赖程度相对于操作资源不同的api应该更高。

对于云计算平台中的所有restfulapi,通过遍历restfulapi调用日志并根据以上三点计算原则,可以计算出平台中任意两个restfulapi之间的依赖程度的值,计算公式如下:

dij=fij+gij+hij

其中,dij代表restfulapii和restfulapij之间的依赖程度值,由fij、gij和hij三部分组成,其定义分别如下:

其中,fij是计算restfulapii和restfulapij在n个测试用例中同时被调用的次数,每次同时被调用依赖程度值加一;gij函数是根据restfulapii和restfulapij是否在同一组件中计算依赖程度值,若在则gij的值为1,反之为0;hij是根据restfulapii和restfulapij是否操作同一资源计算依赖程度值,若资源相同则hij的值为1,反之为0。因此可以根据以上公式计算restfulapi依赖程度值并构造出restfulapi依赖矩阵,其中该矩阵的横纵坐标均为restfulapi,矩阵中的值为对应横纵坐标的两个restfulapi之间的依赖程度的数值。

4)进一步的,在得到云计算平台restfulapi之间的依赖矩阵后,遍历依赖矩阵,根据依赖程度阈值(该阈值可以由管理员设定)对restfulapi进行分组。对于任意一对restfulapi,若其之间的依赖程度值大于依赖程度阈值,则将这一对restfulapi划分在同一组中,若这一对restfulapi中的一个或两个已属于某一组中,则将它们所在的组合并为同一组,因此不存在某一个restfulapi同时属于多个组。依赖矩阵经过一次遍历和划分后,平台中所有的restfulapi将会被划分为n组。此外,管理员可以自定义分组数量n,如果默认分组数量与自定义分组数量不同,阈值会进行自动调整,直到最终分组数量为n。

5)进一步的,根据restfulapi分组情况,可以为云计算平台生成访问控制策略。该策略由三部分组成,分别是主体、客体和规则,对于支持基于角色的访问控制模型的云计算平台,主体即是平台中拥有特定角色的管理员账户,客体是平台中的restfulapi,包括http动作和代表资源的restfulapi地址,规则包含允许和拒绝。对于每一个restfulapi分组,都对应一个不同的主体,因此整个云计算平台的restfulapi的操作权限就被划分成了多组,达到了权限的细分。

本发明的有益效果

随着云计算的普及,使用云计算平台的用户越来越多,云计算平台的安全问题显得尤为重要。现有的授权机制的默认策略中只配置了一个超级管理员,没有对管理员权限进行划分。由于云计算平台中restfulapi数量庞大、功能复杂,而授权策略需要对平台中每个操作和restfulapi进行权限配置,因此这项工作容易出错并且对操作人员要求较高。

本发明在现有的安全机制上增加了自动化策略划分功能,填补了目前国际上面向云计算平台的自动化权限划分方案的空白,能够有效减少云管理员由于误操作或恶意管理员内部攻击对云计算平台造成的安全威胁,并且该方法操作简单,只需要对云计算平台进行钩子插入即可,其余操作均为自动化完成。同时该方法具有很强的灵活性和兼容性,用户可以自定义管理员数量,对平台造成的侵入性修改非常少,不影响云计算平台原有的访问控制机制。另外,该方法对于管理员的权限划分效果显著,相比于云计算平台的默认配置,有效地将管理员的权限占比降低到20%(默认情况下会划分出五个管理员)。全面有效地降低云计算平台内部攻击带来的威胁。

附图说明

图1为本发明技术方案流程图;

图2为本发明实施例流程图。

具体实施方式

下面结合附图对本发明进行进一步详细描述,本发明方法流程如图2所示。

1)在准备阶段,安全研究人员获取云计算平台的管理员权限,对云计算平台插入日志钩子函数,并执行了集成测试。

2)通过对日志的分析构造出云计算平台的restfulapi之间的依赖矩阵,并根据该矩阵进行了特权划分,得到多个restfulapi分组。根据分组生成了平台的管理员授权策略。

3)在运行阶段,通过本发明提供的策略实施器对生成的授权策略进行实施。

4)当云计算平台原有的管理员登录平台后进行restfulapi调用,该请求首先被本发明的策略实施器拦截,并转发到相应的策略引擎中,通过将该管理员的角色和操作信息与授权策略进行逐条比对,得到本次请求的结果。

实施例:

以openstackmitaka版本为例,openstack集群部署在四节点的集群中,集群包括一个控制节点,三个计算节点。默认情况下openstack只有一个admin管理员,具有整个云计算平台的所有权限。

1)首先,安全研究人员获取集群登录信息,登录到部署openstack上对openstack源码植入日志钩子函数,并重启openstack各项服务。进一步的,安全研究人员运行openstack集成测试组件tempest,tempest会对openstack的各项服务组件进行系统性的测试,如计算组件nova、镜像服务glance等。当集成测试结束后,安全研究人员在集群中获取到集成测试的日志文件。

2)接下来,安全研究人员设置依赖程度阈值和管理员分组数量等参数后,在openstack集群上运行本发明的自动化脚本,该脚本首先对上一步中得到的云平台日志文件进行必要的数据清洗等处理操作,得到去重和抽象化后的日志文件,其中包含了openstack测试用例与restfulapi调用关系。接下来该脚本会对这些日志文件中的restfulapi调用关系进行统计和计算,通过分析restfulapi是否在同一服务组件、是否操作同一资源以及是否同时被一个集成测试用例调用,来计算openstackrestfulapi之间的依赖程度值,并构造出一个依赖矩阵存入临时文本中。

3)进一步的,在得到openstack的restfulapi依赖矩阵后,云管理员可以自动化脚本将对该矩阵进行遍历,将restfulapi之间依赖程度值大于之前设置的依赖程度阈值的restfulapi划分到一组,反之不划分到一组。对矩阵进行一次遍历后将所有的restfulapi分成了n组,若与之前设置的预期分组数量不同,则自动化脚本会自动调整依赖程度阈值再次进行遍历,直到得到与预期分组数量相同的分组时退出循环。得到满足要求的分组后,自动化脚本会生成与restfulapi分组情况相应的满足最小特权原则的授权策略,并在openstack中创建相应的管理员角色。

4)进一步的,自动化脚本会修改openstack管理web请求的wsgi模块,增加了一个过滤器模块,该模块会对于生成的授权策略进行实施,此时自动化脚本运行结束。在openstack实施了最小特权授权策略后,openstack默认管理员的权限被限制到原有的20%。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1