首页> 中国专利> 基于OpenTracing规范的拟态应用分布式追踪方法

基于OpenTracing规范的拟态应用分布式追踪方法

摘要

本发明提供一种基于Open Tracing规范的拟态应用分布式追踪方法。该方法包括:步骤1:当输入代理接收到外部请求A后,输入代理为外部请求A生成唯一ID标识,将唯一ID标识作为外部请求A的根标识;步骤2:将根标识注入至外部请求A,得到新的请求B,然后将新的请求B复制n份并分发至被请求应用对应的n个执行体;步骤3:每个执行体接收到新的请求B后,基于Open Tracing规范提取出根标识,将根标识注入至输出报文中,形成新的请求C;步骤4:按照步骤3的请求传递方式,将新的请求依次向下传递直至传递到输出代理;步骤5:输出代理接收到多份请求后,根据根标识区分请求的批次,以便对相同批次的请求进行拟态裁决。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-02

    实质审查的生效 IPC(主分类):H04L67/566 专利申请号:2022104343397 申请日:20220424

    实质审查的生效

说明书

技术领域

本发明涉及网络安全技术领域,尤其涉及一种基于Open Tracing规范的拟态应用分布式追踪方法。

背景技术

将传统的单体式应用拆分成多个独立的服务单元,随着互联网技术的快速发展,尤其是云计算的兴起,应用软件的复杂度也越来越高。例如在云计算场景,随着微服务架构的持续落地,一个应用可以由数千个微服务组成。极高的软件复杂度给应用的安全管控带来了新的挑战,尤其是面对基于未知漏洞和后门的网络攻击。针对该问题,拟态防御技术通过构造动态异构冗余模型,提高系统的不确定性,增加攻击者的攻击难度和成本,提升网络安全性能。

拟态防御实现高安全的一大关键点在于对多个执行体的输出报文进行拟态裁决。其中,需要首先提取出相同批次的输出报文;然后,对相同批次的输出报文进行大数判决。对于相同批次输出报文的提取,现有方法主要通过对应用程序的业务逻辑进行改造,使其每个输出报文都携带ID标识,进而区分不同的输出报文批次,但这无疑增添了应用程序的冗余度和和拟态化改造的复杂度。

发明内容

为了降低拟态化改造的复杂度,本发明提供一种基于Open Tracing规范的拟态应用分布式追踪方法,基于OpenTracing规范在服务间的通信报文中携带拟态标签,大幅度降低了应用拟态化改造的复杂度。

本发明提供一种基于Open Tracing规范的拟态应用分布式追踪方法,包括:

步骤1:当输入代理接收到外部请求A后,输入代理为所述外部请求A生成唯一ID标识,将所述唯一ID标识作为所述外部请求A的根标识;

步骤2:将所述根标识注入至所述外部请求A,得到新的请求B,然后将所述新的请求B复制n份并分发至被请求应用对应的n个执行体;

步骤3:每个所述执行体接收到所述新的请求B后,基于Open Tracing规范提取出所述根标识,将所述根标识注入至输出报文中,形成新的请求C;

步骤4:按照步骤3的请求传递方式,将新的请求依次向下传递直至传递到输出代理;

步骤5:所述输出代理接收到多份请求后,根据所述根标识区分请求的批次,以便对相同批次的请求进行拟态裁决。

进一步地,步骤2为:将所述外部请求A复制n份,然后将所述根标识分别注入至n份所述外部请求A,得到n份新的请求B,接着将n份新的请求B分发至被请求应用对应的n个执行体。

进一步地,步骤3中,在基于Open Tracing规范提取出所述根标识之后,还包括:

根据所述被请求应用的需求,将表征所述被请求应用的元数据追加到根标识,形成新的标识;

对应地,将所述根标识注入至输出报文中,具体为:将所述新的标识注入至输出报文中;

对应地,根据所述根标识区分请求的批次,具体为:根据所述根标识和所述元数据区分请求的批次;

其中,同一个被请求应用下的n个执行体对于同一批次请求所注入的元数据均相同。

进一步地,所述元数据包括时间戳和/或服务实例自定义字段。

本发明的有益效果:

针对拟态防御应用场景下,传统开发中通过对应用服务进行改造来携带ID标识,增添了耦合度和复杂性的问题,本发明提出了基于OpenTracing开放分布式跟踪方法来携带ID标识,大幅度降低了对应用程序本身的改造,使得整个过程更加的便捷,开发流程更加润滑,降低了整个程序的耦合度,更容易适应不同的用户请求协议。

附图说明

图1为本发明实施例提供的基于OpenTracing规范的拟态应用分布式追踪方法的流程示意图之一;

图2为本发明实施例提供的基于OpenTracing规范的拟态应用分布式追踪方法的流程示意图之二;

图3为本发明实施例的应用本发明方法的一种拟态应用场景框架示意图是单线程下web服务调用mysql服务具体实现;

图4为本发明实施提供的应用本发明方法的另一种拟态应用场景框架示意图,是多线程下web服务调用mysql服务具体实现。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

针对拟态应用场景下,为避免对应用程序进行改造携带ID的复杂情况,如图1所示,本发明提出了一种基于OpenTracing规范的拟态应用分布式追踪方法,该方法包括以下步骤:

