一种对非结构化数据资源的安全控制系统及方法与流程

文档序号:16671306发布日期:2019-01-18 23:36阅读:165来源:国知局
一种对非结构化数据资源的安全控制系统及方法与流程

本发明涉及计算机软件技术领域,具体提供一种对非结构化数据资源的安全控制系统及方法。



背景技术:

客户端与服务器端api(applicationprogramminginterface即应用程序服务接口)交互时,对于服务器端api来说,api开发者除了开发必要的业务逻辑以外,还需要考虑到访问授权、访问日志记录、请求转发、分析和监控等各种工作,增加了开发难度。对于客户端来说,各api过于分散,没有一个统一的出入口,增加了客户端调用的难度。在传统的单体应用中,这些功能一般都是内嵌在应用中,作为一个组件运行。但是在微服务架构模式下,不同种类且独立运行的应用可能会有数十甚至数百种,继续使用这种方式会造成非常高的管理和发布成本。所以就需要在这些应用上抽象出一个统一的流量入口,完成这些功能的实现。

另一方面,服务端api粒度通常与客户端的需求粒度不同。服务端一般提供细粒度的api,这意味着客户端需要与多个服务进行交互。不同的客户端需要的数据资源往往也是有区别的,有的客户端需要粗略的信息即可,而有的客户端需要更详细的数据资源。不同的数据资源对不同的客户端来说,权限也是不同的。随着时间的推移,服务端接口的划分很难做到一成不变,所以服务端api需要对客户端隐藏。



技术实现要素:

本发明的技术任务是针对上述存在的问题,提供一种可以使开发者将精力集中在具体逻辑的开发上,而不需要考虑客户端与服务端交互的问题上的对非结构化数据资源的安全控制系统。

本发明进一步的技术任务是提供一种对非结构化数据资源的安全控制方法。

为实现上述目的,本发明提供了如下技术方案:

一种对非结构化数据资源的安全控制系统,包括客户端、api网关和若干服务端api,api网关包括若干监听端口和访问授权模块、日志记录模块、代理转发模块、服务限流模块和分析监控模块,客户端与api网关相通信,api网关与若干服务端api相通信。

作为优选,所述监听端口包括8000端口、8001端口、8443端口和8444端口,其中,8000端口用于监听来自客户端的请求,并将请求转发至服务端api;8001端口用于管理员对组件进行配置;8443端口为组件监听来自客户端的请求;8444用于管理员监听请求的端口。

8000端口是组件用来监听来自客户端的http请求的,并将此请求转发到服务端api,也是最主要用到的端口。

8443端口是组件监听http的请求的端口。该端口具有与8000端口类似的行为,但是它只监听https的请求,并不会产生转发行为。可以通过配置文件来禁用此端口。

8001端口用于管理员对组件进行配置的端口。

8444端口用于管理员监听https请求的端口。

