一种Docker的安全使用检查系统及风险检测、修复方法

文档序号:31791504发布日期:2022-10-14 15:35阅读:78来源:国知局
一种Docker的安全使用检查系统及风险检测、修复方法
一种docker的安全使用检查系统及风险检测、修复方法
技术领域
1.本发明涉及大数据风险检测技术领域,具体涉及一种docker的安全使用检查系统及风险检测、修复方法。


背景技术:

2.docker是一种开源的基于lxc的应用容器引擎,因其轻量、弹性伸缩、快速部署、可移植等优势,在大型互联网企业中被广泛应用,同时也方便了个人用户对于开发、服务等的快速构建、部署和使用,docker在整个开发周期都可以完美的辅助你实现快速交付。docker允许开发者在装有应用和服务本地容器做开发。可以直接集成到可持续开发流程中。随着docker技术的发展与普及,其带来安全问题不容忽视。容器技术是一种新型的技术革命,不仅存在传统的主机安全问题,还带来了新型的安全威胁。
3.《一种对容器镜像进行安全检查的方法、装置以及设备》实现了一种对容器镜像安全检查的方法、装置及设备。方案包括:获取容器镜像的dockerfile文件,所述dockerfile文件包括用于构建所述容器镜像的文件文本;解析所述dockerfile文件,得到解析结果;将所述解析结果与安全检查数据库进行匹配,得到安全检查列表,该专利对于dockerfile的安全分析依赖于各类子数据库的匹配,也就是说他的分析准确性、覆盖率取决于子数据库的数据准确性和数据量,而且该装置不适合针对个人用户或者在个人终端部署使用,子数据库的较大数据量和数据不能动态更新是他存在的问题,对于个人终端的部署便捷性也是他的短板。他的传统软件模式决定了他存在不能及时、动态的更新检查规则等问题。


技术实现要素:

