基于消息队列的openstack租户操作行为审计方法及系统
技术领域
本发明涉及云资源数据挖掘领域,尤其涉及一种基于消息队列的openstack租户操作行为审计方法及系统。
背景技术
随着IT行业在全球范围内的快速发展,IT平台的规模和复杂程度出现了大幅度的提升,但是,高昂的硬件和运维管理成本、漫长的业务部署周期以及缺乏统一管理的基础架构为企业IT部门制造了重重障碍。云计算技术颠覆性的改变了传统IT行业的消费模式和服务模式,消费者实现了从以前的“购买软硬件产品”向“购买IT服务”转变,并通过Internet自助式的获取和使用服务,大大提高了IT效率和敏捷性。
在云计算的架构下,云计算开放网络和业务共享场景更加复杂多变,安全性方面的挑战更加严峻,一些新型的安全问题变得比较突出,如多个虚拟机租户间并行业务的安全运行,公有云中海量数据的安全存储等。其中还有一个比较重要的方面是云信任问题的突现,不管是公有云还是私有云平台,都会涉及到平台信任问题,即租户会担心自己的环境会不会被其它租户的操作而影响,像修改、变更甚于删除等操作会不会也影响整个云环境的配置等。所有租户的操作行为是否有记录,是否可方便追溯,是否可根据操作行为的危险级别进行统计、分析、预测等。
现有的租户操作行为审计主要采用分析日志文件的方式,此种方式存在以下问题:
(1)侵入式的采集方式,需要在云计算平台的节点主机上安装日志收集代理程序,并且需要针对云平台内主机的作用不同而采用不同的代理程序;
(2)不能动态增加,当增加云平台节点时,需要安装对应的代理程序,操作比较繁琐。
(3)日志项不全,有些日志不记录操作人(租户),无法对应到用户,因此也无法溯源。
因此,如何实现云平台所有租户操作行为的审计,提高租户对云平台的信任度,是目前需要本领域技术人员迫切解决的一个技术问题。
发明内容
为了解决上述问题,本发明提供一种基于消息队列的openstack租户操作行为审计方法及系统。所述采用非侵入式采集方式对消息队列进行进行信息采集,减轻了运维工作;对采集的信息进行过滤和解析,区分操作类和非操作类指令消息,并对租户操作类行为进行记录,有效做到了对各租户的操作行为可追溯;此外,还对操作类行为进行分级管理,一定程度上加强了对租户操作行为的监督及预测,从而提高云平台的可信任性。
为了实现上述目的,本发明采用如下技术方案:
一种基于消息队列的openstack租户操作行为审计方法,包括以下步骤:
步骤1:连接openstack消息队列,获取消息队列所有指令消息;
步骤2:对所述指令消息进行过滤和解析,获取符合要求的指令消息;
步骤3:对解析后的操作类指令消息,按一定格式进行存储;
步骤4:对所述操作类指令消息进行分级,根据用户需求执行查询和统计分析。
进一步地,所述步骤2包括:
步骤2.1:按消息类型进行过滤,丢弃非操作类指令消息,保留操作类指令消息;
步骤2.2:将所述操作类指令消息格式化为结构化数据;
步骤2.3:对结构化后的操作类指令消息进行解析,并根据解析出的租户标识数据,调动权限控制API对所述租户的信息进行查询,若能够获取租户信息,则对该指令消息进行存储;若不能获取租户信息,则丢弃该指令消息。
进一步地,所述步骤3包括:将解析后的操作类指令消息存储在关系数据库。
进一步地,所述步骤4包括:根据操作指令消息的破坏程度的可能性大小,系统对其进行了分级。
进一步地,所述查询和统计分析包括:操作行为查询、按租户统计操作行为、按级别统计操作行为、按项目统计操作行为和按操作类型统计。
进一步地,其中,
所述操作行为查询,用于按时间段、租户、项目、操作类型综合查询操作行为;
所述按租户统计操作行为,用于按时间段统计各租户对云平台操作的次数和操作频度;
按级别统计操作行为,用于按时间段统计不同级别的操作次数和频度;
按操作类型统计,用于按时间段统计细粒度的操作行为次数及频度。
根据本发明的第二方面,本发明还提供了一种基于消息队列的openstack租户操作行为审计系统,包括openstack云平台和客户端,
所述openstack云平台包括API模块和消息队列;
所述API模块用于分配账户和密码,并提供多个任务接口;
所述消息队列用于解析API模块传输的任务信息,并将其转换为任务消息进行存储;
所述客户端包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下操作:
监听所述消息队列,截取所有指令消息;
对所述指令消息进行过滤和解析,获取符合要求的指令消息;
对解析后的操作类指令消息,按一定格式进行存储;
对所述操作类指令消息进行分级,根据用户需求执行查询和统计分析。
进一步地,对所述指令消息进行过滤和解析包括:
按消息类型进行过滤,丢弃非操作类指令消息,保留操作类指令消息;
将所述操作类指令消息格式化为结构化数据;
对结构化后的操作类指令消息进行解析,并根据解析出的租户标识数据,调动权限控制API对所述租户的信息进行查询,若能够获取租户信息,则对该指令消息进行存储;若不能获取租户信息,则丢弃该指令消息。
根据本发明的第三方面,本发明还提供了一种基于消息队列的openstack租户操作行为审计装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下操作:
监听openstack云平台上的消息队列,截取所有指令消息;
对所述指令消息进行过滤和解析,获取符合要求的指令消息;
对解析后的操作类指令消息,按一定格式进行存储;
对所述操作类指令消息进行分级,根据用户需求执行查询和统计分析。
进一步地,对所述指令消息进行过滤和解析包括:
按消息类型进行过滤,丢弃非操作类指令消息,保留操作类指令消息;
将所述操作类指令消息格式化为结构化数据;
对结构化后的操作类指令消息进行解析,并根据解析出的租户标识数据,调动权限控制API对所述租户的信息进行查询,若能够获取租户信息,则对该指令消息进行存储;若不能获取租户信息,则丢弃该指令消息。
本发明的有益效果:
1、本发明采用非侵入式采集方式对消息队列进行消息截取,针对分布式云计算平台的动态增删主机提供最大便利,不需要安装代理,只需要在服务端简单配置即可工作,减轻运维工作。
2、本发明将解析出的租户操作类指令消息进行记录,有效做到了各租户的操作行为可追溯。并且实现了操作类指令消息的分级管理,一定程度上加强了对租户操作行为的监督及预测,从而提高云平台的可信任性。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本发明基于消息队列的openstack租户操作行为审计方法流程图;
图2为本发明基于消息队列的openstack租户操作行为审计系统结构图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
专业术语解释:
消息队列(RabbitMQ):消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
openstack:是一个旨在为公共及私有云的建设与管理提供软件的开源项目。
Openstack用户操作行为:隶属于openstack云平台的用户,对云平台相关功能及组件进行的操作指令,此指令可实现对云平台的管理、控制等作用。
租户:可对openstack云平台操作具有一定权限的用户。一般可对云平台进行简单配置,如:增加虚拟机、修改虚拟机配置、修改网络配置等。
本方案根据openstack的架构特点实现,主要采用监听openstack各组件在消息队列中传递操任务指令的方式,来收集租户对云平台的各种操作行为。
因为Openstack的架构决定了需要使用消息队列机制来实现不同模块间的通信,通过消息验证、消息转换、消息路由架构模式,带来的好处就是可以是模块之间最大程度解耦,客户端不需要关注服务端的位置和是否存在,只需通过消息队列进行信息的发送。RabbitMQ适合部署在一个拓扑灵活易扩展的规模化系统环境中,有效保证不同模块、不同节点、不同进程之间消息通信的时效性,可有效支持OpenStack云平台系统的规模化部署、弹性扩展、灵活架构以及信息安全的需求。
实施例一
本实施例的目的是提供一种基于消息队列的openstack租户操作行为审计方法,如图1所示,包括以下步骤:
步骤1:连接openstack消息队列,获取消息队列所有指令消息;
消息采集模块实现一个消息队列的消费者,监听openstack rabbitmq的各大主题。Openstack的主题包括:amp.rabbitmq.trace、glance、openstack、amp.topic、nova等五大主题。各主题对应着openstack的各组件,如:对计算资源的操作,分配置CPU及内存等;对网络资源的操作,建立子网等;对存储资源的操作,建立虚拟硬盘等。
步骤2:对所述指令消息进行过滤和解析,对符合要求指令消息进行存储;
步骤2.1:按消息类型进行过滤,丢弃非操作类指令消息,保留操作类指令消息;
步骤2.2:将所述操作类指令消息格式化为结构化数据;
步骤2.3:对结构化后的操作类指令消息进行解析,并根据解析出的租户标识数据,调动权限控制API对所述租户的信息(如:租户名称、分配日期等)进行查询,若能够获取租户信息,则对该指令消息进行存储;若不能获取租户信息,则丢弃该指令消息。
具体地,
在消息采集模块发送过来的消息是全量消息,未进行过滤及清理,消息的格式也是原始格式,无法满足后期的存储和分析要求,所以需要对消息进行清理和格式化。
首先,需要按消息类型过滤,只保留下租户操作行为类的消息。Openstack消息类型及是否需要保留过滤如表1:
表1
其次,对经过过滤的消息进行解析及格式化。因为原始的消息格式是按openstack云平台的消息协议定义,原始消息非结构化数据,无法对其进行结构化存储及分析利用,所以需要对其进行协议转换、清洗、格式化为结构数据。
原始数据格式如下:
以上消息是存储类操作的指令格式,是对存储卷进行删除的一个操作指令,所有字段代表的内容需要进行过滤、清洗、解析,将各字段代表的内容使用结构化的格式呈现。如表2:
表2
指令ID |
055951b654364d918aaa37bbe365906e |
指令类型 |
compute |
组件名称 |
nova |
租户ID |
1dc0db32a936496ebfc50be54924a7cc |
是否为管理员 |
True |
操作时间 |
2015-03-21T07:16:0 |
指令功能 |
delete_volume |
被操作对象ID |
a8a4bf9b-b233-4bd4-9ec4-d132d3b4b0af |
项目名称 |
Admin |
项目ID |
43f66bb82e684bbe9eb9ef6892bd7fd6 |
是否成功 |
true |
再者,将解析出来的租户ID,通过openstack的权限控制API查询出租户的用户信息,如:租户名称、分配日期等。
到此,所有所需要的信息解析完成。
步骤3:对解析后的操作类指令消息,按一定格式进行存储;
对以上解析出来的操作指令内容存储在关系数据库中,以便后续进行查询及分析。数据表创建如表3:
表3
步骤4:对所述操作类指令消息进行分级,根据用户需求执行查询和统计分析。
根据操作指令消息的破坏程度的可能性大小,系统对其进行了分级。总共分为3级,严重、重要、一般。
根据以上数据整理后,系统可实现通用的查询、统计分析等功能。如:操作行为查询、按租户统计操作行为、按级别统计操作行为、按项目统计操作行为、按操作类型统计等。
操作行为查询:可以按时间段、租户、项目、操作类型等查询条件综合查询操作行为,可实现操作行为的追溯过程,保证操作行为过后留痕,为云平台的可信任性增加保障。
按租户统计操作行为:可实现按时间段统计,各租户对云平台操作的次数、操作频度等,可监控租户的异常操作行为。
按级别统计操作行为:可实现按时间段统计整个云平台的不同级别的操作次数、频度等,可监控平台危险操作的发生时段及可能性。
按操作类型统计:可实现按时间段统计细粒度的操作行为次数及频度。
实施例二
本实施例提供了一种基于消息队列的openstack租户操作行为审计系统,包括openstack云平台和客户端,
所述openstack云平台包括API模块和消息队列;
所述API模块用于分配账户和密码,并提供多个任务接口;
所述消息队列用于解析API模块传输的任务信息,并将其转换为任务消息进行存储;
所述客户端包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下操作:
监听所述消息队列,截取所有指令消息;
对所述指令消息进行过滤和解析,获取符合要求的指令消息;
对解析后的操作类指令消息,按一定格式进行存储;
对所述操作类指令消息进行分级,根据用户需求执行查询和统计分析。
实施例三
本实施例提供了一种基于消息队列的openstack租户操作行为审计装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下操作:
监听openstack云平台上的消息队列,截取所有指令消息;
对所述指令消息进行过滤和解析,获取符合要求的指令消息;
对解析后的操作类指令消息,按一定格式进行存储;
对所述操作类指令消息进行分级,根据用户需求执行查询和统计分析。
本发明采用非侵入式采集方式对租户的操作行为日志进行采集,减轻了运维工作。并且对租户操作行为进行记录,有效做到了对各租户的操作行为可追溯。对操作行为的分级管理,一定程度上加强了对租户操作行为的监督及预测,从而提高云平台的可信任性。
本领域技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件的结合。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。