组件在8001端口上提供了一个restful形式的管理服务端api,用于管理实例或群集的配置。通过管理员添加服务端api。通过组件转发请求:发出以下curl请求以验证组件是否将请求正确的转发到了服务端api。默认情况下,组件是在8000端口上处理代理请求的,一个成功的响应,意味着组件已经将(http://localhost:8000)请求转发到了我们在第一步中配置的地址里,并将response转发。

作为优选,所述api网关的访问授权模块用于提供访问授权,日志记录模块用于提供日志记录,代理转发模块用于提供代理转发,服务限流模块用于提供服务限流,分析监控模块用于分析监控。

api网关封装了内部系统架构,为每个客户端单独提供一个api。api网关还有其他职责,例如负载均衡、缓存、请求的修改和管理、静态响应的处理。

作为优选,所述api网关采用同步机制,例如http。

一种对非结构化数据资源的安全控制方法,当api网关运行时,每个对服务端api的请求先被api网关命中,api网关将对服务端api的请求代理到客户端,api网关是每个对服务端api的请求的入口点。

在请求和返回之间,api网关将会执行已经实现安装和配置好的任何插件,进行授权。

因为一个客户端调用服务端api时有可能响应慢或者服务不可用,api网关决不能由于等待服务端api而被无限期的阻塞下去,例如在产品详情的场景中,如果推荐服务未响应,api网关应该将其余的产品详情信息返回给客户端,因为这些东西仍然对用户是有用的,这时的推荐内容是空的或者被其他的内容代替,例如top10的产品。但是如果产品信息服务未响应,api网关应该返回错误给客户端。

如果服务端api不可用,调用时间超过某个设定的阈值,就是所谓的超时,它是实现了断路器模式的,这时它会阻止客户端对不响应的服务的不必要等待。如果一个服务的错误率超过指定的阈值,然后会触发断路器,然后所有的请求在一个时间区间内都会立即失败。请求失败后的返回函数,返回错误码。

作为优选,所述api网关调用每个服务端api的ip地址和端口号,且api网关使用服务发现机制:serversidediscovery和/或clientsidediscovery。

api网关调用的每个服务端api的位置(ip地址和端口号),在传统的应用中,需要硬性地配置服务端api的位置,但现在的基于云的应用中就很简单了。基础设施服务,例如消息中间件,通常都是一个静态的位置,可以通过操作系统的环境变量来指定。然而,确定一个应用服务的位置不是那么简单的,应用服务是动态分配位置的,并且一个服务的实例集合也是动态改变的,这是因为一些自动的扩缩容和升级。因此,api网关要像其他的服务客户端一样,需要使用系统的服务发现机制:serversidediscovery或者clientsidediscovery。系统使用的是客户端侧的发现,api网关必须能够查询到服务注册中心,它是所有服务端api和对应位置的数据库存储。

代理转发时,监听其配置的代理端口上的http请求(默认为8000),并识别正在请求的是哪个服务端api,然后运行在该服务端api上的配置插件(如果没有则不执行),并将客户端的http请求转发到自己的api服务。组件是一个透明的代理,它会将请求转发给客户端请求,除了添加诸如connection之类的各种标题。

作为优选,调用服务端api时客户端进行身份认证,具体为向服务端api添加认证组件,选择一个客户端对象,为客户端提供指定的验证插件方案的身份验证凭据。

只要有请求进入组件,都将检查其提供的身份验证凭据(取决于认证类型),如果该请求无法被验证或者验证失败,则请求会被锁定,不执行向服务端api转发的操作。

最简单的理解和配置客户端的方式是,将其于用户进行一一映射,即一个客户端代表一个用户(或应用)。但是对于组件而言,这些都无所谓。客户端的核心原则是你可以为其添加插件,从而自定义他的请求行为。

匿名访问:可以将指定的服务端api配置为仅允许经过身份验证的访问(通过插件来实现)或只允许匿名访问。也就是说,一个指定的服务端api,不允许对于某些客户端实行身份验证,而对于另外的客户端实行匿名访问。

作为优选,api网关处理对服务端api的请求时,将对服务端api的请求路由到服务端api。

api网关处理一些请求的方式是,简单将他们路由到合适的服务端api。

作为优选,api网关处理对服务端api的请求时,调用多个服务端api,将响应结果聚合在一起。

api网关处理某些请求的方式是,调用多个服务端api,然后将它们的响应结果聚合在一起。

作为优选,api网关处理对服务端api的请求时,api网关并行地执行请求。

对于某些请求,例如产品详情的请求,它的服务端api都是彼此独立的,为了减少响应时间,api网关应该并行地执行这些独立的请求。然后,有时候一些请求之间时彼此依赖的。api网关在将请求路由到服务端api之前,可能需要调用身份验证服务来验证请求。类似地,在获取顾客需要的产品列表时,api网关必须首先检索顾客需要的产品概要信息,然后才能检索每个产品的详细信息。

与现有技术相比,本发明的对非结构化数据资源的安全控制方法具有以下突出的有益效果:所述对非结构化数据资源的安全控制方法可以为不同的客户端定制不同的权限,为服务端api的访问及可用性等提供监控功能。针对不同的客户端可以开放不同的服务端api,向每个客户端提供最优访问接口。api网关使客户端可以在一趟请求中向多个服务拉取数据。减少了请求/往返数量,提升用户体验。该安全访问机制可以提供高性能、高可用托管服务,从而帮助服务的开发者便捷地对外提供服务,而不用考虑安全控制、流量控制、日志记录等问题,统一在网关层将安全认证,流量控制,日志记录,请求转发等实现,具有良好的推广应用价值。

附图说明

图1是本发明所述对非结构化数据资源的安全控制系统的拓扑图。

具体实施方式

下面将结合附图和实施例,对本发明的对非结构化数据资源的安全控制系统及方法作进一步详细说明。

实施例

如图1所示,本发明的对非结构化数据资源的安全控制系统,包括客户端、api网关和若干服务端api。客户端与api网关相通信,api网关与若干服务端api相通信。其中,api网关采用同步机制,例如http。

api网关包括监听端口和访问授权模块、日志记录模块、代理转发模块、服务限流模块和分析监控模块。监听端口包括8000端口、8001端口、8443端口和8444端口。8000端口是组件用来监听来自客户端的http请求的,并将此请求转发到服务端api,也是最主要用到的端口。8443端口是组件监听http的请求的端口。该端口具有与8000端口类似的行为,但是它只监听https的请求,并不会产生转发行为。可以通过配置文件来禁用此端口。8001端口用于管理员对组件进行配置的端口。8444端口用于管理员监听https请求的端口。组件在8001端口上提供了一个restful形式的管理服务端api,用于管理实例或群集的配置。通过管理员添加服务端api。通过组件转发请求:发出以下curl请求以验证组件是否将请求正确的转发到了服务端api。默认情况下,组件是在8000端口上处理代理请求的,一个成功的响应,意味着组件已经将(http://localhost:8000)请求转发到了我们在第一步中配置的地址里,并将response转发。

api网关的访问授权模块用于提供访问授权,日志记录模块用于提供日志记录,代理转发模块用于提供代理转发,服务限流模块用于提供服务限流,分析监控模块用于分析监控。

api网关封装了内部系统架构,为每个客户端单独提供一个api。api网关还有其他职责,例如负载均衡、缓存、请求的修改和管理、静态响应的处理。

本发明的对非结构化数据资源的安全控制方法,请求流程为:当api网关运行时,每个对服务端api的请求先被api网关命中,api网关将对服务端api的请求代理到客户端,在请求和返回之间,api网关将会执行已经实现安装和配置好的任何插件,进行授权。api网关是每个对服务端api的请求的入口点。

该方法中响应式模型为:api网关处理一些请求的方式是,简单将他们路由到合适的服务端api;处理其它请求的方式是,调用多个服务端api,然后将它们的响应结果聚合在一起。对于某些请求,如产品详情的请求,它的服务端api都是彼此独立的,为了减少响应时间,api网关应该并行地执行这些独立的请求。然而,有时候一些请求之间是彼此依赖的。api网关在将请求路由到服务端api之前,可能需要调用身份验证服务来验证请求。类似地,在获取顾客需要的产品列表时,api网关必须首先检索顾客需要的产品概要信息,然后才能检索每个产品的详细信息。

api网关监听四个端口的请求,默认情况是:

8000:此端口是组件用来监听来自客户端的http请求的,并将此请求转发到服务端api。这也是最主要用到的端口。

8443:此端口是组件监听http的请求的端口。该端口具有与8000端口类似的行为,但是它只监听https的请求,并不会产生转发行为。可以通过配置文件来禁用此端口。

8001:用于管理员对组件进行配置的端口。

8444:用于管理员监听https请求的端口。

组件在8001端口上提供了一个restful形式的管理服务端api,用于管理实例或群集的配置。通过管理员添加服务端api。通过组件转发请求:发出以下curl请求以验证组件是否将请求正确的转发到了服务端api。默认情况下,组件是在8000端口上处理代理请求的,一个成功的相应,意味着组件已经将(http://localhost:8000)请求转发到了我们在第一步中配置的地址里,并将response转发。

服务发现过程:api网关调用的每个服务端api的位置(ip地址和端口号),在传统的应用中,需要硬性地配置服务端api的位置,但现在的基于云的应用中就很简单了。基础设施服务,例如消息中间件,通常都是一个静态的位置,可以通过操作系统的环境变量来指定。然而,确定一个应用服务的位置不是那么简单的,应用服务是动态分配位置的,并且一个服务的实例集合也是动态改变的,这是因为一些自动的扩缩容和升级。因此,api网关要像其他的服务客户端一样,需要使用系统的服务发现机制:serversidediscovery或者clientsidediscovery。系统使用的是客户端侧的发现,api网关必须能够查询到服务注册中心,它是所有服务端api和对应位置的数据库存储。

代理转发过程:监听其配置的代理端口上的http请求(默认为8000),并识别正在请求的是哪个服务端api,然后运行在该服务端api上的配置插件(如果没有则不执行),并将客户端的http请求转发到自己的api服务。组件是一个透明的代理,它会将请求转发给客户端请求,除了添加诸如connection之类的各种标题。

认证权限过程:

通用认证:一般情况下,调用服务端api都需要客户端有身份认证,且不允许错误的认证或无认证的请求通过。认证插件可以实现这一需求。处理流程如下:

1、向服务端api或全局添加认证组件;

2、选择一个客户端对象;

3、为客户端提供指定的验证插件方案的身份验证凭据;

4、现在,只要有请求进入组件,都将检查其提供的身份验证凭据(取决于认证类型),如果该请求无法被验证或者验证失败,则请求会被锁定,不执行向服务端api转发的操作。

最简单的理解和配置客户端的方式是,将其于用户进行一一映射,即一个客户端代表一个用户(或应用)。但是对于组件而言,这些都无所谓。客户端的核心原则是你可以为其添加插件,从而自定义他的请求行为。

匿名访问:可以将指定的服务端api配置为仅允许经过身份验证的访问(通过插件来实现)或只允许匿名访问。也就是说,一个指定的服务端api,不允许对于某些客户端实行身份验证,而对于另外的客户端实行匿名访问。

失败处理过程:

因为一个客户端调用服务端api时有可能响应慢或者服务不可用,api网关决不能由于等待服务端api而被无限期的阻塞下去,例如在产品详情的场景中,如果推荐服务未响应,api网关应该将其余的产品详情信息返回给客户端,因为这些东西仍然对用户是有用的,这时的推荐内容是空的或者被其他的内容代替,例如top10的产品。但是如果产品信息服务未响应,api网关应该返回错误给客户端。

如果服务端api不可用,调用时间超过某个设定的阈值,就是所谓的超时,它是实现了断路器模式的,这时它会阻止客户端对不响应的服务的不必要等待。如果一个服务的错误率超过指定的阈值,然后会触发断路器,然后所有的请求在一个时间区间内都会立即失败。请求失败后的返回函数,返回错误码。

api网关提供了一个成熟的、可扩展的、高性能的web服务器,并且还提供了易于部署、配置和编程的反向代理,可以管理授权、访问控制、请求的负载均衡、响应的缓存,并提供了应用本身的健康检查和监控。

api网关提供访问限制(权限)、流量控制(访问次数)、分析监控、日志记录、请求转发(外部服务)等功能,可以让开发者把精力集中在具体逻辑的开发上,而不需考虑客户端与服务端交互的问题上。提供不同服务之间的统一接口,避免不同服务端api在调用风格上的差异。减少对外暴露服务。当其中某一服务端api发生变更时,只需通过该安全机制进行适配,而不需要对调用方进行调整。

以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

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