4.本发明的目的在于提供一种docker的安全使用检查系统及风险检测、修复方法,以解决上述背景技术中提出的问题。
5.为实现上述目的,本发明提供如下技术方案:
6.一种docker的安全使用检查系统,其包括cli解析模块,安全分析模块,反馈和处理模块以及执行模块,所述cli解析模块接收用户在命令行的输入,将其进行解析,所述安全分析模块主要包含如下组件:dockerfile分析组件、docker image分析组件、docker指令分析组件、云端安全数据库、云沙箱以及联动调度组件。
7.优选的,所述云沙箱安全分析模块包含针对文件的云沙箱安全检测和对应的数据统计数据库。
8.一种docker的安全使风险检测、修复方法,包括以下步骤:
9.s1:docker的安全使用检查系统根据dockerfile中每一项配置的配置项属性,来决定决定使用什么方法分析属性的配置内容,首先使用配置安全检测规则进行检测,主要检查格式是否存在问题,以及是否存在未指定tag等格式问题。
10.s2:对image等安全检测,如果是没在本地库中匹配的情况,则将image的名称和tag信息发送到公共的云端image安全分析模块进行分析。
11.s3:每次的分析请求发送过来后,会先查询image分析记录数据库是否有匹配的数据,如果有的话则将数据库中数据提取出来然后进行格式化后返回,如果没有则加入后台分析组件进行分析,返回任务id给该查询请求,用户端会一段时间内轮询查询分析结果,如果没有则标识为image分析未完成。
12.s4:为了进一步检测是否安全无风险,如果当前状态是联网状态,则会将分析的数据发送给云端分析组件,云端系统的架构包含更加完善和实时更新的风险分析规则以及分析记录数据库,能够给用户作为参考数据,如果有,就会将结果和历史匹配次数返回,作为参考数据,如果是新的分析,则将分析结果加入数据库中,用来丰富数据库数据。
13.优选的,所述s3中image分析记录数据库和新image的分析依托的是云端的image分析服务。
14.优选的,所述s4中分析记录数据库中记录着每次分析的数据,包含对应的规则和风险程度以及匹配次数,每一次的分析请求都会查询是否有相同的历史记录在历史分析记录数据库中。
15.与现有技术相比,本发明的有益效果是:
16.1.该docker的安全使用检查系统及风险检测、修复方法,能针对用户使用docker过程中的各种指令操作以及dockercontainer的编译、运行全过程进行安全检测、风险分析以及将修复建议反馈给用户,覆盖了docker使用的全过程,包括dockerfile阶段、构建阶段、运行使用阶段,还额外关注到使用过程中引入的外部资源的安全问题。
17.2.该docker的安全使用检查系统及风险检测、修复方法,通过结合本地装置能力和云端大数据能力,简化了用户端的部署和使用成本,有具有持续进化和升级能力,通过这种方式做到使用体验和检测能力的均衡,在用户离线模式下,依赖用户侧的检测规则就可以完成大部分的风险分析,同时云端的分析能力,提供了大数据统计分析、云沙箱运行检测和修复建议的全面检测以及防护功能。
18.3.该docker的安全使用检查系统及风险检测、修复方法,针对dockerfile中的下载行为,对下载文件进行检测,增加云沙箱进行运行检测,在每次检测后都会对文件记录hash并将hash和检测结果的各项数据同步到云端数据库中,形成检测记录数据库。
附图说明
19.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1为本发明实施例检查系统的整体的模块组成结构图;
21.图2为本发明实施例检查方法的产品侧-用户端流程图;
22.图3为本发明实施例检查方法的技术侧整体架构图;
23.图4为本发明实施例检查方法的cli解析流程图;
24.图5为本发明实施例检查方法的dockerfile分析流程图;
25.图6为本发明实施例检查方法的dockerfile安全分析模块图;
26.图7为本发明实施例检查方法的image分析组件工作流程图;
27.图8为本发明实施例检查方法的image分析组件架构图;
28.图9为本发明实施例检查方法的云沙箱分析组件工作流程图。
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.实施例
31.请参阅图1-9,本发明提供的docker的安全使用检查系统,包括cli解析模块,安全分析模块,反馈和处理模块以及执行模块,cli解析模块接收用户在命令行的输入,将其进行解析,安全分析模块主要包含如下组件:dockerfile分析组件、docker image分析组件、docker指令分析组件、云端安全数据库、云沙箱以及联动调度组件,云沙箱安全分析模块包含针对文件的云沙箱安全检测和对应的数据统计数据库。
32.cli解析模块:用户在使用的时候会根据需求需求输入各种命令和命令的各种参数,cli解析模块的工作就是告诉程序用户想要做什么,cli解析模块接收用户在命令行的输入,将其进行解析。在解析阶段中,通过命令行传入应用程序的文本来进行处理。处理过程将根据在解析器的实现过程中定义的规则来进行,cli解析的结果将决定安全分析调用哪些分析模块来工作。
33.如果用户对dockerfile执行操作,那么用户的指令和用户操作的dockerfile文件将经过解析模块处理后,将文件中的内容转化为包含指令和数组的数据格式传递给dockerfile安全分析模块进一步分析,该系统的输入为解析模块处理dockerfile后的数据。
34.一种docker的安全使风险检测、修复方法,其包括以下步骤:
35.s1:docker的安全使用检查系统根据dockerfile中每一项配置的配置项属性,来决定决定使用什么方法分析属性的配置内容,首先使用配置安全检测规则进行检测,主要检查格式是否存在问题,以及是否存在未指定tag等格式问题。
36.s2:对image等安全检测,如果是没在本地库中匹配的情况,则将image的名称和tag信息发送到公共的云端image安全分析模块进行分析。
37.s3:每次的分析请求发送过来后,会先查询image分析记录数据库是否有匹配的数据,如果有的话则将数据库中数据提取出来然后进行格式化后返回,如果没有则加入后台分析组件进行分析,返回任务id给该查询请求,用户端会一段时间内轮询查询分析结果,如果没有则标识为image分析未完成,image分析记录数据库和新image的分析依托的是云端的image分析服务。
38.s4:为了进一步检测是否安全无风险,如果当前状态是联网状态,则会将分析的数据发送给云端分析组件,云端系统的架构包含更加完善和实时更新的风险分析规则以及分析记录数据库,能够给用户作为参考数据,如果有,就会将结果和历史匹配次数返回,作为参考数据,如果是新的分析,则将分析结果加入数据库中,用来丰富数据库数据,分析记录数据库中记录着每次分析的数据,包含对应的规则和风险程度以及匹配次数,每一次的分
析请求都会查询是否有相同的历史记录在历史分析记录数据库中。
39.用户端的dockerfile分析组件的工作流程和原理如下。系统根据dockerfile中每一项配置的配置项属性,来决定决定使用什么方法分析属性的配置内容。对于基础的from配置项,这是指定dockerfile使用的基础镜像是什么,对于这个配置项,首先使用配置安全检测规则进行检测,主要检查格式是否存在问题,以及是否存在未指定tag等格式问题。之后就是对image等安全检测,docker image的检测会读取使用的docker image的名称和tag,查询用户侧的image安全数据库,该安全数据库记录的只是通过安全检测的安全image信息和通过官方安全认证的image,该数据库是可以定期通过云端同步更新信息的;如果是没在本地库中匹配的情况,则将image的名称和tag信息发送到公共的云端image安全分析模块进行分析,为保证速度,云端的image安全分析模块会有一个image分析记录数据库,数据库中记录的是分析过的image的信息,包括image的名称、tag、是否存在风险、风险等级、分析次数等信息。每次的分析请求发送过来后,会先查询image分析记录数据库是否有匹配的数据,如果有的话则将数据库中数据提取出来然后进行格式化后返回,如果没有则加入后台分析组件进行分析,返回任务id给该查询请求,用户端会一段时间内轮询查询分析结果,如果没有则标识为image分析未完成。image分析记录数据库和新image的分析依托的是云端的image分析服务,image分析服务是借助anchore引擎进行image的分析工作,并将结果进行进一步处理,并且结合任务调度和管理功能。在没有新的用户侧任务时,image分析服务会抓取热度较高的image进行分析来填充image分析记录数据库。对于其他的配置项,按照配置项属性,选择对应的检测规则进行安全检测,不同的配置项存在不同的规范和安全要求,有不同的安全风险存在,所以需要按照配置项来选择对应的检测规则对配置项的属性配置内容进行分析检测。对于云端能力的运用体现在,每一条的配置信息在本地检测如果没有匹配的记录,也就是本地的威胁检测规则没有命中,为了进一步检测是否安全无风险,如果当前状态是联网状态,则会将分析的数据发送给云端分析组件,云端系统的架构包含更加完善和实时更新的风险分析规则以及分析记录数据库,分析记录数据库中记录着每次分析的数据,包含对应的规则和风险程度以及匹配次数,能够给用户作为参考数据。每一次的分析请求都会查询是否有相同的历史记录在历史分析记录数据库中,如果有,就会将结果和历史匹配次数返回,作为参考数据,如果是新的分析,则将分析结果加入数据库中,用来丰富数据库数据。
40.针对dockerfile中的针对可执行文件的下载和add/copy等操作,为了保证可执行文件的安全性,本发明设置了云沙箱安全分析模块。云沙箱安全分析模块包含针对文件的云沙箱安全检测和对应的数据统计数据库。该分析在用户侧无法完成,如果用户侧的终端是在联网环境下执行的话,则会将云端下载的文件地址以及本地操作的文件上传到云端的沙箱系统进行分析,对于每个文件,会先计算他的sha256hash值,去查询数据统计数据库中是否有匹配的记录,如果有匹配的记录的话就说明之前分析过相同的文件,那么就可以节省分析的时间,直接将数据库中数据返回给用户侧,如果是没有分许过的全新文件的话,则将文件进行杀软检测同时交给云沙箱去分析,云沙箱系统会在沙箱环境中运行文件检测文件安全性记录文件的行为,进而判断文件的安全风险,检测的结果会连同各项数据存储到数据统计数据库中。
41.针对其他的docker操作,例如docker exec的使用,对执行的指令和参数进行检
查,对于不规范或者存在风险的操作,在执行前告知用户风险。例如如果docker exec在执行的时候使用了
‑‑
privileged选项来执行,在docker exec中使用privileged选项可为命令提供扩展的linux功能。使用特权选项这可能会造成不安全的情况。检测到用户执行了如此存在风险的操作用户侧程序会告知用户并建议在docker exec命令中不要使用
‑‑
privileged选项。又例如使用user选项执行docker exec同样可能会引入安全风险,在docker exec中使用
‑‑
user选项以该用户身份在容器内执行该命令这可能会造成不安全的情况。例如,假设你的容器是以tomcat用户(或任何其他非root用户)身份运行的,那么可以使用user=root选项以root用户身份运行命令,这是非常危险的。还有特权端口的映射,低于1024的tcp/ip端口号被认为是特权端口。由于各种安全原因,普通用户和进程不允许使用它们。默认情况下,如果用户没有明确声明容器端口进行主机端口映射,docker会自动地将容器端口映射到主机上的49153-65535中。但是,如果用户明确声明它,docker可以将容器端口映射到主机上的特权端口。这是因为容器使用不限制特权端口映射的net_bind_service linux内核功能来执行。特权端口接收和发送各种敏感和特权的数据。允许docker使用它们可能会带来严重的影响,所以会检测用户的操作是否进行了特权端口的映射。
42.云端的docker image分析组件,该系统由分析程序和分析记录数据库组成,系统的输入包括两部分,一部分是用户的输入,也就是用户需要检测的image信息,另外的部分是系统在空闲时会去搜索公开的docker register,自动获取最新的image进行分析。
43.云端的分析记录系统会对所有用户侧的检测请求进行分析处理,会将历史的处理分析结果存储到系统的记录数据库,借助大量的分析结果提升分析处理速度和检测能力,将历史分析和判断以及用户的选择占比作为分析数据反馈给用户,帮助用户对风险的判断。
44.dockerfile分析组件包括了dockerfile解析和指令的分析两个主要部分。dockerfile解析通过我们的解析程序,按照不同的指令进行提取,处理成字典型json格式数据,进行数据的存储和分析。解析后的数据,按照分析规则进行风险检查,检查的结果同样按照字典格式的json数据存储到数据库。
45.个人用户使用更友好,更全面的覆盖docker使用的全部场景,用户使用起来更加无感降低用户的学习成本。结合本地规则和云端能力进行dockerfile的安全检测。既具有轻量和支持同步的特点,又借助云端是实时更新的多维度检测规则来实现检测的速度与准确度。而且借助大量的数据积累,能针对每一个检测出来的安全风险给用户针对性的安全建议以及借助云端数据得出的统计数据给用户作为参考。借助该方案,能让用户不会增加使用成本的同时,减少用户使用docker过程带来的安全风险,因为毕竟个人用户不是专业用户,在使用时难免有不规范或者不安全的操作会引入安全风险,导致潜在的安全问题,本方案通过多系统安全检测以及本地加云端的检测方式,全方位的保障用户使用docker的安全。
46.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1