一种在私有云对象存储中防止被攻击的方法和系统与流程

文档序号:11878607阅读:576来源:国知局
一种在私有云对象存储中防止被攻击的方法和系统与流程

本发明涉及云对象存储技术领域,尤其涉及一种在私有云对象存储中防止攻击的方法和系统。



背景技术:

对象存储在互联网的大潮中受到了广发关注,并得到了迅速的发展。对象存储与文件存储不同,对象不以目录分层的结构进行组织。每个对象都位于被称为存储池的扁平的空间的相同层级,每一级的每个元素在存储系统中都有唯一的标识,用户通过这个标识来访问容器或者对象。采用扁平的数据组织结构抛弃了嵌套的文件夹,避免维护庞大的目录树。在大数据和互联网时代,存储的文件/对象超过上百万个,单位时间内的访问次数和并发访问量也达到了前所未有的量级,在这种情况下,目录树会给存储系统带来很大的开销和诸多问题,成为系统的瓶颈。另外一个让对象存储焕发生命力的因素是,对象存储不再提供POSIX兼容的接口(如open,close,read,write等),而是可以非常方便地通过HTTP Restful API接口和对象进行交互:通过PUT和GET进行上传下载,通过DELETE进行删除。

对象存储可以为用户提供视频、音乐等较大文件的存储,也可以提供日志的服务,另外,存储服务取得更大发展的更大因素是取得了移动互联网的青睐,在移动端的APP中,对象存储简单的HTTP接口简化了开发者的开发流程,并且还可以为用户提供海量的存储空间。

在私有云的应用场景中,因为对于内部客户不采取收费策略,导致后端存储服务常常存在API接口滥用的情况,比如为了获得一个对象是否存在,去对整个bucket进行list操作来获取整个bucket的对象列表,这种list操作通常需要后端存储集群向调用者发送很多的内容,占用服务器带宽,在对公业务中通常会按流量收费,而这种list操作是非常耗费流量的。另外一种场景是,如果私有云的用户遭受外部攻击时,则会给存储服务器发送大量数据上传、下载请求,造成后端集群不堪重负,甚至出现无法为正常的用户提供服务的情况,即出现了拒绝服务的情况。



技术实现要素:

本发明的目的是提供一种在私有云对象存储中防止被攻击的方法和系统,包括中间服务器以及与所述中间服务器信号连接的存储服务器,所述中间服务器根据客户端的访问权限,调用访问接口对存储服务器中的对象进行访问,并将访问结果发送给相应的客户端;当所述中间服务器检测到某一客户端对所述访问接口的调用次数到达预定上限值时,所述中间服务器禁用该客户端的访问权限,实现了一种在私有云对象存储中防止被攻击的方法和系统,从而减少因bucket list操作导致流量浪费的同时避免系统出现拒绝服务的情况。

根据本发明的一个方面提供一种在私有云对象存储中防止被攻击的方法,包括:

中间服务器根据客户端的访问权限,调用访问接口对存储服务器中的对象进行访问,并将访问结果发送给相应的客户端;

当所述中间服务器检测到某一客户端对所述访问接口的调用次数到达预定上限值时,所述中间服务器禁用该客户端对存储服务器的访问权限。

进一步地,所述访问接口为bucket list接口。

进一步地,所述bucket list接口用于对所述存储服务器中的对象进行遍历。

进一步地,所述访问接口为确认对象存在接口,所述确认对象存在接口用于确认访问的对象是否存储于所述存储服务器中。

进一步地,在所述当所述中间服务器检测到某一客户端对所述访问接口的调用次数到达预定上限值时,所述中间服务器禁用该客户端的访问权限之前,还包括根据存储服务器的性能设定预定上限值,并将所述预定上限值存储于中间服务器中。

根据本发明的另一个方面提供一种在私有云对象存储中防止被攻击的系统,包括:中间服务器以及与所述中间服务器信号连接的存储服务器,

所述中间服务器,用于根据客户端的访问权限,调用访问接口对所述存储服务器中的对象进行访问,并将访问结果发送给相应的客户端;

所述中间服务器,还用于当检测到某一客户端对所述访问接口的调用次数到达预定上限值时,禁用该客户端对存储服务器的访问权限。

进一步地,所述访问接口为bucket list接口。

进一步地,所述bucket list接口用于对所述存储服务器中的对象进行遍历。

进一步地,所述访问接口为确认对象存在接口,所述确认对象存在接口用于确认访问的对象是否存储于所述存储服务器中。

