一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于私有云的服务安全策略管理方法与流程

2022-03-16 05:21:49 来源:中国专利 TAG:


1.本发明涉及计算机网络服务安全技术领域,具体为一种基于私有云的服务安全策略管理方法。


背景技术:

2.在目前常见的服务管理实现方式普遍是通过源码编译方式实现。这就需要使用人员必须具备专业的技术背景,使应用配置部署、维护使用成本高。不利于快速实现和推广。


技术实现要素:

3.本发明的目的在于提供一种基于私有云的服务安全策略管理方法,以解决现有技术中存在的问题。
4.为实现上述目的,本发明采用的技术方案是:提供一种基于私有云的服务安全策略管理方法,其包括如下步骤:s100,服务启动,用于保障信息同步模块、网关管理模块和服务转发模块的正常运行;s200,请求分发,用于解决转发客户端请求到后端服务集群的问题;s300,消息同步,通过客户端请求的传入地址,提取客户端信息,用于后续流程使用;s400,缓存同步,用于解决前置数据网关多个实例之间缓存同步的问题;s500,运维管理,用于解决网关日常维护问题。
5.优选的,在本技术方案中,在所述步骤s100中,所述服务启动至少包括main函数启动,main函数启动包括启动信息同步、服务转发、网关管理三个进程;在启动三个进程之前读取配置文件,并根据配置文件的内容进行配置,调整容器状态,以提供更好的服务;在这过程中,每一个单独的模块都是一个独立的进程,信息同步、服务转发、网关管理都是同时启动的,不存在启动的先后顺序,而且进程之间采用通道进行信息传递及沟通。
6.优选的,在本技术方案中,在所述步骤s200中,所述请求分发包括客户端、前置数据网关和后端服务集群三个部分;其中,所述服务转发模块包括请求信息提取、白名单查询、服务映射查询和请求转发,是作为一条进程被main函数启动后,读取main函数传入的配置,获取配置之后,监听一个tcp端口,默认8080,任意网段即可访问。
7.优选的,在本技术方案中,在所述步骤s300中,客户端指的是远程服务器的客户端,其包括前置数据网关;所述前置数据网关启动后,从配置中读取信息并传递给信息同步模块并启动连接远程服务器;所述远程服务器连接成功之后返回消息队列列表,所述前置数据网关通过配置中的列表进行监听,若队列不存在,则自动创建;
信息同步模块通过消息队列完成远程推送信息,通过进程阻塞实现;如果消息没有收受到,则继续阻塞等待,当接收到消息之后,判断消息来源是队列中的信息,还是服务器的心跳信息;判断消息来源前需要对接收到消息后要进行反序列化,再通过消息解释,将再将信息或命令分发到不同的函数中进行,由函数生成执行的命令,服务器命令行、前置数据网关的其他实例或拥有与远程服务器通讯的sdk的其他服务将需要执行的命令封装成约定格式,再通过sdk将字符串转换为二进制数据包,并传递到对应的队列之上,服务端接受到消息之后会把一个凭据信息返回。
8.优选的,在本技术方案中,在所述步骤s400中,缓存同步至少包括远程服务器与前置数据网关两个部分关两部分,其中前置数据网关包括前置数据网关-1和前置数据网关-2;所述缓存同步,其过程都是通过信息同步模块启动后,使用对应的sdk连接远程服务器,对消息队列进行监听;当客户端任意调用所述前置数据网关-1和所述前置数据网关-2的网关管理模块,将对应的运维操作的命令包装成对应的二进制包并发布到所述远程服务器的远程缓存中,远端缓存更新后返回对应信息;服务sdk调用者获取对应信息并验证后,在发布消息推送到消息队列,消息队列接收到信息后,会把信息分发给所有的监听者,并使它们能接收到对应的消息;同时通过命令分发将对应的运维操作到网关管理模块,网关管理模块访问远程服务器的远端缓存信息,并同步更新会本地,替换本地的缓存。
9.优选的,在本技术方案中,在所述步骤s500中,所述运维管理,其至少包括运维管理模块、内存模块和服务转化模块三个部分,所述运维管理模块启动后,通过监听端口接受可实话操作请求或等待请求,发送至运维操作,运维操作对本地缓存的新增信息进入缓存、修改缓存内容、从缓存中删除信息及读取缓存信息进行操作;所述内存模块完成更新之后,本地缓存返回一个成功信息,该信息处理之后调度信息同步模块,将修改后的信息同步推送到远端服务器上,并通知其他实例读取最新的缓存并更新。
10.与现有技术对比,本发明具备以下有益效果:提供统一的服务入口,可实现对众多服务接口进行管控,对访问服务的身份认证、功能调用的业务鉴权、流量与并发控制,基于调用的流量情况进行监控,从部署、使用、维护方面降低了用户的操作难度。
附图说明
11.图1为本发明的管理方法的流程图;图2为本发明的服务启动的流程图;图3为本发明的请求分发的流程图;图4为本发明的消息分发的流程图;图5为本发明的缓存同步的流程图;图6为本发明的运维管理的流程图。
12.具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
13.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;对于相同或相似的概念或过程可能在某些实施例不再赘述。
14.请参阅图1,本发明的一种基于私有云的服务安全策略管理方法,其包括如下步骤:s100,服务启动;s200,请求分发;s300,消息同步;s400,缓存同步;s500,运维管理。
15.在本技术方案中,步骤s100的具体过程如图2所示,服务启动,用于保障信息同步模块、网关管理模块和服务转发模块的正常运行,其更具体的过程是:服务启动至少包括main函数启动,main函数启动的主要功能包括启动信息同步、服务转发、网关管理三个进程。在启动三个进程之前读取配置文件,并根据配置文件(例如yaml或json格式)的内容进行配置,调整容器状态,以提供更好的服务;在这过程中,每一个单独的模块都是一个独立的进程,信息同步、服务转发、网关管理都是同时启动的,不存在启动的先后顺序,而且进程之间采用通道进行信息传递及沟通。
16.进一步的,配置文件是放在指定目录中,系统从指定目录读取配置文件,当读取配置文件异常(文件格式错误)或配置文件不存在的时候,main函数可以按照默认配置进行启动,优先保障服务转发模块能够运行,服务转发模块监听一个tcp端口,并以该端口作为入口并进行服务转发。
17.信息同步模块启动后,根据main函数传递的配置,选择消息订阅的服务器并监听相应的队列。
18.网关管理模块,启动后同样监听一个tcp端口,并自动配置路由。配置完成后通过进程通道调用信息同步模块来读取远程缓存信息转换为本地缓存。如果远程缓存不存在,则读取配置文件中的信息进行缓存配置。
19.本技术方案中,步骤s200的具体过程如图3所示,请求分发是服务转发模块的核心,用于解决转发客户端请求到后端服务集群的问题,其包括客户端、前置数据网关和后端服务集群三个部分:服务转发模块,是作为一条进程被main函数启动后,读取main函数传入的配置,包括是否需要鉴权、鉴权字段名称、网关管理模块服务地址、服务熔断配置。获取配置之后,监听一个tcp端口,默认8080,任意网段即可访问。设计传入地址格式为schema://service-name/requrl,其中schema表示是用http或https,又有一些如websocket是使用ws来开头;service-name表示需要访问的微服务名字;requrl表示对应微服务需要进行的操作。服务
转发模块包括请求信息提取、白名单查询、服务映射查询、请求转发。
20.请求信息提取,是从客户端的请求中获取服务转发所需要的信息,具体是获取客户端访问的路径与对应的服务名。一般来说客户端的一个http请求包括请求头、请求体等信息,而服务转发需要客户端按照一个特定的规则发起请求。
21.白名单查询,通过查询内存中的白名单列表,来判断是否需要服务转发;如果该请求路径存在于白名单列表中的话,则直接进行服务转发并输出对应的日志,不需要提取鉴权信息后再进行鉴权拦截。否则需要先提取鉴权信息,而后进行判断是否缺少鉴权信息,若缺少鉴权信息则进行异常提示,若没有缺少则调用接口查询鉴权信息,而后判断鉴权信息是否错误,当判断为错误则进行异常提示,判断鉴权信息正确则将用户信息转发至查询服务映射。
22.服务映射查询,用于对用户的地址查询。在本技术方案中,由于服务映射查询的设计底层采用的是微服务体系,所以服务是无状态,同时ip也会实时变动,因而本技术方案中的服务映射查询是以通过一个服务名,获取服务的一个实例的地址并返回来实现。微服务体系的soa(面向服务架构)中的服务众多,它们都有自己的一个ip,而且当碰到流量巨大的时候,一个服务会有好几个实例,为了实现服务的负载均衡,服务映射查询为获取一个服务的所有实例ip,需要根据资源调度算法选择一个合适的ip地址并返回。而调度算法分为计算能力调度算法(capacity scheduler)、公平调度算法(fair scheduler)、先进先出调度算法(fifo scheduler)。在本技术方案中默认是采用公平调度算法进行选取。
23.请求转发,是将原有的请求转发给对应的ip。在本实施例中请求转发选用深度转发方式。深度转发是使用socket通信模型进行,对对应服务进行tcp端口访问,同时将客户端的报文全部提取,并写入到对应的tcp端口中等待服务返回;等待服务处理完毕之后,将tcp端口返回的信息复写入给客户端的返回信息中,保障在传输过程中不会出现信息遗失。
24.详细参看图3所示的步骤s200中,进程启动后是按附图3的流程进行请求分发工作,通过客户端请求的传入地址,提取客户端信息,用于后续流程使用。提取信息为客户端请求方式、请求的微服务名、协议名、请求url、是否包含鉴权信息、鉴权信息。
25.通过提取的客户端请求的url判断该url是否在缓存的白名单之内,如果存在,则通过服务转发获取微服务的真实地址并转发。如果不存在则继续提取请求的鉴权信息,鉴权信息设计成放到请求头之中进行传递。默认是access-token,如果请求没有携带该请求头可以判断为缺少鉴权信息,并跳转到异常提示并返回。如果包含鉴权信息,提取之后交由后面的微服务集群进行处理,返回该客户端请求的用户信息,包括发起人是谁,能否访问该url并获取资源等。如果没有返回用户信息或没有权限访问,则通过异常提示进行跳转并响应。
26.拥有权限的话则查询缓存中对应的服务列表,选择一个实例的ip并将请求转发,等待响应之后,经由服务转发服务统一包装,最后返回给客户端。
27.本技术方案中,步骤s300的具体过程如图4所示,消息分发是信息同步模块中用于消息发布订阅,负责将接受到的信息分发给不同的函数执行,实现网关的信息同步、实时刷新等功能。
28.如图4所示,步骤s300的信息分发分发流程主要涉及远程服务器、客户端与前置数据网关三部分,需要说明的是在图4中的客户端指的是远程服务器的客户端,其包括服务器
命令行、前置数据网关的其他实例或拥有与远程服务器通讯的sdk的其他服务。
29.前置数据网关启动后,从配置中读取信息并传递给信息同步模块并启动,传递的配置包括远程服务器的ip地址、用户名、密码和队列信息,通过传递这些信息来完成连接远程服务器。
30.远程服务器连接成功之后返回消息队列列表,前置数据网关通过配置中的列表进行监听,若队列不存在,则自动创建。这一步骤在服务器上自动完成,远程服务器自带该功能。
31.信息同步模块通过消息队列完成远程推送信息,通过进程阻塞实现。当接收到消息之后,判断消息来源是队列中的信息,还是服务器的心跳信息,如果消息没有接收到,则继续阻塞等待。
32.队列中的消息是以二进制包的形式序列化传递的,所以接收到消息后要进行反序列化,反序列化后是一个按照约定格式(action\\t\\nkey)编制的字符串。其中action表示动作包括(get、put、delete、post分别表示获取、更新、删除、创建四种操作);\\t\\n表示分隔符;key表示消息队列名称,如get\\t\\nservicelist 表示从servicelist中读取信息。
33.通过消息解释,将再将信息或命令分发到不同的函数中进行,由函数生成执行的命令。通过职责链完成,即一个函数对应一种类型的消息。如传递的消息是get\\t\\nservicelist解析后为get servicelist,函数开始之前判断传递的参数是否是get servicelist。如果是,则执行从servicelist中读取信息的操作,如果不是则交由下一个函数执行。直到职责链中所有的节点全部走完,若解析的消息在职责链中没有函数处理,会交由一个默认函数执行。
34.服务器命令行、前置数据网关的其他实例或拥有与远程服务器通讯的sdk的其他服务将需要执行的命令封装成约定格式(action\\t\\nkey),再通过sdk将字符串转换为二进制数据包,并传递到对应的队列之上,服务端接受到消息之后会把一个凭据信息返回。
35.本技术方案中,步骤s400的具体过程如图5所示,缓存同步,用于解决前置数据网关多个实例之间缓存同步的问题,通过远程服务器的消息队列实现。
36.该流程主要涉及远程服务器与前置数据网关两部分,其中前置数据网关-1、前置数据网关-2表示不同的实例。
37.实例之间都是通过信息同步模块启动后,使用对应的sdk连接远程服务器,对消息队列进行监听。
38.当客户端调用任意网关实例的网关管理模块,将对应的运维操作的命令包装成对应的二进制包并发布到远程服务器的远程缓存中,远端缓存更新后返回对应信息。服务sdk调用者获取对应信息并验证后,在发布消息推送到消息队列。消息队列接收到信息后,会把信息分发给其他所有的监听者,这样其他实例就能接收到对应的消息。同时通过命令分发将对应的运维操作到网关管理模块。网关管理模块访问远程服务器的远端缓存信息,并同步更新会本地,替换本地的缓存。
39.本技术方案中,步骤s500的具体过程如图6所示,运维管理,用于解决网关日常维护问题。运维管理的运维管理过程主要用于网关管理,给系统管理员提供可视化的服务,包括涵盖网关的基础运维、白名单管理、服务映射管理。
40.运维操作为对本地缓存的操作,如新增信息进入缓存、修改缓存内容、从缓存中删
除信息、读取缓存信息。
41.完成更新之后,本地缓存会返回一个成功信息,该信息处理之后调度信息同步模块,将修改后的信息同步推送到远端服务器上,并通知其他实例读取最新的缓存并更新。
42.本地缓存主要存储在内存之中,采用key-value的形式进行存储。主要存放白名单信息和服务映射信息。其中白名单信息以whitelist为key进行存储,内容为一个数组;服务映射信息使用serviceaddrmap为key进行存储,内容为一个key-value的hash表。
43.而服务转发模块启动并接受到客户端请求后进行处理,需要读取对应的缓存信息,如判断请求是否在白名单之内。当进行服务转发的时候读取服务映射列表将服务名转化为某一个实例的ip地址。详细的处理流程可以参考请求分发流程,这里不在复述。
44.总的来说运维管理模块主要就是提供接口更新存放在内存中的本地缓存。当单实例运行的时候,更新成功后的消息同步操作就显得没有意义,所以消息同步模块更多的是运用在分布式多实例的场景下。
45.综上所述,本发明的方法,操作简单,运营维护成本低。提供高度解耦、不影响现有系统的云原生的服务安全管理方法;支持横向扩展的方式实现,支持多种环境使用,内部系统部署、私有云、混合云相关组合。而且本方法提供统一的服务入口,可实现对众多服务接口进行管控,对访问服务的身份认证、功能调用的业务鉴权、流量与并发控制,基于调用的流量情况进行监控,从部署、使用、维护方面降低了用户的操作难度。
46.在本实施例子中未说明的部件结构、连接关系、工作原理等均采用现有技术来实现,在此不再重复累述。
47.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献