一种api管控方法、装置及电子设备
技术领域
1.本申请涉及计算机技术领域,尤其涉及一种应用程序接口(application programming interface,api)管控方法、装置及电子设备。
背景技术:2.随着移动应用、智能设备的爆发增长以及微服务架构在互联网行业的普及,众多物联网、人工智能、零售商、媒体、政府和金融服务等公司公布了大量网络应用程序接口web api,尤其是基于应用层协议的api接口,这其中甚至包括了机器到机器的通信接口。
3.目前,现有的api管理集成了很多的通用功能、是一种通用的api管理方案,适用于尽量多的企业,对api进行管理。现有的api管理方案为人工获取api的相关信息,再根据api的相关信息对api进行管控,使得api的管控效率较低。
技术实现要素:4.本申请实施例提供一种api管控方法、装置及电子设备,有利于提高api的管控效率。
5.第一方面,本申请实施例提供一种api管控方法,包括:
6.获取数据源的配置信息;所述数据源包括服务发现源、api网关和api发现源中的至少一种;
7.根据所述数据源的配置信息,获得所述数据源对应的api的配置信息,并根据所述api的配置信息,确定所述api的标记信息;
8.基于所述数据源的配置信息和所述api的标记信息,对所述api进行安全检测,得到安全检测结果;
9.基于所述数据源的配置信息,对所述api进行漏洞检测,得到漏洞检测结果;
10.根据所述安全检测结果和所述漏洞检测结果,输出告警通知信息。
11.本申请实施例通过获取数据源的配置信息,获得数据源对应的api的配置信息,并根据api的配置信息,确定api的标记信息;然后,基于数据源的配置信息和api的标记信息,对api进行安全检测,得到安全检测结果,以及基于数据源的配置信息,对api进行漏洞检测,得到漏洞检测结果;再根据得到的安全检测结果和漏洞检测结果,输出告警通知信息。由于本申请实施例根据获取到的数据源的配置信息,确定api的配置信息,进而确定api的标记信息,无需手动输入所有api的配置信息,从而提高了api的获取效率;再根据确定出的数据源的配置信息和api的标记信息,对api进行安全检测,以及根据数据源的配置信息对api进行漏洞检测,从而提高了api的管控效率。
12.一种可选的实施方式为,所述基于所述数据源的配置信息和所述api的标记信息,对所述api进行安全检测,得到安全检测结果,包括:
13.根据所述数据源的配置信息,与所述数据源对应的系统建立连接,并从所述数据源对应的系统获取api日志文件;
14.根据所述api的标记信息,在所述api日志文件中查找待检测的api;
15.对所述待检测的api进行安全检测,得到所述待检测的api对应的安全检测结果。
16.由于本申请实施例根据数据源的配置信息,与数据源对应的系统建立连接,并从数据源对应的系统获取api日志文件,根据api的标记信息,在api日志文件中查找待检测的api,然后,对待检测的api进行安全检测,得到待检测的api对应的安全检测结果,从而实现对api的安全管控。
17.一种可选的实施方式为,基于所述数据源的配置信息,对所述api进行漏洞检测,得到漏洞检测结果,包括:
18.根据所述数据源的配置信息,与所述数据源对应的系统建立连接,并从所述数据源对应的系统获取api日志文件;
19.根据通过条件设置界面接收到的待检测的api的标识,从所述api日志文件中查找待检测的api;
20.按照设定的检测条件,对所述待检测的api进行漏洞检测,得到所述待检测的api对应的漏洞检测结果;所述检测条件为通过所述条件设置界面接收到的检测条件。
21.由于本申请实施例根据数据源的配置信息,与数据源对应的系统建立连接,并从数据源对应的系统获取api日志文件,并根据从条件设置界面接收到的待检测的api的标识,从api日志文件中查找待检测的api;然后,按照设定的检测条件,对待检测的api进行漏洞检测,从而实现对api的漏洞检测。
22.一种可选的实施方式为,所述根据所述安全检测结果和所述漏洞检测结果,输出告警通知信息,包括:
23.分别确定所述安全检测结果和所述漏洞检测结果对应的任务类型和任务名称;
24.基于所述任务类型和任务名称与所述告警通知信息的对应关系,输出所述告警通知信息。
25.由于本申请实施例根据分别确定出的安全检测结果和漏洞检测结果对应的任务类型和任务名称,以及任务名称和任务类型与告警通知信息的对应关系,输出告警通知消息,实现针对不同的检测结果,输出不同的告警通知消息,从而提高了api的管控效率。
26.一种可选的实施方式为,所述获取数据源的配置信息,包括:
27.通过所述数据源对应的输入界面,接收输入的所述数据源的配置信息;
28.所述根据所述数据源的配置信息,获得所述数据源对应的api的配置信息,包括:
29.基于预设的获取周期,根据所述数据源的配置信息,获取所述数据源对应的各个服务器对应的配置信息;
30.根据所述各个服务器的配置信息,获得所述各个服务器对应的api的配置信息。
31.由于本申请实施例通过数据源对应的输入界面,接收输入的数据源的配置信息,并根据预设的获取周期,以及数据源的配置信息,周期性地获取数据源对应的各个服务器对应的配置信息,再根据各个服务器的配置信息,获得各个服务器对应的api的配置信息,从而提高了api的获取效率。
32.一种可选的实施方式为,所述数据源为所述服务发现源;
33.所述根据所述数据源的配置信息,获得所述数据源对应的api的配置信息,包括:
34.每间隔预设的获取周期,根据所述服务发现源的配置信息,获取所述服务发现源
中各个服务对应的配置信息;
35.根据所述各个服务对应的配置信息,确定所述各个服务对应的api的配置信息。
36.由于本申请实施例每间隔预设的获取周期,根据服务发现源的配置信息,获取服务发现源中各个服务对应的配置信息,再根据各个服务对应的配置信息,确定各个服务对应的api的配置信息,使得周期性地获取api的配置信息,从而提高了api的获取效率。
37.一种可选的实施方式为,所述数据源为所述api发现源;
38.所述根据所述数据源的配置信息,获得所述数据源对应的api的配置信息,包括:
39.每间隔预设的获取周期,根据所述api发现源的配置信息,获取所述api发现源中各个api的参考信息;
40.根据预设的api解析规则和各个所述api的参考信息,获得各个所述api的配置信息。
41.由于本申请实施例每间隔预设的获取周期,根据api发现源的配置信息,获取api发现源中的各个api的参考信息,并根据预设的api解析规则和各个api的参考信息,获取各个api的配置信息,从而实现周期性地获取api的配置信息,提高了api的获取效率。
42.一种可选的实施方式为,所述基于所述api的配置信息,确定所述api的标记信息,包括:
43.根据所述api的配置信息,确定所述api对应的标记类型;
44.根据确定出的所述api对应的标记类型,显示所述api对应的标记界面;
45.基于所述api对应的标记界面接收到的标记内容,确定所述api的标记信息。
46.第二方面,本申请实施例提供一种api管控装置,所述装置包括:
47.信息获取单元,用于获取数据源的配置信息;所述数据源包括服务发现源、api网关和api发现源中的至少一种;
48.信息确定单元,用于根据所述数据源的配置信息,获得所述数据源对应的api的配置信息,并根据所述api的配置信息,确定所述api的标记信息;
49.安全检测单元,用于基于所述数据源的配置信息和所述api的标记信息,对所述api进行安全检测,得到安全检测结果;
50.漏洞检测单元,用于基于所述数据源的配置信息,对所述api进行漏洞检测,得到漏洞检测结果;
51.告警通知单元,用于根据所述安全检测结果和所述漏洞检测结果,输出告警通知信息。
52.一种可选的实施方式为,所述安全检测单元具体用于:
53.根据所述数据源的配置信息,与所述数据源对应的系统建立连接,并从所述数据源对应的系统获取api日志文件;
54.根据所述api的标记信息,在所述api日志文件中查找待检测的api;
55.对所述待检测的api进行安全检测,得到所述待检测的api对应的安全检测结果。
56.一种可选的实施方式为,所述漏洞检测单元具体用于:
57.根据所述数据源的配置信息,与所述数据源对应的系统建立连接,并从所述数据源对应的系统获取api日志文件;
58.根据通过条件设置界面接收到的待检测的api的标识,从所述api日志文件中查找
待检测的api;
59.按照设定的检测条件,对所述待检测的api进行漏洞检测,得到所述待检测的api对应的漏洞检测结果;所述检测条件为通过所述条件设置界面接收到的检测条件。
60.一种可选的实施方式为,所述告警通知单元具体用于:
61.分别确定所述安全检测结果和所述漏洞检测结果对应的任务类型和任务名称;
62.基于所述任务类型和任务名称与所述告警通知信息的对应关系,输出所述告警通知信息。
63.一种可选的实施方式为,所述信息获取单元具体用于:
64.通过所述数据源对应的输入界面,接收输入的所述数据源的配置信息;
65.所述信息确定单元具体用于:
66.基于预设的获取周期,根据所述数据源的配置信息,获取所述数据源对应的各个服务器对应的配置信息;
67.根据所述各个服务器的配置信息,获得所述各个服务器对应的api的配置信息。
68.一种可选的实施方式为,所述数据源为所述服务发现源;所述信息确定单元具体用于:
69.每间隔预设的获取周期,根据所述服务发现源的配置信息,获取所述服务发现源中各个服务对应的配置信息;
70.根据所述各个服务对应的配置信息,确定所述各个服务对应的api的配置信息。
71.一种可选的实施方式为,所述数据源为所述api发现源;所述信息确定单元具体用于:
72.每间隔预设的获取周期,根据所述api发现源的配置信息,获取所述api发现源中各个api的参考信息;
73.根据预设的api解析规则和各个所述api的参考信息,获得各个所述api的配置信息。
74.一种可选的实施方式为,所述信息确定单元具体用于:
75.根据所述api的配置信息,确定所述api对应的标记类型;
76.根据确定出的所述api对应的标记类型,显示所述api对应的标记界面;
77.基于所述api对应的标记界面接收到的标记内容,确定所述api的标记信息。
78.第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,实现上述第一方面任一种的api管控方法。
79.第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面任一种的api管控方法。
80.第二方面至第四方面中任意一种实现方式所带来的技术效果可参见第一方面中对应的实现方式所带来的技术效果,此处不再赘述。
附图说明
81.为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
82.图1为本申请实施例提供的一种api管控方法的示意流程图;
83.图2为本申请实施例提供的一种api管控系统的示意结构图;
84.图3为本申请实施例提供的一种api发现源配置管理界面的示意图;
85.图4为本申请实施例提供的另一种api发现源配置管理界面的示意图;
86.图5为本申请实施例提供的另一种api发现源配置管理界面的示意图;
87.图6为本申请实施例提供的另一种api发现源配置管理界面的示意图;
88.图7为本申请实施例提供的一种api发现源列表展示界面的示意图;
89.图8为本申请实施例提供的一种服务发现源管理界面的示意图;
90.图9为本申请实施例提供的一种认证方式的示意图;
91.图10为本申请实施例提供的一种服务发现源列表管理界面的示意图;
92.图11为本申请实施例提供的一种api管理界面的示意图;
93.图12为本申请实施例提供的一种api网关列表管理界面的示意图;
94.图13为本申请实施例提供的一种扫描界面的示意图;
95.图14为本申请实施例提供的一种计划任务管理界面的示意图;
96.图15为本申请实施例提供的一种执行频率的示意图;
97.图16为本申请实施例提供的另一种计划任务管理界面的示意图;
98.图17为本申请实施例提供的一种api发现任务管理界面的示意图;
99.图18为本申请实施例提供的一种api搜集任务管理界面的示意图;
100.图19为本申请实施例提供的一种文件上传界面的示意图;
101.图20为本申请实施例提供的一种全平台服务标记界面的示意图;
102.图21为本申请实施例提供的一种api标记界面的示意图;
103.图22为本申请实施例提供的另一种api标记界面的示意图;
104.图23为本申请实施例提供的另一种api标记界面的示意图;
105.图24为本申请实施例提供的另一种api标记界面的示意图;
106.图25为本申请实施例提供的一种批量修改界面的示意图;
107.图26为本申请实施例提供的另一种批量修改界面的示意图;
108.图27为本申请实施例提供的另一种批量修改界面的示意图;
109.图28为本申请实施例提供的另一种批量修改界面的示意图;
110.图29为本申请实施例提供的一种敏感信息检测配置界面的示意图;
111.图30为本申请实施例提供的一种垂直越权检测设置界面的示意图;
112.图31为本申请实施例提供的另一种垂直越权检测设置界面的示意图;
113.图32为本申请实施例提供的一种测试账号管理界面的示意图;
114.图33为本申请实施例提供的一种逻辑乱序攻击检测条件设置界面的示意图;
115.图34为本申请实施例提供的一种异常参数攻击检测条件设置界面的示意图;
116.图35为本申请实施例提供的一种通知管理界面的示意图;
117.图36为本申请实施例提供的一种api管控装置的结构框图;
118.图37为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
119.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
120.需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
121.下面对文中出现的一些术语进行解释:
122.(1)api:应用程序编程接口(application programming interface)的缩写。是一些预先定义的接口(如函数、http接口等,本文所指的api为http接口),用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码、或理解内部工作机制的细节。
123.(2)数据标记管理:提供编辑数据信息以及根据指定条件查询的功能,主要包括:数据结构关联(比如为某个api关联所属网关、所属前端、适用环境及版本号等信息)、可用状态、安全标签(比如某个api是否包含敏感信息传入/传出,是否需要认证,是否需要进行网络隔离,等保定级、是否为“未公开接口”等)等等。
124.(3)api安全检测:对api从信息安全维度进行人工或自动化地分类、安全检测、安全监控及安全处置。
125.(4)系统“后门”:计算机行业通常意义上所说的“后门”泛指研发人员(包括所有可以接触到系统代码、服务器设备的开发、测试、运维等岗位)因某种原因有意或无意的,在系统中预留隐藏某些可以绕过安全性控制而获取对程序或系统访问权的方法。包括但不限于:隐藏的api(下文所述地“后门”api)、已公开api中的隐藏参数(下文所述地“后门”参数)、硬编码的隐藏口令/密码、测试阶段忘记删除的调试代码/脚本工具以及产品说明书上未提及的一切隐藏功能或隐藏的访问方式;这些被有意或无意制造出来的“后门”一旦被制造者或黑客伺机利用,可能给系统造成巨大损失。与“后门”api、“后门”参数相对应的,就是“已公开”api,“已公开”参数。
126.(5)服务发现源:对于可用性要求极高的业务系统,分布式服务架构往往会被广泛使用。而服务注册与发现则是在分布式服务架构中必然会涉及到的技术,业界目前常用的服务注册与服务发现工具有consul、zookeeper、etcd、eureka等。可以把这类工具作为一个“数据源”、即服务发现源,展开api服务搜集工作。
127.(6)api网关:两个相互独立的局域网之间通过路由器进行通信,中间的路由被称之为网关。任何一个应用系统如果需要被其他系统调用,就需要暴露api,这些api代表着一个一个的功能点。如果两个系统中间通信,在系统之间加上一个“中介者”协助api的调用,这个“中介者”就是api网关。随着”微服务“架构在互联网行业的普及,api网关逐渐成为软件系统中必不可少的组件之一。目前常见的、可以被用作api网关的装置有:nginx等。
128.(7)api发现源:伴随着互联网业务对开发时效性的提高,基于应用层协议的api接口被开发出来后、开发人员往往没有足够的时间编写api说明文档,也就无法始终保证api与说明书同步更新;不少厂商和组织针对这种痛点推出新的技术规范和框架,比如swagger、smart
‑
doc、doclever;只要开发人员按照相应规范编写代码,api说明文档就能自动被生成和展示。这种规范或框架技术在此文被成为“api发现源”。
129.(8)devops(development和operations的组合词):是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(qa)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(dev)”和“it运维技术人员(ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
130.(9)devsecops:是development、security和operations的组合词。随着devops体系日趋成熟,“传统的手工安全检测和漏洞修复流程”成为阻碍业务快速迭代发展的瓶颈之一。要想提速就意味着,从一开始就要考虑应用和基础架构的安全性;同时还要让某些安全治理功能尽量自动化,以防止devops工作流程变慢。
131.(10)断言:自动化检测方法/系统中,计算机要想自动判断执行某种设计(方法)后的结果是否符合人类的预期、就需要人类给定一个“期望结果”;这个“期望结果”就可以被理解为“断言”。
132.目前,现有的api管理集成了很多的通用功能、是一种通用的api管理方案,适用于尽量多的企业,对api进行管理。现有的api管理方案为人工获取api的相关信息,再根据api的相关信息对api进行管控,使得api的管控效率较低。
133.基于上述问题,如图1所示,本申请实施例提供一种api管控方法,包括以下步骤:
134.步骤s101、获取数据源的配置信息;数据源包括服务发现源、api网关和api发现源中的至少一种;
135.在一些实施例中,本申请实施例可通过数据源配置管理界面接收用户设置的数据源的配置信息。
136.具体实施中,本申请实施例通过服务发现源、api网关以及api发现源对应的数据源配置管理界面,接收服务发现源的配置信息、api网关的配置信息和api发现源的配置信息。
137.步骤s102、根据数据源的配置信息,获得数据源对应的api的配置信息,并根据api的配置信息,确定api的标记信息;
138.在一些实施例中,本申请实施例根据接收到的数据源的配置信息,与数据源对应的系统或服务器建立连接,确定数据源对应的api,进而获得数据源对应的api的配置信息。
139.在一些实施例中,本申请实施例基于确定出的api的配置信息,通过api标记界面,对api进行标记,并获得api的标记信息。
140.步骤s103、基于数据源的配置信息和api的标记信息,对api进行安全检测,得到安全检测结果;
141.在一些实施例中,本申请实施例基于数据源的配置信息,与数据源对应的系统建立连接,并从数据源对应的系统中获取api日志文件,根据api的标记信息,在api日志文件中查找到待检测的api后,对待检测的api进行安全检测,得到安全检测结果。
142.步骤s104、基于数据源的配置信息,对api进行漏洞检测,得到漏洞检测结果;
143.在一些实施例中,本申请实施例基于数据源的配置信息,与数据源对应的系统建立连接,并从数据源对应的系统中获取api日志文件;并根据通过条件设置界面接收到的待检测的api的标识,从api日志文件中查找到待检测的api后,对待检测的api进行漏洞检测,得到漏洞检测结果。
144.步骤s105、根据安全检测结果和漏洞检测结果,输出告警通知信息。
145.在一些实施例中,本申请实施例根据安全检测结果对应的业务类型和业务名称,确定与该安全检测结果对应的告警通知信息,并输出告警通知信息;根据漏洞检测结果对应的业务类型和业务名称,确定与该安全检测结果对应的告警通知信息,并输出告警通知信息。
146.本申请实施例通过获取数据源的配置信息,获得数据源对应的api的配置信息,并根据api的配置信息,确定api的标记信息;然后,基于数据源的配置信息和api的标记信息,对api进行安全检测,得到安全检测结果,以及基于数据源的配置信息,对api进行漏洞检测,得到漏洞检测结果;再根据得到的安全检测结果和漏洞检测结果,输出告警通知信息。由于本申请实施例根据获取到的数据源的配置信息,确定api的配置信息,进而确定api的标记信息,无需手动输入所有api的配置信息,从而提高了api的获取效率;再根据确定出的数据源的配置信息和api的标记信息,对api进行安全检测,以及根据数据源的配置信息对api进行漏洞检测,从而提高了api的管控效率。
147.在一些实施例中,如图2所示,本申请实施例还提供一种api管控系统,包括数据源配置管理模块201、数据搜集任务管理模块202、数据标记管理模块203、api安全检测模块204、api漏洞检测模块205和系统配置管理模块206;
148.其中,数据源配置管理模块201,用于获取数据源的配置信息;其中,数据源配置管理模块201包括:api发现源配置管理子模块、服务发现源配置管理子模块和api网关配置管理子模块;服务发现源配置管理子模块和api网关配置管理子模块属于同一架构,用于获取系统和api网关的信息;
149.数据搜集任务管理模块202,用于根据数据源的配置信息,获取数据源对应的api的配置信息;其中,数据搜集任务管理模块202包括:服务发现任务管理子模块和api发现任务管理子模块;
150.数据标记管理模块203,用于根据api的配置信息,获取api的标记信息;其中,数据标记管理模块203包括:微服务标记管理子模块和api标记管理子模块;
151.api安全检测模块204,用于基于数据源的配置信息和api的标记信息,对api进行安全检测;其中,api安全检测模块204包括:后门检测子模块、内外网检测子模块、敏感信息检测子模块和垂直越权检测子模块;
152.api漏洞检测模块205,用于基于数据源的配置信息,对api进行漏洞检测,得到漏洞检测结果;其中,api漏洞检测模块205包括:逻辑乱序攻击检测子模块和异常参数攻击检测子模块;
153.系统配置管理模块206,用于设置参数、测试账号、告警通知信息等信息;其中,系统配置管理模块206包括:参数配置管理子模块、通知配置管理子模块、测试账号配置管理子模块、日志管理子模块、告警管理子模块、用户管理子模块。
154.在一些实施例中,本申请实施例通过数据源配置管理模块获取数据源的配置信息;其中,数据源包括api发现源、api网关、服务发现源。
155.在一些实施例中,本申请实施例可基于数据源配置管理模块,通过数据源对应的输入界面,接收用户输入的数据源的配置信息。
156.需要说明的是,本申请实施例中不同的数据源对应不同的输入界面,且对应不同的数据源配置管理模块。
157.具体地,本申请实施例通过api发现源配置管理子模块获取api发现源的配置信息,通过服务发现源配置管理子模块获取服务发现源的配置信息,通过api网关配置管理子模块获取api网关的配置信息。
158.下面分别对上述三种获取数据源的配置信息的方法进行说明。
159.一、通过api发现源配置管理子模块获取api发现源的配置信息。
160.具体实施中,本申请实施例基于api发现源配置管理子模块,通过api发现源对应的输入界面,接收用户输入的api发现源的配置信息。
161.在一些实施例中,本申请实施例在基于api发现源配置管理子模块,通过api发现源对应的api发现源管理界面接收api发现源的配置信息后,通过api发现源配置管理子模块对接收到的api发现源的配置信息进行统一管理。
162.具体地,用户可基于api发现源配置管理子模块,通过api发现源对应的api发现源配置管理界面输入api发现源的配置信息,其中,api发现源的配置信息包括但不限于:api发现源类型(例如,api框架swagger、高吞吐量的分布式发布订阅消息系统kafka、文件浏览器es、服务器nginx等)、连接地址、所属环境(例如,生产环境、非生产环境等)、连接认证信息(例如,账号、密码、apikey、自定义请求头等)。
163.例如,如图3所示,用户可通过api发现源配置管理界面输入api发现源的配置信息,包括:api发现源类型、基线数据、api发现源名称、描述、认证方式。其中,认证方式包括账号密码、无认证、apikey、自定义请求头中的任一种方式。
164.用户可通过点击api发现源配置管理界面中的api发现源类型的区域选择需要录入的api发现源的类型,其中,可选择的api发现源的类型包括但不限于swagger、kafka、es、nginx、elk、mindoc、功能自动化平台、人工上传。
165.具体地,在用户选择的api发现源类型为swagger时,api发现源配置管理界面的界面信息转化为如图4所示的api发现源配置管理界面,增加了环境类型、http请求方式、swagger api地址、请求头和请求体等信息录入区域。
166.在一些实施例中,当本申请实施例通过认证方式的区域选择账号密码的认证方式后,如图5所示,本申请实施例在api发现源配置管理界面中的认证方式的区域下方,增加输入认证账号和认证密码的区域,用户可通过增加的认证区域输入账号和密码进行认证。
167.在一些实施例中,如图6所示,当用户选择的api发现源的类型为kafka时,需要提供kafka version、zk host、zk port、chroot path、bootstrap servers、offset topic等信息,与kafka连接,以获取api的配置信息。
168.在一些实施例中,本申请录入的api发现源的配置信息统一被api发现源管理子模块进行管理。如图7所示,本申请通过提供api发现源列表展示界面,进行统一展示和管理接收到的api发现源。
169.二、通过服务发现源配置管理子模块获取服务发现源的配置信息。
170.本申请实施例基于服务发现源配置管理子模块,通过服务发现源对应的输入界面,接收用户输入的服务发现源的配置信息。
171.具体实施中,本申请实施例基于服务发现源配置管理子模块,通过服务发现源对应的服务发现源管理界面接收服务发现源的配置信息后,通过服务发现源配置管理子模块对接收到的服务发现源的配置信息进行统一管理。
172.在一些实施例中,本申请实施例可直接通过服务发现源管理界面获取用户录入的服务发现源的配置信息。
173.例如,如图8所示,用户可通过服务发现源管理界面录入新增加的服务发现源的配置信息,包括:服务发现源的自定义名称,服务发现源的类型(例如,consul、gravitee、sonar等)、域名、url配置(例如,http://172.16.25.17:8600)、认证方式、服务类型、环境类型。
174.需要说明的是,本申请实施例中的认证方式包括并不限于账号密码、apikey、自定义请求头。例如,当用户在图8服务发现源管理界面中选取认证方式时,如图9所示,认证方式区域会根据选择的认证方式不同发生不同的变化;选取账号密码时,认证方式区域下方会出现认证账号和认证密码的隐藏框;选取apikey时,会出现apikey的隐藏框;选取自定义请求头时,会出现自定义请求头的隐藏框。
175.在另一些实施例中,本申请实施例可通过服务发现源配置管理模块接收录入的新增的服务发现源的类型、以及服务器的ip地址,并根据接收到的服务发现源的基本信息,对服务发现源的服务器进行扫描,从而确定服务器中的服务发现源,并获取扫描到的服务发现源的配置信息。
176.在一些实施例中,服务发现源配置管理子模块在接收到新增的服务发现源的配置信息后,对配置信息进行联合验重,校验文本类控件的合法性以及确定接口参数是否非法,得到服务发现源信息表,对增加的服务发现源进行统一管理。
177.例如,如图10所示,本申请实施例中的服务发现源配置管理模块将获取到的服务发现源的配置信息整理成列表在服务发现源列表管理界面中,对增加的服务发现源进行统一展示和管理。
178.三、通过api网关配置管理子模块获取api网关的配置信息。
179.具体实施中,本申请实施例基于api网关配置管理子模块,通过api网关对应的输入界面,接收用户输入的api网关的配置信息。
180.在一些实施例中,本申请实施例在基于api网关配置管理子模块,通过api网关对应的api网关管理界面接收api网关的配置信息后,通过api网关配置管理子模块对接收到的api网关的配置信息进行统一管理。
181.在一些实施例中,本申请实施例可通过api网关管理界面接收新增的api网关的配置信息。
182.需要说明的是,api的网关信息包括但不限于:网关类型(例如,nginx、kong、zuul、ambassador、traefik等)、环境类型(例如,生产环境、非生产环境等)、网关名称、网关地址、访问控制。
183.例如,如图11所示,用户可通过api管理界面录入新增的api网关的配置信息,输入
api网关的网关类型、环境类型、网关名称、网关地址、访问控制等api网关的配置信息。
184.在一些实施例中,本申请实施例中的api网关配置管理模块在接收到用户录入的api网关的配置信息后,对获取到的配置信息进行处理,得到api网关信息表,对增加的api进行的统一管理。
185.例如,如图12所示,本申请实施例中的api网关配置管理子模块将获取到的api网关的配置信息整理成列表在api网关列表管理界面中,对增加的api网关进行统一展示和管理。如图13所示,用户可通过点击api网关列表管理界面中的操作栏区域的扫描区域,可通过第三方工具对新增的api网关进行扫描,获得api网关的配置信息。
186.需要说明的是,本申请实施例中的第三方工具支持常见第三方商业/开源工具,实现devsecops流水化开发,帮助企业大幅缩短安全检测周期、进而提升研发效率;目前可以对接的有:安全检测类工具(如长亭x
‑
ray扫描引擎,sqlmap,peach等)和jenkins ci/cd工具。其中,安全检测类工具将搜集发现的待检测的api按照api标记信息进行分类后,可执行api安全检测任务和api漏洞检测任务;jenkins ci/cd工具可帮助企业更快速、更低成本地实现devops到devsecops的转型。
187.本申请实施例在获取到数据源的配置信息后,根据数据源的配置信息,获取数据源对应的api的配置信息。
188.在一些实施例中,本申请实施例根据数据源配置管理模块获取到数据源的配置信息,通过数据搜集任务管理模块,获取数据源对应的api的配置信息。
189.具体实施中,本申请实施例通过数据搜集任务管理模块对数据源配置管理模块设置定时获取任务,使数据搜集任务管理模块基于设定的获取周期,获取数据源对应的api的配置信息。
190.在一些实施例中,数据搜集任务管理模块基于预设的获取周期,根据数据源的配置信息,获取数据源的对应的各个服务器对应的配置信息;并根据获取到的各个服务器的配置信息,获得各个服务器对应的api的配置信息。
191.在一些实施例中,当数据源为服务发现源时,本申请实施例可根据下列方式获取服务发现源对应的api的配置信息。
192.具体实施中,数据搜集任务管理模块中的服务发现任务管理子模块通过对服务发现源配置管理子模块设置定时获取任务,使得服务发现任务管理子模块每间隔预设的获取周期,根据服务发现源的配置信息,获取服务发现源中各个服务对应的配置信息;根据各个服务对应的配置信息,确定各个服务对应的api的配置信息。
193.在一些实施例中,本申请实施例基于服务发现任务管理子模块,通过服务发现源对应的计划任务管理界面,预先设定数据源对应的获取周期,建立获取服务发现源对应的api的配置信息的任务。
194.例如,如图14所示,用户通过计划任务管理界面设定服务发现源对应的获取周期,其中,任务描述为选填项,当用户选取的执行频率为“执行1次”时,用户可直接选取任务开始时间;当用户选取的执行频率为“循环执行”时,如图15所示,用户输入执行间隔的小时数,且输入的数值应在[1,24]之内。
[0195]
在一些实施例中,本申请实施例在基于服务发现任务管理子模块设定服务发现源对应的获取周期后,并建立获取服务发现源对应的api的配置信息的任务后,将建立的获取
任务整理为相应的展示列表在计划任务管理界面中由服务发现任务管理子模块进行统一展示和管理。
[0196]
例如,如图16所示,用户可通过计划任务管理界面中的服务发现源类型、任务名称、服务类型和环境类型查询已建立的获取任务中与之对应的获取任务;在获取任务的展示列表中的执行结果一栏中,用户可通过点击“执行结果”查看历史获取任务的执行情况和执行结果,其中,执行结果包括0:成功、1:未执行、2:执行中和3:执行失败四种情况。状态栏为展示图标,不可点击改变状态。操作栏中的“启用/停用”:“启用”状态下,“启用”置灰,“停用”状态下,“停用”置灰;若获取任务的执行频率设定为0,则启动后一直是“启用”状态;若获取任务的执行频率设定为1,完成后置灰,再次点击“启用”后,立即再次启动该获取任务;用户可通过点击操作栏的编辑图标,进入获取任务的编辑页,修改响应数据,且编辑图标在获取任务的启用状态下置灰,只有在获取任务为停用状态时,才能够使用,修改响应数据;用户可通过点击操作栏中的删除图标,校验获取任务的生效状态,若获取任务处于生效状态,不予以删除,若获取任务未处于生效状态,删除该获取任务,并在删除成功后,进行提示。用户可通过点击计划人物名查看任务详情,且任务详情界面提供编辑按钮,可跳转至编辑界面,使用户对获取任务进行修改。
[0197]
在另一些实施例中,当数据源为api发现源时,本申请实施例可根据下列方式获取api发现源对应的api的配置信息。
[0198]
具体实施中,api发现任务管理子模块通过对api发现源配置管理子模块设置定时获取任务,使得api发现任务管理子模块每间隔预设的获取周期,根据api发现源的配置信息,获取api发现源中各个api的参考信息;根据预设的api解析规则和各个api的参考信息,获得各个api的配置信息。
[0199]
在一些实施例中,本申请实施例可基于api发现任务管理子模块,根据api发现源对应的计划任务管理界面,预先设定api发现源对应的获取周期,建立获取api发现源对应的api的配置信息的任务。
[0200]
例如,如图17所示,用户通过api发现任务管理界面设定api发现源对应的获取周期,建立获取api发现源对应的api配置信息的任务。
[0201]
在一些实施例中,本申请实施例根据建立的获取任务,按照预设的获取周期,获取api发现源中各个api的参考信息;根据预先设定的解析规则,对获取到的api的参考信息进行清洗整理,获得api的配置信息。
[0202]
在一些实施例中,本申请实施例在设定api发现源对应的获取周期,并建立获取api发现源对应的api的配置信息的任务后,将建立的获取任务整理为相应的展示列表在api搜集任务管理界面中由api发现任务管理子模块进行统一展示和管理。
[0203]
例如,如图18所示,用户可通过api搜集任务管理界面中的api发现源类型、任务名称、执行频率查询已建立的获取任务中与之对应的获取任务;用户可通过点击一键同步根据在api发现源类型、任务名称、执行频率的输入框中填写的相关信息,生成一次性任务,并开始执行,若生成的任务与任务列表中已有的任务相同或冲突,则立即启动任务列表中的已有任务。
[0204]
在一些实施例中,本申请实施例在获取api的配置信息的同时,获取api发现源的响应码和响应参数,并根据获取到的响应码和响应参数,确定api发现源的运行状态,并记
录api发现源中api的变动。
[0205]
在另一些实施例中,本申请实施例中的数据源为api网关时,用户可通过第三方扫描工具对api网关进行扫描,获取api网关对应的api的配置信息。
[0206]
在一些实施例中,本申请实施例在数据搜集任务管理模块获取到数据源对应的api的配置信息后将数据源配置管理模块和数据搜集任务管理模块获取到的数据源的配置信息和api的配置信息存储于源数据持久化存储装置,并定时获取数据源和api的配置信息,更新源数据持久化存储装置。
[0207]
需要说明的是,本申请实施例中存储于源数据持久化存储装置的配置信息包括但不限于:url,http请求体,http方法,是否restful,是否“后门”,是否对公网公开。
[0208]
在另一种实施例中,本申请实施例还可通过文件导入api的方法,获取api的配置信息,帮助用户快速将传统api管理工具(postman、burpsuite等)中的api信息导入源数据持久化存储装置中。
[0209]
需要说明的是,本申请实施例支持的文件格式为符合postman或burpsuite要求的文件格式。
[0210]
例如,如图19所示,用户可通过文件上传界面上传符合postman或burpsuite要求的文件,用户在上传文件日志后,根据上传文件类型对文件进行解析,确定api的配置信息;例如,上传的文件wie网关接口日志时,触发后台解析功能对网关接口日志进行解析,确定网关接口对应的api的配置信息。且本申请实施例不保存上传的原始文件,只保存文件的解析结果,或用户手动修正之后的结果。
[0211]
在一些实施例中,本申请实施例在通过数据搜集任务管理模块获取api的配置信息后,通过数据标记管理模块根据api的配置信息,确定api对应的标记类型;数据标记管理模块根据确定出的api对应的标记类型,显示api对应的标记界面;然后,数据标记管理模块基于api对应的标记界面接收到的标记内容,确定api的标记信息。
[0212]
在一些实施例中,数据标记管理模块从源数据持久化存储装置中,获取api的配置信息,根据获取到的配置信息,确定api的标记类型,根据确定出的api对应的标记类型,显示api对应的标记界面。
[0213]
在一些实施例中,本申请实施例中的数据标记管理模块根据api的配置信息,确定api为服务发现源对应的api,确定api的标记类型为服务标记类型后,通过数据标记管理模块中的微服务标记管理子模块对api进行标记管理。
[0214]
具体实施中,微服务标记管理子模块可根据api对应的服务标记类型,显示api对应的全平台服务标记界面,对服务发现源中每个独立的服务进行标记,通过对服务进行标记,实现自动对该服务下的所有api进行标记管理。
[0215]
在一些实施例中,本申请实施例通过微服务标记管理子模块,接收用户在全平台服务标记界面输入的标记内容,根据接收到的标记内容,确定服务下的api的标记信息。
[0216]
在一些实施例中,微服务标记管理子模块根据服务发现源的类型,标记服务发现源的服务类型、环境类型、服务等级、应属网关等,并且可划分机组ip或者版本号,并且还可对服务发现源的访问控制进行标记;根据对服务发现源的标记内容,自动确定服务发现源对应的api的标记信息。
[0217]
例如,如图20所示,用户可通过全平台服务标记界面,确定api对应的服务发现源
类型、服务名和服务类型,其中,中心名不是必填项;在确定api对应的服务后,基于全平台服务标记界面对确定出的服务对应的所有api进行标记,其中,标记信息包括但不限于:环境类型、服务等级、应属网关、访问控制。
[0218]
在另一些实施例中,本申请实施例中的数据标记管理模块根据api的配置信息,确定api为api发现源对应的api,确定api的标记类型为api标记类型后,通过数据标记管理模块中的api标记管理子模块对api进行标记。
[0219]
具体实施中,api标记管理子模块可根据api对应的api标记类型,显示api对应的api标记界面,基于api对应的api标记界面接收到的标记内容,确定api的标记信息。
[0220]
具体地,api标记管理子模块在对api进行标记管理时,可手动标记管理api发现源,控制api应有的访问权限以及安全问题,并支持单个标记或者批量标记,减少实际使用中的api滥用的问题。
[0221]
在一些实施例中,api标记管理子模块可通过api标记界面单独为每个api进行标记,接收用户输入的标记内容,确定api的标记信息;或者,api标记管理子模块通过批量修改界面批量为api进行标记,接收用户输入的标记内容和选取的api,根据接收到的标记内容确定api的标记信息。
[0222]
例如,如图21所示,用户可通过api标记界面对api进行单独标记,其中,标记信息包括但不限于:应属网关、应有的访问控制权限、中心名、服务名、是否restful
‑
动态url形式、http请求方法、path、用途标注、风险等级、敏感数据传入/传出标注、生产环境、横向越权、纵向越权、基线数据、请求体数据管理。如图22所示,用户在修改api的标记信息后,点击完成时,api标记界面中会出现确认修改的提示框提示用户的修改内容。用户可通过点击api标记界面中的生产环境是否在用的区域,检测api对应的生产环境是否在用,并在api标记界面中显示检测结果,若生产环境未在用,则如图23所示,在api标记界面中显示“生产环境未在用”的提示信息;若生产环境在用中,则如图24所示,在api标记界面中显示“生产环境在用中”的提示信息。
[0223]
再例如,如图25所示,用户可通过批量修改界面,对api进行批量标记;用户通过选择所属前端确定需要批量标记的api,对api进行批量标记;其中,标记信息包括但不限于:应属网关、应有的访问控制权限、中心名、是否restful
‑
动态url形式、用途标注、风险等级、横向越权、纵向越权、基线数据;批量标记界面中的修改参数均为选填项;当用户点击确认修改后,如图26所示,在批量修改界面中显示确认修改的提示信息;当用户点击提示信息中的确认修改后,若修改成功,如图27所示,在批量修改界面中显示修改成功的提示信息;若修改失败,如图28所示,在批量修改界面中显示修改失败的提示信息。
[0224]
在一些实施例中,本申请实施例在通过数据标记管理模块确定api的标记信息后,将获取到的api的标记信息存储于标记数据持久化存储装置,为api安全检测模块和api漏洞检测模块提供数据依据。
[0225]
需要说明的是,本申请实施例从源数据持久化存储装置中获取到的数据源的配置信息,也存储于标记数据持久化存储装置中。
[0226]
在一些实施例中,api安全检测模块从标记数据持久化存储装置中获取数据源的配置信息和api的标记信息,对api进行安全检测,得到安全检测结果。
[0227]
具体实施中,api安全检测模块根据数据源的配置信息,与数据源对应的系统建立
连接,并从数据源对应的系统获取api日志文件;根据api的标记信息,在api日志文件中查找待检测的api,对待检测的api进行安全检测,得到待检测的api对应的安全检测结果。
[0228]
在一些实施例中,本申请实施例通过api安全检测模块对待检测的api进行的安全检测包括但不限于:后门检测、敏感信息检测、垂直越权检测、内外网检测。
[0229]
具体地,本申请实施例通过后门检测子模块对待检测的api进行后门检测,通过内外网检测子模块对待检测的api进行内外网检测,通过敏感信息检测子模块对待检测的api进行敏感信息检测,通过垂直越权检测子模块对待检测的api进行垂直越权检测。
[0230]
需要说明的是,api安全检测模块中的后门检测子模块、内外网检测子模块、敏感信息检测子模块和垂直越权检测子模块之间相互独立,互不影响。
[0231]
下面分别针对上述四种安全检测方式对待检测的api的安全检测过程进行说明。
[0232]
安全检测方式1、敏感信息检测。
[0233]
具体实施中,本申请实施例通过敏感信息检测子模块对待检测的api进行敏感信息检测。
[0234]
在一些实施例中,本申请实施例确定待检测的api在设定时间段的调用次数,若确定待检测的api对应的安全检测结果未达到告警次数,则确定待检测的api对应的安全检测结果为检测通过;或者,若待检测的api的调用次数达到告警次数,则确定待检测的api对应的安全检测结果为存在安全风险。
[0235]
需要说明的是,本申请实施例中的待检测的api的标记信息包括敏感信息。
[0236]
具体实施中,本申请实施例在确定待检测的api对应的安全检测结果为存在安全风险后,触发告警通知,通知用户对安全风险进行处理。
[0237]
需要说明的是,本申请实施例中的敏感信息检测并不能在初次使用时完成对待检测的api的敏感信息检测,并实现告警通知,敏感信息检测的实现需要基于一定的历史数据。例如,敏感信息检测子模块在运行一天后,才能够生效,实现对待检测的api的安全检测。
[0238]
具体实施中,本申请实施例根据通过获取待检测的api的标记信息,根据待检测的api的敏感标记,建立敏感信息api监控矩阵,记录符合敏感标记的待检测的api的调用次数。
[0239]
需要说明的是,本申请实施例中的记录粒度为小时,且历史汇总维度为当天调用次数,本周调用次数和本月调用次数。
[0240]
在一些实施例中,本申请实施例基于待检测的api的敏感信息,确定待检测的api对应的敏感参数,并针对确定出的各个敏感参数,分别执行如下操作:
[0241]
本申请实施例从待检测的api中确定包含敏感参数的各个目标api,并根据各个目标api在设定时间段的调用次数,确定敏感参数在设定时间段的调用次数。
[0242]
在一些实施例中,本申请实施例将敏感参数的调用次数与告警次数进行比较,根据比较结果确定敏感参数对应的安全检测结果;若敏感参数的调用次数未达到告警次数,则确定敏感参数对应的安全检测结果为检测通过;或者,若敏感参数的调用次数达到告警次数,则确定敏感参数对应的安全检测结果为存在安全风险。
[0243]
具体实施中,本申请实施例在确定待检测的api对应的安全检测结果为存在安全风险后,触发告警通知,通知用户对安全风险进行处理。
[0244]
需要说明的是,本申请实施例中的安全检测结果为存在安全风险时,是表示待检测的api存在调用异常的现象,即表示待检测的api存在敏感信息泄露的风险。
[0245]
在一些实施例中,本申请实施例可通过可视化界面设置告警配置,告警配置包括以下至少一种配置:
[0246]
1)m周期内,待检测的api的调用次数超过历史同期平均调用次数n%,触发告警通知。
[0247]
2)当前小时(或天)内,待检测的api的调用次数超过历史某个小时(或天)调用次数的最大值,触发告警通知。
[0248]
3)m周期内,敏感参数的调用次数超过历史同期平均调用次数n%,触发告警通知。
[0249]
4)当前小时(或天)内,敏感参数的调用次数超过历史某个小时(或天)调用次数的最大值,触发告警通知。
[0250]
例如,如图29所示,用户可通过敏感信息检测配置界面从已配置的数据源信息中选取需要进行敏感检测的服务发现源,api网关和api发现源;并根据api的标记信息选取包含敏感信息的api作为待检测的api;用户可通过统计频率模块设置统计待检测的api的调用次数,其中,汇总维度默认为:当天调用次数、本周调用次数和本月调用次数;并且,用户可通过告警配置模块设置敏感检测的告警配置,且告警配置区域模块为非必填项,当告警配置区域模块为空时,则不统计待检测的api在设置的时间范围内的调用次数;并且,用户可通过敏感参数设置模块设置待检测的敏感参数,通过点击参数设置模块的“加号”区域,增加敏感参数设置模块,实现对同一个api下的多个参数告警统计配置;另外,用户还可通过设置生成可视化统计图实现在显示界面中增加一张可视化的统计图,若将生成可视化统计图设置为“否”时,只新增一条监控数据,不在显示界面中进行显示。
[0251]
安全检测方式2、后门检测。
[0252]
具体实施中,本申请实施例通过后门检测子模块对待检测的api进行后门检测。
[0253]
在一些实施例中,本申请实施例通过获取api的配置信息,确定已公开的api,并将待检测的api与已公开的api进行匹配,若匹配成功,则确定待检测的api对应的安全检测结果为检测通过,表示待检测的api为已公开的api;若匹配失败,则确定待检测的api对应的安全检测结果为存在安全风险。
[0254]
具体实施中,本申请实施例中的待检测的api与已公开的api匹配失败,表示待检测的api可能为以下几种情形:
[0255]
(1)待检测的api是业务必须的正常功能,但研发人员未按照指定方式公开或上报该待检测的api;系统可自动告知开发人员及时公开其说明文档完成上报,将待检测的api的配置信息修改为已公开。
[0256]
(2)待检测的api是为了方便测试使用的功能,系统上线前并未作废;系统可直接将该待检测的api当做后门处理。
[0257]
(3)待检测的api为研发人员预留的后门。
[0258]
安全检测方式3、内外网检测。
[0259]
具体实施中,本申请实施例通过内外网检测子模块对待检测的api进行内外网检测。
[0260]
实施中,本申请实施例根据数据源的配置信息,确定系统对应的网关;并根据待检
测的api的标记信息,获得待检测的api对应的网关信息,进而确定待检测的api对应的网关。
[0261]
具体实施中,本申请实施例根据预设的网络协议,生成待检测的api对应的模拟请求消息。
[0262]
需要说明的是,本申请实施例中的模拟请求消息为根据预设的网络协议,模拟用户在网页上点击待检测的api后,待检测的api生成的请求消息。
[0263]
在一些实施例中,本申请实施例在生成待检测的api对应的模拟请求消息后,调用待检测的api,向除待检测的api对应的网关之外的系统对应的其他网关发送模拟请求消息,并获得其他网关返回的响应信息。
[0264]
在一些实施例中,本申请实施例若确定接收到的相应信息与第一预设断言一致,则确定待检测的api对应的安全检测结果为检测通过,表示待检测的api不存在内外网隔离失败。
[0265]
在另一些实施例中,本申请实施例若确定接收到的相应信息与第一预设断言不一致,则确定待检测的api对应的安全检测结果为存在安全风险,表示待检测的api存在内外网隔离失败。
[0266]
安全检测方式4、垂直越权检测。
[0267]
具体实施中,本申请实施例通过垂直越权检测子模块对待检测的api进行垂直越权检测。
[0268]
在一些实施例中,本申请实施例根据预设的测试账号管理信息,获取第一测试账号和第二测试账号。
[0269]
需要说明的是,本申请实施例中的第一测试账号的权限高于第二测试账号的权限。
[0270]
在一些实施例中,本申请实施例根据数据源的配置信息,确定待检测的api对应的待检测的服务器;并根据预设的网络协议,生成待检测的api对应的模拟请求消息。
[0271]
具体实施中,本申请实施例在生成模拟请求消息后,通过待检测的api,分别使用第一测试账号和第二测试账号待检测的服务器发送模拟请求消息,并接收待检测的服务器返回的第一响应信息和第二响应信息。
[0272]
需要说明的是,第一响应消息为待测试的服务器接收使用第一测试账号发送模拟请求消息后返回的响应消息;第二响应消息为待测试的服务器接收使用第二测试账号发送模拟请求消息后返回的响应消息。
[0273]
本申请实施例根据待检测的api的标记信息,确定待检测的api的http方法、应属网关、url路径、请求体等基本信息;并基于待检测的api的基本信息,确定ua、ub两个账号的http协议的登录的api信息。系统登录账号后自动生成ua和ub的会话标识,分别记为ca、cb。
[0274]
在一些实施例中,本申请实施例根据预设的网络协议http协议,生成待检测的api对应的模拟请求消息,并分别通过ua和ub,调用待检测的api向待检测的服务器发送模拟请求消息,接收到待检测的服务器返回的两个响应ra和rb。
[0275]
在一些实施例中,本申请实施例根据第一响应信息、第二响应信息和第二预设断言确定待检测的api的安全检测结果。
[0276]
具体实施中,若第一响应信息、第二响应信息和第二预设断言为第一关系,则确定
待检测的api对应的安全检测结果为检测通过。
[0277]
需要说明的是,第一关系为第一响应信息与第二响应信息不一致,以及第一响应信息和第二响应信息中不包含第二预设断言。
[0278]
在另一些实施例中,若第一响应信息、第二响应信息和第二预设断言为除第一关系之外的其他关系,则确定待检测的api对应的安全检测结果为存在安全风险。
[0279]
在一些实施例中,本申请实施例中第一响应信息、第二响应信息和第二预设断言之间的关系包括但不限于以下几种:
[0280]
(1)ra和rb不一样,且ra和rb均不包括第二预设断言,表示待检测的api不存在垂直越权的问题。
[0281]
(2)ra和rb不一样,且ra或rb包括第二预设断言,表示待检测的api存在垂直越权的问题。
[0282]
(3)ra和rb一样,且ra和rb均不包括第二预设断言,表示无法确定待检测的api是否存在垂直越权的问题,因此触发疑似告警。
[0283]
(4)ra和rb一样,且ra或rb包括第二预设断言,表示待检测的api存在垂直越权的问题。
[0284]
(5)其他情况、记录功能异常,触发疑似告警。
[0285]
例如,如图30所示,用户通过垂直越权检测设置界面中的预置请求数据的子界面设置需要进行检测的服务发现源名称、api网关名称、api发现源名称、服务名称、以及进行测试的账号1和账号2,其中,账号1为超管账号ua,账号2为空权限账号ub,服务发现源、api网关、api发现源和服务从已配置的服务发现源数据、api网关数据、api发现源数据以及api服务数据中选取。如图31所示,用户在完成预置请求数据的设置后,通过点击下一步进入预置结果参数的子界面中,设置结果参数,包括账号1对应的响应结果1ra,账号2对应的响应结果2rb,响应断言,以及响应结果与响应断言的比对配置以及处理设置;其中,用户可设置多个响应断言以及多种比对配置和处理配置。
[0286]
在一些实施例中,本申请实施例在对待检测的api进行垂直越权检测之前,还需要通过系统配置管理模块中的测试账号配置管理子模块预先设置测试账号管理信息。
[0287]
具体实施中,用户可通过测试账号配置管理子模块对应的测试账号管理界面预先设置测试账号管理信息。
[0288]
例如,如图32所示,用户通过测试账号管理界面设置测试账号的管理信息,其中,测试账号的管理信息包括但不限于:所述前端、角色等级、用户名、手机号、登录密码、员工姓名、所属组织、所属岗位、工号。其中,所属前端表示账号对应的系统;角色等级用于标识账号的大致权限范围,比如超管、高权限、中权限、低权限、空权限等。
[0289]
在一些实施例中,本申请实施例在通过api安全检测模块对待检测的api进行安全检测后,将得到的安全检测结果存储于安全治理数据持久化存储装置中。
[0290]
在一些实施例中,本申请实施例通过api漏洞检测模块从标记数据持久化存储装置中获取数据源的配置信息,对api进行漏洞检测,得到漏洞检测结果。
[0291]
具体实施中,api漏洞检测模块根据获取到的数据源的配置信息,与数据源对应的系统建立连接,并从数据源对应的系统获取api日志文件;根据通过条件设置界面接收到的待检测的api的标识,从api日志文件中查找待检测的api;按照设定的检测条件,对待检测
的api进行漏洞检测,得到待检测的api对应的漏洞检测结果。
[0292]
需要说明的是,检测条件为通过api漏洞检测模块对应的条件设置界面接收到的检测条件。
[0293]
在一些实施例中,本申请实施例通过api漏洞检测模块对待检测的api进行的漏洞检测包括但不限于:逻辑乱序攻击检测、异常参数攻击检测。
[0294]
具体地,本申请实施例通过逻辑乱序攻击检测子模块对待检测的api进行逻辑乱序攻击检测,通过异常参数攻击检测子模块对待检测的api进行异常参数攻击检测。
[0295]
需要说明的是,api漏洞检测模块中的异常参数攻击检测子模块、逻辑乱序攻击检测子模块之间相互独立,互不影响。
[0296]
在一些实施例中,本申请实施例中的异常参数攻击检测子模块和逻辑乱序攻击检测子模块对应的检测条件并不相同。
[0297]
具体实施中,api漏洞检测模块根据设定的检测条件对待检测的api进行相应的漏洞检测。下面根据不同的检测条件分别对待检测的api进行漏洞检测的过程进行说明。
[0298]
条件1、检测条件包括检测引擎的标识、与待检测的api对应的前置api的标识、回溯时长和回溯配对。
[0299]
需要说明的是,api日志文件中包括各个业务执行过程中调用的标识及对应的调用时间;回溯配对是指在回溯时长内,api日志文件中待检测的api的数量与前置api的数量相同。
[0300]
具体实施中,本申请实施例根据上述条件1对待检测的api进行的漏洞检测为逻辑乱序攻击检测。
[0301]
实施中,本申请实施例通过逻辑乱序攻击检测子模块对待检测的api进行逻辑乱序攻击检测。
[0302]
在一些实施例中,本申请实施例在用户在逻辑乱序攻击检测子模块对应的条件设置界面中设定检测条件后,通过设定的检测引擎的标识对应的目标检测引擎,并根据待检测的api对应的前置api的标识,在api日志文件中,查找目标时间之前的回溯时长内是否存在待检测的api对应的前置api,并根据查找结果,确定待检测的api对应的漏洞检测结果。
[0303]
需要说明的是,本申请实施例中的目标时间为待检测的api对应的调用时间。
[0304]
在一些实施例中,本申请实施例在api日志文件中,查找到目标时间之前的回溯时长内存在待检测的api对应的前置api,则确定待检测的api对应的漏洞检测结果为检测通过。
[0305]
在另一些实施例中,本申请实施例在api日志文件中,未查找到目标时间之前的回溯时长内存在待检测的api对应的前置api,则确定待检测的api对应的漏洞检测结果为存在漏洞风险。
[0306]
具体实施中,本申请实施例在确定待检测的api对应的漏洞检测结果为存在漏洞风险时,触发告警通知。
[0307]
例如,如图33所示,用户可通过逻辑乱序攻击检测条件设置界面,设置需要进行逻辑乱序攻击检测的待检测的api,以及与待检测的api对应的前置api,设置进行逻辑乱序攻击检测时所使用的检测引擎的名称、回溯时长,以及回溯配对;根据用户预先设置的检测条件,对待检测的api进行检测,即在api日志文件中查找待检测的api对应的调用时间之前的
回溯时长内是否存在前置api,并根据查找结果,确定待检测的api对应的漏洞检测结果。
[0308]
在一些实施例中,本申请实施例根据检测条件中的回溯配对的设置不同,对待检测的api进行不同的检测。
[0309]
在一些实施例中,本申请中的检测条件中的回溯配对被设置为“否”时,本申请实施例在对待检测的api进行漏洞检测时,通过在api日志文件中查找在目标时间之前的回溯时长内是否存在前置api,确定待检测的api的漏洞检测结果。
[0310]
在另一些实施例中,本申请实施例在用户在条件设置界面中设定检测条件回溯配对为“是”后,对待检测的api进行漏洞检测时,通过在api日志文件中查找目标时间之前的回溯时长内的前置api的数量是否满足回溯配对的条件,确定待检测的api对应的漏洞检测结果。
[0311]
具体实施中,本申请实施例在api日志文件中,待检测的api的调用时间之前的回溯时长内,是否存在前置api;若存在前置api,则确定前置api的数量是否满足回溯配对的要求;若满足回溯配对的要求,则确定待检测的api的漏洞检测结果为检测通过。
[0312]
条件2、检测条件包括:检测引擎的标识、待检测参数及对应的正常值范围、第一预设阈值。
[0313]
具体实施中,本申请实施例根据上述条件2对待检测的api进行的漏洞检测为异常参数攻击检测。
[0314]
实施中,本申请实施例通过异常参数攻击检测子模块对待检测的api进行异常参数攻击检测。
[0315]
在一些实施例中,本申请实施例在用户在异常参数攻击检测子模块对应的条件设置界面设置检测条件后,根据接收到的检测条件中设定的待检测参数,确定在api日志文件中,与待检测的api对应的待检测参数的参数信息,并将确定出的待检测参数的参数信息与待检测参数对应的正常值范围进行比对,根据比对结果确定待检测的api对应的漏洞检测结果。
[0316]
例如,如图34所示,用户可通过异常参数攻击检测条件设置界面设定检测条件,包括设定检测引擎名称、待检测的api、待检测参数、待检测参数的相关信息的正常值范围以及告警阈值次数。本申请实施例根据设定的检测条件,对待检测的api对应的检测参数进行异常参数攻击检测,根据待检测参数的参数信息与待检测参数对应的参数信息的正常值范围的比对结果,确定待检测的api的异常参数攻击检测结果。
[0317]
在一些实施例中,本申请实施例根据检测条件中的告警阈值次数的设置不同,对待检测的api进行不同的检测。
[0318]
在一些实施例中,本申请中的检测条件中的告警阈值次数被设置为“否”时,本申请实施例在对待检测的api进行漏洞检测时,将待检测参数的参数信息与待检测参数对应的正常值范围进行比对,根据比对结果确定待检测的api的漏洞检测结果。
[0319]
具体实施中,本申请实施例中的待检测参数的参数信息处于待检测参数对应的正常值范围之内,确定待检测的api的漏洞检测结果为检测通过。或者,本申请实施例中的待检测参数的参数信息处于待检测参数对应的正常值范围之外,确定待检测的api的漏洞检测结果为存在漏洞风险,即确定待检测的api受到攻击。
[0320]
在另一些实施例中,本申请中的检测条件中的告警阈值次数被设置为“是”时,在
异常参数攻击检测条件设置界面中设置第一预设阈值以及告警时间;本申请实施例在对待检测的api进行漏洞检测时,在检测到待检测参数的参数信息处于待检测参数对应的正常值之外,增加待检测的api对应的告警次数。
[0321]
本申请实施例根据待检测的api的告警次数与第一预设阈值x的关系,确定待检测的api对应的漏洞检测结果。
[0322]
具体实施中,若待检测的api的告警次数小于第一预设阈值x,则确定待检测的api的漏洞检测结果为检测通过;
[0323]
若待检测的api的告警次数不小于第一预设阈值x,确定待检测的api在设定的告警时间内的告警次数;若待检测的api在设定的告警时间内的告警次数达到x
‑
1,则确定待检测的api对应的漏洞检测结果为存在漏洞风险。
[0324]
例如,第一预设阈值为5,告警时间为5小时,在检测到待检测的api的告警次数达到5时,重新统计待检测的api的告警次数,若待检测的api在5小时内的告警次数达到5
‑
1次,即4次时,确定待检测的api对应的漏洞检测结果为存在漏洞风险。
[0325]
具体实施中,本申请实施例在确定待检测的api对应的漏洞检测结果为存在漏洞风险时,触发告警通知。
[0326]
在一些实施例中,在本申请实施例通过api漏洞检测模块对待检测的api进行漏洞检测后,将得到的漏洞检测结果存储于安全治理数据持久化存储装置中。
[0327]
在一些实施例中,本申请实施例在对待检测的api进行安全检测和漏洞检测后,得到安全检测结果和漏洞检测结果,根据得到的安全检测结果和漏洞检测结果,输出告警通知信息。
[0328]
具体实施中,本申请实施例根据得到的安全检测结果和漏洞检测结果,分别确定安全检测结果对应的任务类型和任务名称,和漏洞检测结果对应的任务类型和任务名称,并基于确定出的任务类型和任务名称与告警通知信息的对应关系,输出告警通知信息。
[0329]
在一些实施中,本申请实施例在进行安全检测和漏洞检测之前,需要预先通过系统配置管理模块中的通知配置管理子模块,设定安全检测结果对应的任务类型和任务名称与告警通知信息的对应关系,以及漏洞检测结果对应的任务类型和任务名称与告警通知信息的对应关系。
[0330]
例如,如图35所示,用户可通过通知管理界面设置安全检测结果对应的任务类型和任务名称与告警通知信息的对应关系,以及漏洞检测结果对应的任务类型和任务名称与告警通知信息的对应关系。用户可在通知管理界面设置任务名称、任务类型、通知级别、通知方式、通知对象、通知内容;其中,通知级别可分为高危、中危险、提示三种等级,方便告知用户识别告警风险紧急程度;用户可通过im工具、邮件协议工具、第三方回调接口等方式向通知人发送告警通知信息;可通过增加通知人或通知群组的邮箱地址或im收信地址添加通知对象;通知内容为任务触发告警通知后,向被通知人发送的内容,可以加入变量将告警通知信息中的动态信息引入模板;任务名称包括数据源的获取任务,api的获取任务,api的安全检测任务和api的漏洞检测任务。
[0331]
在一些实施例中,本申请实施例中的系统配置管理模块可通过参数配置管理子模块,在api管控系统中预置部分内置变量,例如,执行频率,开始时间等等。且参数配置管理子模块预置的内部参数不允许删除,且内置变量在修改时,需要对比修改前后的变化,并在
用户确认后方可执行修改操作。并且,用户可通过参数配置管理子模块根据后期需求增加自定义变量,记录变量名和变量值。
[0332]
在一些实施例中,本申请实施例中的系统配置管理模块可通过日志管理子模块,对业务日志和审计日志进行管理。
[0333]
需要说明的是,业务日志包括但不限于:api管控系统操作日志、告警日志、通知日志、权限配置日志。审计日志包括对告警日志的处理结果、对服务发现源的处理结果、对api发现源的处理结果、安全问题的发现/处理日志。
[0334]
在一些实施例中,本申请实施例中的系统配置管理模块可通过告警管理子模块跟踪日常的告警处理,并可通过告警管理子模块查看告警内容、当前状态和告警时间。
[0335]
需要说明的是,告警状态分为待处理、处理中和已处理三种状态。
[0336]
在一些实施例中,人工处理告警通知信息后,告警管理子模块可输出用户给出的处理意见,并追溯告警源头。
[0337]
在一些实施例中,本申请实施例中的系统配置管理模块可通过用户管理子模块新建用户,并且,将新建的用户关联到角色,通过角色明确新建用户的各项权限。
[0338]
需要说明的是,未关联角色的用户没有任何权限。
[0339]
基于同一发明构思,本申请实施例中还提供了一种api管控装置,由于该装置解决问题的原理与本申请实施例api管控方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
[0340]
如图36所示,本申请实施例提供一种api管控装置,包括:
[0341]
信息获取单元3601,用于获取数据源的配置信息;数据源包括服务发现源、api网关和api发现源中的至少一种;
[0342]
信息确定单元3602,用于根据数据源的配置信息,获得数据源对应的api的配置信息,并根据api的配置信息,确定api的标记信息;
[0343]
安全检测单元3603,用于基于数据源的配置信息和api的标记信息,对api进行安全检测,得到安全检测结果;
[0344]
漏洞检测单元3604,用于基于数据源的配置信息,对api进行漏洞检测,得到漏洞检测结果;
[0345]
告警通知单元3605,用于根据安全检测结果和漏洞检测结果,输出告警通知信息。
[0346]
一种可选的实施方式为,安全检测单元3603具体用于:
[0347]
根据数据源的配置信息,与数据源对应的系统建立连接,并从数据源对应的系统获取api日志文件;
[0348]
根据api的标记信息,在api日志文件中查找待检测的api;
[0349]
对待检测的api进行安全检测,得到待检测的api对应的安全检测结果。
[0350]
一种可选的实施方式为,漏洞检测单元3604具体用于:
[0351]
根据数据源的配置信息,与数据源对应的系统建立连接,并从数据源对应的系统获取api日志文件;
[0352]
根据通过条件设置界面接收到的待检测的api的标识,从api日志文件中查找待检测的api;
[0353]
按照设定的检测条件,对待检测的api进行漏洞检测,得到待检测的api对应的漏
洞检测结果;检测条件为通过条件设置界面接收到的检测条件。
[0354]
一种可选的实施方式为,告警通知单元3605具体用于:
[0355]
分别确定安全检测结果和漏洞检测结果对应的任务类型和任务名称;
[0356]
基于任务类型和任务名称与告警通知信息的对应关系,输出告警通知信息。
[0357]
一种可选的实施方式为,信息获取单元3601具体用于:
[0358]
通过数据源对应的输入界面,接收输入的数据源的配置信息;
[0359]
信息确定单元3602具体用于:
[0360]
基于预设的获取周期,根据数据源的配置信息,获取数据源对应的各个服务器对应的配置信息;
[0361]
根据各个服务器的配置信息,获得各个服务器对应的api的配置信息。
[0362]
一种可选的实施方式为,数据源为服务发现源;信息确定单元3602具体用于:
[0363]
每间隔预设的获取周期,根据服务发现源的配置信息,获取服务发现源中各个服务对应的配置信息;
[0364]
根据各个服务对应的配置信息,确定各个服务对应的api的配置信息。
[0365]
一种可选的实施方式为,数据源为api发现源;信息确定单元3602具体用于:
[0366]
每间隔预设的获取周期,根据api发现源的配置信息,获取api发现源中各个api的参考信息;
[0367]
根据预设的api解析规则和各个api的参考信息,获得各个api的配置信息。
[0368]
一种可选的实施方式为,信息确定单元3602具体用于:
[0369]
根据api的配置信息,确定api对应的标记类型;
[0370]
根据确定出的api对应的标记类型,显示api对应的标记界面;
[0371]
基于api对应的标记界面接收到的标记内容,确定api的标记信息。
[0372]
与图1所示的api管控方法基于同一发明构思,本申请实施例还提供了一种电子设备。如图37所示,电子设备的结构包括存储器131,通讯模块133以及一个或多个处理器132。
[0373]
存储器131,用于存储处理器132执行的计算机程序。存储器131可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
[0374]
处理器132,可以包括一个或多个中央处理单元(central processing unit,cpu)或者为数字处理单元等等。处理器132,用于调用存储器131中存储的计算机程序时实现上述管控方法。
[0375]
通讯模块133用于与终端进行通信,获取数据。
[0376]
本申请实施例中不限定上述存储器131、通讯模块133和处理器132之间的具体连接介质。本公开实施例在图37中以存储器131和处理器132之间通过总线134连接,总线134在图37中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线134可以分为地址总线、数据总线、控制总线等。为便于表示,图37中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0377]
根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,
使得该计算机设备执行上述任一实施例中的api管控方法。
[0378]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd
‑
rom、光学存储器等)上实施的计算机程序产品的形式。
[0379]
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0380]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0381]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0382]
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。