进一步地,所述中间服务器还用于存储根据存储服务器的性能设定所设定的预定上限值。

如上所述,本发明所提供的一种在私有云对象存储中防止被攻击的方法和系统,包括中间服务器以及与所述中间服务器信号连接的存储服务器,通过所述中间服务器对多个客户端的访问权限的控制,实现了一种在私有云对象存储中防止被攻击的方法,防止接口滥用,减少因bucket list的操作导致流量浪费的同时避免系统出现拒绝服务。

附图说明

图1是本发明在私有云对象存储中防止被攻击的方法的流程图;

图2是本发明在私有云对象存储中防止被攻击的方法的优选实施例的流程图;

图3是本发明在私有云对象存储中防止被攻击的系统的模块关系示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

图1是本发明在私有云对象存储中防止被攻击的方法的流程图。

如图1所示,在私有云对象存储中防止被攻击的方法,包括以下步骤步骤S1和步骤S2。

步骤S1,中间服务器根据客户端的访问权限,调用访问接口对存储服务器中的对象进行访问,并将访问结果发送给相应的客户端。

现有技术中,客户端直接对存储服务器中的数据进行访问。本发明区别于现有技术的一个最重要的发明点是:在客户端与存储服务器之间增设中间服务器,所述客户端的访问权限由中间服务器授予,当客户端需要对存储服务器中的数据进行访问时,并不直接访问存储服务器,而是向中间服务器发送访问请求(所述访问请求中包含访问权限的参数),中间服务器在接收到客户端的访问请求后,对客户端的访问权限进行匹配,若成功,则调用访问接口将客户端的访问请求发送至存储服务器,存储服务器将访问结果发送中间服务器,中间服务器收到中间服务器的访问结果后,将所述访问结果回送至相应的客户端。

其中,所述的访问接口包括确认对象存在接口,确认对象存在接口用于确认访问的对象是否存储于存储服务器中,若存在则获取所需访问的对象地址,并根据获取的对象地址访问该对象,若不存在则停止访问。

步骤S2,当中间服务器检测到某一客户端对访问接口的调用次数到达预定上限值时,所述中间服务器禁用该客户端对存储服务器的访问权限。

优选的,在步骤S2之前,还包括根据存储服务器的性能设定预定上限值,并将所述预定上限值存储于中间服务器中。

当某一客户端在通过中间服务器调用访问接口访问存储服务器时,中间服务器会累计当前客户端调用所述访问接口的次数。并将累计的次数与预定上限值进行比对,当某一客户端的累计的次数达到预定上限值时,所述中间服务器禁用该客户端的访问权限,具体的所述中间服务器通过nginx配置关闭该客户端的访问权限。

现有技术中,如果私有云的客户端遭受外部攻击,则会给向存储服务器发送大量数据上传、下载请求,造成存储服务器集群不堪重负,甚至出现无法为正常的用户提供服务的情况,即出现了拒绝服务的情况。本发明通过步骤S1和步骤S2提供的方案,基于流控策略,增设中间服务器对客户端调用存储服务器的访问接口做了监控,来控制客户端对于API的滥用,在面临类似攻击性流量时,能够根据客户端对访问接口的累积调用次数查找到攻击的客户端,拒绝对攻击客户端提供服务,从而避免出现存储服务器对普通用户拒绝服务的情况。

图2是本发明在私有云对象存储中防止被攻击的方法的优选实施例的流程图。

如图2所示,当所述的访问接口为bucket list接口时,所述一种在私有云对象存储中防止被攻击的方法,包括步骤S01和步骤S02。

步骤S01,中间服务器根据客户端的访问权限,调用bucket list接口对存储服务器中的对象进行遍历,并将遍历结果发送给相应的客户端。

在本发明的一个优选实施例中,上述步骤S1和步骤S2中所述的访问接口为bucket list接口。所述bucket list接口,用于对所述存储服务器中的对象进行遍历,从而在存储服务器中获取所需对象的地址,并根据获取的对象地址访问该对象。

步骤S02,当所述中间服务器检测到某一客户端对所述bucket list接口的调用次数到达预定上限值时,所述中间服务器禁用该客户端对存储服务器的访问权限。

现有技术中的私有云的应用场景中,因为对于私有云内部客户不采取收费策略,导致存储服务器常存在API接口滥用的情况,比如为了获得一个对象是否存在,去对整个bucket进行list操作来获取整个bucket的对象列表,这种list操作通常需要后端存储集群向调用者发送很多的内容,占用服务器带宽,在对公业务中通常会按流量收费,而这种list操作是非常耗费流量的。