S101:当输入代理接收到外部请求A后,输入代理为所述外部请求A生成唯一ID标识,将所述唯一ID标识作为所述外部请求A的根标识;

S102:将所述根标识注入至所述外部请求A,得到新的请求B,然后将所述新的请求B复制n份并分发至被请求应用对应的n个执行体;

或者,将所述外部请求A复制n份,然后将所述根标识分别注入至n份所述外部请求A,得到n份新的请求B,接着将n份新的请求B分发至被请求应用对应的n个执行体。

S103:每个所述执行体接收到所述新的请求B后,基于Open Tracing规范提取出所述根标识,将所述根标识注入至输出报文中,形成新的请求C,并向下传递;

S104:按照步骤S103的请求传递方式,将新的请求依次向下传递直至传递到输出代理;

S105:所述输出代理接收到多份请求后,根据所述根标识区分请求的批次,以便对相同批次的请求进行拟态裁决。

实施例2

在上述实施例1的基础上,本发明实施例还提供一种基于OpenTracing规范的拟态应用分布式追踪方法,与上述实施例1的不同之处在于,在本发明实施例中,被请求应用包含两个中间服务实例(即微服务S和微服务T),每个微服务下对应有三个执行体,步骤S103具体为:

每个所述执行体接收到所述新的请求B后,基于Open Tracing规范提取出所述根标识rootID,根据所述被请求应用的需求,将表征所述被请求应用的元数据metadata追加到根标识,形成新的标识ID(rootID=x,metadata);将所述新的标识注入至输出报文中,形成新的请求C;其中,同一个被请求应用下的n个执行体对于同一批次请求所注入的元数据均相同;

在本发明实施例中,步骤S105具体为:

所述输出代理接收到多份请求后,根据所述根标识和所述元数据区分请求的批次,以便对相同批次的请求进行拟态裁决。

本发明实施例中,所述元数据metadata包括时间戳和/或服务实例自定义字段;其他步骤的内容与上述实施例1相同,此处不再赘述。

实施例3

如图3示,本发明实施提供一种基于OpenTracing规范的拟态应用分布式追踪方法来对单线程模式下web服务调用mysql服务。

对应图示的拟态应用场景,本发明实施例方法包括以下步骤:

S301:外部请求A到达输入代理,由输入代理为该请求A生成唯一的ID标识rootID(同一次请求中rootID全局唯一),作为该请求A的根标识注入;首先将ID标识注入到上下文spanContext中;鉴于该请求A是http请求,输入代理将请求A复制三份,并将spanContext序列化注入到这三份请求http报文的header部分,得到三个三个相同的请求B,然后将三个请求B分别发送给三个执行体;

S302:web服务的S1、S2、S3执行体收到请求B后,发现只有一个后续触发请求,首先将上下文spanContext从请求http报文的header部分反序列化提取出来;spanContext会根据环境要求做出改变,但是其中的ID标识保持不变;鉴于输出报文是mysql报文,执行体会将spanContext序列化注入后续请求mysql报文的解释字段,然后向下传递,三个执行体后续请求中的ID标识保持一致。

S303:输出代理收到多份请求后,首先将上下文spanContext从报文中反序列化出来,并提取出ID标识;通过ID标识区分请求的批次,并对相同批次的请求进行拟态裁决。

S304:通过拟态裁决后可以调用后端mysql服务。

实施例4

如图4示,本发明实施提供一种基于OpenTracing规范的拟态应用分布式追踪方法来对多线程模式下web服务调用mysql服务。

对应图示的拟态应用场景,本发明实施例方法包括如下步骤:

S401:外部请求A到达输入代理,由输入代理为该请求A生成唯一的ID标识rootID(同一次请求中rootID全局唯一),作为该请求A的根标识注入;首先将ID标识注入到上下文spanContext中;鉴于该请求A是http请求,输入代理将请求A复制三份,并将spanContext序列化注入到这三份请求http报文的header部分,分别发送给三个执行体;

S402:web服务S1、S2、S3执行体收到请求后,发现有多个后续触发请求,需要多次调用后端mysql服务;执行体为每个后续请求启动一个新的线程向下执行;如图二携带报文,metadata用来区分不同新线程批次,这样由rootID和metadata组合的ID标识就可以唯一确定同一批次报文,用于拟态裁决。首先将上下文spanContext从请求http报文的header部分反序列化出来,并提取出ID标识;执行体每次启动一个新的线程,metadata就会在rootID的基础上加上前置请求启动的新线程个数乘以常数用以区分不同的线程,并和rootID重新组合成ID标识,注入到上下文spanContext中。鉴于输出报文是mysql报文,执行体会将spanContext序列化注入后续请求mysql报文的解释字段,然后向下传递,同一批次新线程在三个执行体中的ID标识保持一致。

S403:输出代理单元收到多份请求后,首先将上下文spanContext从报文中反序列化出来,并提取出ID标识;通过ID标识区分请求的批次,并对相同批次的请求进行拟态裁决。

S404:通过拟态裁决后可以调用后端mysql服务。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号