因此在该优选实施例中,限定了访问接口为bucket list接口,从而实现防止私有云内部客户端频繁的调用bucket list接口,占用服务器带宽,耗费流量的情况。在此实施例中,中间服务器将客户端的bucket list请求访问次数和bucket list请求访问的预设上限值进行比较,请求访问次数大于等于预设上限值时,中间服务器禁用该客户端的访问权限。

图3是本发明在私有云对象存储中防止被攻击的系统的模块关系示意图。

如图3所示,一种在私有云对象存储中防止被攻击的系统,包括:中间服务器100和存储服务器200,所述中间服务器与存储服务器信号连接。

中间服务器100,用于在接受到客户端300发送的访问请求时,根据客户端300的访问权限,调用访问接口对存储服务器200中的对象进行访问,并将访问结果发送给相应的客户端300。

现有技术中,客户端直接对存储服务器中的数据进行访问。本发明区别于现有技术的一个最重要的发明点是:在客户端与存储服务器之间增设中间服务器,所述客户端的访问权限由中间服务器授予,当客户端需要对存储服务器中的数据进行访问时,并不直接访问存储服务器,而是向中间服务器发送访问请求(所述访问请求中包含访问权限的参数),中间服务器在接收到客户端的访问请求后,对客户端的访问权限进行匹配,若成功,则调用访问接口将客户端的访问请求发送至存储服务器,存储服务器将访问结果发送中间服务器,中间服务器收到中间服务器的访问结果后,将所述访问结果回送至相应的客户端。其中,所述的访问接口包括确认对象存在接口,确认对象存在接口用于确认访问的对象是否存储于存储服务器中,若存在则获取所需访问的对象地址,并根据获取的对象地址访问该对象,若不存在则停止访问。

中间服务器100,用于在检测到某一客户端300对访问接口的调用次数到达预定上限值时,中间服务器100禁用该客户端300对存储服务器200的访问权限。

根据存储服务器的性能设定预定上限值,并将所述预定上限值存储于中间服务器中。

当某一客户端在通过中间服务器调用访问接口访问存储服务器时,中间服务器会累计当前客户端调用所述访问接口的次数。并将累计的次数与预定上限值进行比对,当某一客户端的累计的次数达到预定上限值时,所述中间服务器禁用该客户端的访问权限,具体的所述中间服务器通过nginx配置关闭该客户端的访问权限。

现有技术中,如果私有云的客户端遭受外部攻击,则会给向存储服务器发送大量数据上传、下载请求,造成存储服务器集群不堪重负,甚至出现无法为正常的用户提供服务的情况,即出现了拒绝服务的情况。本发明提供的方案,基于流控策略,增设中间服务器对客户端调用存储服务器的访问接口做了监控,来控制客户端对于API的滥用,在面临类似攻击性流量时,能够根据客户端对访问接口的累积调用次数查找到攻击的客户端,拒绝对攻击客户端提供服务,从而避免出现存储服务器对普通用户拒绝服务的情况。

在本发明的一个优选实施例中,上述的访问接口为bucket list接口。所述bucket list接口,用于对所述存储服务器中的对象进行遍历,从而在存储服务器中获取所需对象的地址,并根据获取的对象地址访问该对象。

现有技术中的私有云的应用场景中,因为对于私有云内部客户不采取收费策略,导致存储服务器常存在API接口滥用的情况,比如为了获得一个对象是否存在,去对整个bucket进行list操作来获取整个bucket的对象列表,这种list操作通常需要后端存储集群向调用者发送很多的内容,占用服务器带宽,在对公业务中通常会按流量收费,而这种list操作是非常耗费流量的。

因此在本发明的一个优选实施例中,限定了访问接口为bucket list接口,从而实现防止私有云内部客户端频繁的调用bucket list接口,占用服务器带宽,耗费流量的情况。在此实施例中,中间服务器将客户端的bucket list请求访问次数和bucket list请求访问的预设上限值进行比较,请求访问次数大于等于预设上限值时,中间服务器禁用该客户端的访问权限。

本发明旨在保护一种在私有云对象存储中防止被攻击的方法和系统,包括中间服务器以及与中间服务器信号连接的存储服务器,通过中间服务器对多个客户端的访问权限的控制,从而实现了防止接口滥用,减少因bucket list操作导致流量浪费,避免系统出现拒绝服务的效果。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

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