掌桥专利:专业的专利平台
掌桥专利
首页

IaC文件的安全检测方法、系统、电子设备以及存储介质

文献发布时间:2024-04-18 20:01:55


IaC文件的安全检测方法、系统、电子设备以及存储介质

技术领域

本申请涉及软件安全技术领域,尤其涉及一种IaC文件的安全检测方法、系统、电子设备以及存储介质。

背景技术

基础设施即代码(Infrastructure-as-Code,IaC)),是将应用程序运行的基础设施(例如:云架构、网络、虚拟或物理服务器、负载平衡器、镜像、存储等)定义为代码和配置文件的做法,使得相关人员在利用过程、方法与系统(Development Operations,DevOps)流程的同时通过IaC文件对基础设施进行版本控制、部署和改进。

随着IaC采用率的增长,安全风险也随之增加。如果没有对IaC文件进行安全检测,存在漏洞、包含弱密码、安全配置错误等问题的IaC文件就会引入基础设施,使得基础设施遭受攻击,进而使得基础设施环境下的数据受到安全威胁。因此,IaC文件的检测是势在必行。而目前对IaC文件进行安全检测的就是IaC工具。具体来说,当需要对某一IaC文件进行检测时,相关人员将IaC文件导入IaC工具,IaC工具基于其中的安全检测逻辑和数据库对IaC文件进行安全检测,进而输出IaC文件的安全检测结果。

然而,对于某一个IaC工具来说,由于工具设计阶段已配置好检测规则,其仅能够检测特定格式的IaC文件,对于特定格式外的其它格式的IaC文件,则无法进行安全检测。这样,就会降低IaC文件安全检测的通用性。

发明内容

本申请实施例的目的是提供一种IaC文件的安全检测方法、系统、电子设备以及存储介质,以提高IaC文件安全检测的通用性。

为解决上述技术问题,本申请实施例提供如下技术方案:

本申请第一方面提供一种IaC文件的安全检测方法,所述方法包括:获取基础设施即代码IaC文件;判断所述IaC文件的格式是否为IaC系统所支持的格式;若否,则将所述IaC文件的格式转换为所述IaC系统所支持的格式,并通过所述IaC系统对格式转换后的IaC文件进行安全检测。

相较于现有技术,本申请第一方面提供的IaC文件的安全检测方法,在对IaC文件进行安全检测之前,先判断IaC文件的格式是否为IaC系统所支持的格式,并在确定IaC文件的格式不是IaC系统所支持的格式的情况下,将IaC文件的格式转换为IaC系统所支持的格式,进而使用IaC系统对IaC文件进行安全检测。这样,使得不同格式的IaC文件都能够被IaC系统进行安全检测,提高IaC文件安全检测的通用性。

在本申请第一方面提供的其它实施例中,所述IaC系统所支持的格式的数量为多个;所述将所述IaC文件的格式转换为所述IaC系统所支持的格式,包括:确定所述IaC文件的格式与所述IaC系统所支持的每个格式的相似度;从多个相似度中选择最高相似度对应的所述IaC系统所支持的格式作为目标格式;将所述IaC文件的格式转换为所述目标格式。

通过从IaC系统所支持的格式中选择一个与IaC文件当前格式最为接近的格式,进而将IaC文件的格式转换为该格式,这样IaC文件在进行格式转换时的转换工作量最小,提高IaC文件格式转换的效率。

在本申请第一方面提供的其它实施例中,所述通过所述IaC系统对格式转换后的IaC文件进行安全检测,包括:通过所述IaC系统在格式转换后的IaC文件中的预设位置提取属性信息;判断所述属性信息与知识库中的缺陷特征是否匹配;若是,则确定所述IaC文件存在安全问题;若否,则确定所述IaC文件不存在安全问题。

在格式转换后的IaC文件中,各个配置信息的位置是固定的,通过从IaC文件中的预设位置能够准确地提取到各个配置信息,进而通过配置信息能够准确地实现IaC文件的缺陷检测,进而提高IaC文件安全检测的准确性。

在本申请第一方面提供的其它实施例中,所述缺陷特征包括以下至少一种:数据库加密、存储桶的权限控制、未加密的通信、访问控制、容器权限管理、硬编码密码、日志管理、合规性最佳实践,以及CWE、OWASAP TOP 10、PCIDSS、CWE/SANS TOP 24、CIS K8s基线的安全标准。

通过将IaC文件中的配置信息与数据库加密、存储桶的权限控制、未加密的通信、访问控制、容器权限管理、硬编码密码、日志管理、合规性最佳实践,以及CWE、OWASAP TOP10、PCIDSS、CWE/SANS TOP 24、CIS K8s基线的安全标准这些缺陷特征进行匹配,使得IaC文件缺陷检测的种类更加丰富,进而提升IaC文件安全检测的全面性和准确性。

在本申请第一方面提供的其它实施例中,在获取基础设施即代码IaC文件之后,所述方法还包括:通过所述IaC系统对所述IaC文件进行敏感信息检测。

通过对IaC文件进行敏感信息检测,能够丰富IaC文件安全检测的种类,进而提升IaC文件安全检测的全面性和准确性。

在本申请第一方面提供的其它实施例中,所述通过所述IaC系统对所述IaC文件进行敏感信息检测,包括:通过所述IaC系统从所述IaC文件中识别出键值对中的键Key、注释、包含特定敏感信息格式的字符串和统一资源定位符(Uniform Resource Locator,URL);采用正则匹配的方式判断所述Key、所述注释、所述字符串和所述URL中是否存在敏感信息;若是,则确定所述IaC文件存在安全问题;若否,则确定所述IaC文件不存在安全问题。

由于IaC文件中的敏感信息一般都包含在键值对、注释、包含特定敏感信息格式的字符串和URL中,因此,通过IaC文件中的键值对、注释、包含特定敏感信息格式的字符串和URL,能够快速的判断出IaC文件中是否存在敏感信息,提高IaC文件敏感信息识别的效率,进而提高IaC文件安全检测的效率。

在本申请第一方面提供的其它实施例中,在通过所述IaC系统对格式转换后的IaC文件进行安全检测之后,所述方法还包括:当检测出所述IaC文件存在安全问题时,从问题项与修复建议的对应关系中查找出使所述IaC文件存在安全问题的问题项对应的修复建议;输出所述IaC文件的修复建议。

在确定IaC文件存在安全问题之后,还针对IaC文件存在的安全问题给出相对应的修复建议,为IaC文件安全检测的后续环节提供丰富的数据支持,提升IaC文件安全检测的用户体验。

在本申请第一方面提供的其它实施例中,所述IaC系统与静态应用安全测试(Static Application Security Testing,SAST)系统集成,以通过所述SAST系统的启用实现所述IaC系统的自动检测;所述获取基础设施即代码IaC文件,包括:获取所述SAST系统发送的IaC文件。

通过将IaC系统与SAST系统集成,使得SAST系统在进行自动测试的同时,能够带动IaC系统进行IaC文件的安全检测,实现了IaC文件安全检测的自动化。

在本申请第一方面提供的其它实施例中,所述IaC系统和所述SAST系统集成于集成开发环境(Integrated Development Environment,IDE)中,以通过所述IDE实现所述SAST系统和所述IaC系统的检测;所述获取所述SAST系统发送的IaC文件,包括:获取所述IDE通过所述SAST系统发送的源代码文件,所述源代码文件是在所述IDE中进行开发时生成的;从所述源代码文件中提取出所述IaC文件。

通过将IaC系统和SAST系统集成在IDE中,能够实现在产品开发的过程中实时发现IaC文件存在的安全问题,实现安全左移,降低开发成本。

在本申请第一方面提供的其它实施例中,所述IaC系统与版本控制系统(VersionControl System,VCS)集成,以通过所述VCS检测IaC文件的版本变化;在获取基础设施即代码IaC文件之前,所述方法还包括:通过所述VCS检测当前版本的IaC文件与上一版本的IaC文件的内容是否发生变化;若是,则输出变化告警信息,并进入获取基础设施即代码IaC文件的步骤;若否,则跳过安全检测;所述获取基础设施即代码IaC文件,包括:获取当前版本的IaC文件。

通过VCS检测当前版本的IaC文件的内容是否发生变化,并在确定IaC文件的内容发生变化后,输出变化告警信息,以提示相关人员IaC文件的内容已发生变化,从而有效降低开发过程中配置漂移所带来的安全风险,以及对变化后的IaC文件进行安全检测,能够及时发现后续IaC文件更改导致的安全问题。

本申请第二方面提供一种IaC文件的安全检测系统,所述系统包括:获取模块,用于获取基础设施即代码IaC文件;判断模块,用于判断所述IaC文件的格式是否为IaC系统所支持的格式;若否,则进入转换检测模块;转换检测模块,用于将所述IaC文件的格式转换为所述IaC系统所支持的格式,并通过所述IaC系统对格式转换后的IaC文件进行安全检测。

本申请第三方面提供一种电子设备,所述电子设备包括:处理器、存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行第一方面中的方法。

本申请第四方面提供一种计算机可读存储介质,所述存储介质包括:存储的程序;其中,在所述程序运行时控制所述存储介质所在设备执行第一方面中的方法。

本申请第二方面提供的IaC文件的安全检测系统、第三方面提供的电子设备、第四方面提供的计算机可读存储介质,与第一方面提供的IaC文件的安全检测方法具有相同或相似的有益效果,此处不再赘述。

附图说明

通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,相同或对应的标号表示相同或对应的部分,其中:

图1为本申请实施例中IaC文件的安全检测方法的流程示意图一;

图2为本申请实施例中IaC文件的安全检测方法的流程示意图二;

图3为本申请实施例中IaC文件的安全检测系统的结构示意图一;

图4为本申请实施例中IaC文件的安全检测系统的结构示意图二;

图5为本申请实施例中电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。

目前,对IaC文件进行安全检测,主要是利用IaC工具。而IaC工具只能够对特定格式的IaC文件进行安全检测,无法对所有格式的IaC文件进行安全检测,降低了IaC文件安全检测的通用性。

发明人经过研究发现,如果将IaC文件的格式转换为IaC工具能够检测的格式,那么,所有格式的IaC文件都能够被IaC工具进行安全检测,这样,就实现了IaC文件安全检测的通用性。

有鉴于此,本申请实施例提供一种IaC文件的安全检测方法、系统、电子设备以及存储介质,在使用IaC系统中的安全检测功能对IaC文件进行安全检测之前,先判断IaC文件的格式是否能够适用于IaC系统,若不使用,则将IaC文件的格式转换为IaC系统支持的格式,进而再使用IaC系统中的安全检测功能对IaC文件进行安全检测。这样,IaC文件的格式即便是IaC系统不支持的格式,通过将IaC文件的格式转换为IaC系统所支持的格式,使得IaC系统不持支的格式的IaC文件最终也能够在IaC系统中进行安全检测,使得IaC文件的安全检测具有通用性。

首先,对本申请实施例提供的IaC文件的安全检测方法进行详细说明。

图1为本申请实施例中IaC文件的安全检测方法的流程示意图一,参见图1所示,该方法可以包括:

S11:获取IaC文件。

这里获取的IaC文件就是需要进行安全检测的IaC文件。IaC文件的获取,可以是主动的,也可以是被动的。在主动获取IaC文件的情况下,可以是IaC系统按照预设时间间隔向产生IaC文件的环境发送IaC文件的获取请求,当该环境中有新的IaC文件生成时,该环境就会将新产生的IaC文件发送给IaC系统,IaC系统获取到IaC文件。在被动获取IaC文件的情况下,当用户有IaC文件需要进行安全检测时,用户向IaC系统输入IaC文件,IaC系统从而获取IaC文件。

S12:判断IaC文件的格式是否为IaC系统所支持的格式。若是,则执行S13,若否,则执行S14。

对于IaC系统来说,其只能够对一些特定格式的IaC文件进行安全检测,即IaC系统仅能够支持某一个或某几个格式的IaC文件的安全检测。因此,在将获取的IaC文件正式进行安全检测之前,需要先判断该IaC文件的格式是否为IaC系统所支持的格式。

在进行格式判断时,由于不同格式的问题所具有的特征不同,因此,可以从IaC文件中提取其格式特征,并将提取的格式特征与IaC系统支持的格式的特征进行匹配。若匹配成功,说明IaC文件的格式为IaC系统支持的格式。若匹配失败,说明IaC文件的格式不是IaC系统支持的格式。

S13:通过IaC系统对IaC文件进行安全检测。

当确定IaC文件的格式为IaC系统所支持的格式时,IaC系统是能够对IaC文件正常进行安全检测的,因此,可以直接使用IaC系统对IaC文件进行安全检测。

S14:将IaC文件的格式转换为IaC系统所支持的格式,并通过IaC系统对格式转换后的IaC文件进行安全检测。

当确定IaC文件的格式不是IaC系统所支持的格式时,IaC系统无法识别IaC文件中的内容,进而无法对IaC文件正常进行安全检测,因此,需要先将IaC文件的格式转换为IaC系统所支持的格式后,在使用IaC系统对格式转换后的IaC文件进行安全检测,从而实现IaC系统对其不支持的格式的IaC文件的安全检测。

在对IaC文件进行格式转换时,首先确定需要将IaC文件转换为什么格式,然后确定将IaC文件从当前格式转换为目标格式都需要转换哪些内容,最后,将IaC文件中的这些内容转换为目标格式。而具体的转换过程,与常规的文件格式转换的过程相同,此处不再赘述。

而IaC系统对IaC文件进行安全检测的具体方式,与IaC工具的安全检测方式相同或相似,此处也不再赘述。

这里最后需要说明的是,本申请实施例提供的IaC文件的安全检测方法的执行主体可以是IaC系统,即IaC系统获取IaC文件,并判断IaC文件的格式是否为其支持的格式,在不是的情况下,将IaC文件的格式转换为其支持的格式,进而再针对格式转换后的IaC文件进行安全检测。这样,IaC系统就能够对各种格式的IaC文件进行安全检测,从而实现IaC文件的通用检测。

由上述内容可知,本申请实施例提供的IaC文件的安全检测方法,在对IaC文件进行安全检测之前,先判断IaC文件的格式是否为IaC系统所支持的格式,并在确定IaC文件的格式不是IaC系统所支持的格式的情况下,将IaC文件的格式转换为IaC系统所支持的格式,进而使用IaC系统对IaC文件进行安全检测。这样,使得不同格式的IaC文件都能够被IaC系统进行安全检测,提高IaC文件安全检测的通用性。

进一步地,作为对图1所示方法的细化和扩展,本申请实施例还提供了一种IaC文件的安全检测方法。

图2为本申请实施例中IaC文件的安全检测方法的流程示意图二,参见图2所示,该方法的执行主体可以是IaC系统。IaC系统可以与SAST系统集成,以通过SAST系统的启用实现IaC系统的自动检测。

在此基础上,IaC系统和SAST系统还可以集成于IDE中(可以以插件的形式进行集成),以通过IDE实现SAST系统和IaC系统的检测。

与此同时,IaC系统还可以与VCS集成,以通过VCS检测IaC文件的版本变化。

该方法可以包括:

S21:获取IDE通过SAST系统发送的源代码文件。

其中,源代码文件是在IDE中进行开发时生成的。

当开发人员使用IDE进行开发时,开发人员在IDE中输入源代码。IDE将开发人员输入的源代码生成源代码文件,并将源代码文件发送给SAST系统,使得SAST系统启动,并对源代码文件进行测试。SAST系统在对源代码文件进行测试的同时,还会将源代码文件或者从其中提取出的IaC文件发送给IaC系统,使得IaC系统启动,并开始进行安全检测。

这里需要说明的是,IDE向SAST发送源代码文件,可以是开发人员完成一个阶段的开发后控制IDE基于其此前编辑的源代码生成源代码文件,也可以是IDE间隔一段时间后基于其中的源代码自动生成源代码文件。

S22:从源代码文件中提取出IaC文件。

IaC系统获取到源代码文件后,就会从源代码文件中提取出IaC文件。而从源代码文件中提取IaC文件,可以根据IaC文件的特征从源代码文件中提取出IaC文件,也可以根据开发人员在开发时作出的标识从源代码文件中提取出IaC文件。这样,在进行开发的过程中或者进行应用安全测试的过程中,就能够同时对IaC文件进行安全检测,无需手动执行IaC文件的安全检测,实现IaC文件在开发/应用测试过程中的自动检测,并且及时发现配置问题,实现安全左移。

以上步骤S21-S22为对首次生成的IaC文件进行检测时文件的获取过程,以下步骤S23-S26为对更新后的IaC文件进行检测时文件的获取过程。在执行上述步骤S21-S22的同时,该方法还可以包括:

S23:通过VCS检测当前版本的IaC文件与上一版本的IaC文件的内容是否发生变化。若否,则执行S24,若是,则执行S25-S219。

VCS会实时、按照预设时间间隔或者根据检测指令将当前版本的IaC文件与上一版本的IaC文件在内容上进行对比,以确定当前IaC文件是否发生更新。如果确定文件发生更新,就需要输出当前版本IaC文件的漂移警告,以及对当前版本的IaC文件再次进行安全检测,从而有效避免开发过程中配置漂移带来的安全风险。如果确定文件没有发生更新,说明当前版本的IaC文件相较于上一版本的IaC文件在内容上没有发生变化,当前版本的IaC文件可以跳过安全检测。

S24:跳过安全检测。

当确定当前版本的IaC文件与上一版本的IaC文件的内容没有发生变化时,说明当前版本的IaC文件没有更新,而此前内容相同的版本的IaC文件已经进行过安全检测,因此,当前版本的IaC文件可以跳过安全检测。

S25:输出变化告警信息。

当确定当前版本的IaC文件与上一版本的IaC文件的内容发生变化时,说明当前版本的IaC文件已经发生更新,此时,需要输出变化告警信息,通过变化告警信息告知相关人员当前版本的IaC文件相较于此前版本的IaC文件的内容已经发生了变化,即发生了配置漂移,需要进行相应的处理。在变化告警信息中,可以包含发生变化的具体内容或者在文件中的具体位置。

S26:获取当前版本的IaC文件。

在输出变化告警信息的同时,还需要说明当前版本的IaC文件,以便对变更后的IaC文件进行安全检测,避免配置漂移带来的安全风险。

无论是通过SAST系统获取的IaC文件,还是通过VCS获取的IaC文件,在获取到IaC文件后,就可以通过IaC系统对获取的IaC文件进行敏感信息检测。

S27:通过IaC系统从IaC文件中识别出键值对中的键Key、注释、包含特定敏感信息格式的字符串和URL。

一般来说,键值对中的键Key常用于敏感信息的标志,例如:密码、身份证号等。对于json、yaml、properties、tf、xml等具有注释性格式的IaC文件,可以从中提取Key。当提取的Key表征敏感信息时,可以确定IaC文件中存在敏感信息。

而注释、包含特定敏感信息格式的字符串和URL,则可以通过其中的格式特征或内容特征进行敏感信息识别。例如:当注释中包含code、字符串或者URL中包含身份证号的特征字段时,可以确定IaC文件中存在敏感信息。

S28:采用正则匹配的方式判断Key、注释、字符串和URL中是否存在敏感信息。若是,则执行S216-S218,若否,则执行S219。

在从IaC文件中识别出键值对中的键Key、注释、包含特定敏感信息格式的字符串和URL后,可以将敏感信息所指的具体内容融入到正则匹配中,进而将从IaC文件中识别出的内容进行正则匹配,以确定这些内容中是否存在敏感信息。而敏感信息所指的具体内容可以包括硬编码密码、硬编码加密密钥、硬编码私钥、硬编码证书、硬编码令牌、硬编码Webhook、硬编码应用程序接口(Application Programming Interface,API)Key、硬编码API密钥等等。

当通过正则匹配确定Key、注释、字符串或URL中存在敏感信息时,说明IaC文件中存在敏感信息。当通过正则匹配确定Key、注释、字符串以及URL中不存在敏感信息时,说明IaC文件中不存在敏感信息。

除了通过上述步骤S27-S28中的敏感信息检测对IaC文件进行安全检测之外,还可以通过以下步骤S29-S215中的敏感信息检测对IaC文件进行安全检测。

在执行上述步骤S27-S28的同时,该方法还可以包括:

S29:判断IaC文件的格式是否为IaC系统所支持的格式。若是,则执行S210,若否,则执行S211-S215。

上述步骤S29与前述步骤S12的具体实现方式相同,此处不再赘述。

S210:通过IaC系统对IaC文件进行安全检测。

上述步骤S210与前述步骤S13的具体实现方式相同,此处不再赘述。

S211:确定IaC文件的格式与IaC系统所支持的每个格式的相似度。

当确定IaC文件的格式不是IaC系统所支持的格式时,需要将IaC文件的格式转换为IaC系统所支持的格式。而当IaC系统所支持的格式的数量为多个时,可以从多个格式中选择一种格式,使得IaC文件转换为该格式最简单方便。

在确定IaC文件的格式以及IaC系统所支持的各格式后,计算IaC文件的格式与IaC系统所支持的每个格式的相似度。在计算的过程中,可以从格式的名称、架构、规则等多种维度进行相似度计算,再取各维度相似度的加权或者加权平均,就得到了IaC文件的格式与IaC系统所支持的每个格式的相似度。

S212:从多个相似度中选择最高相似度对应的IaC系统所支持的格式作为目标格式。

在得到了IaC文件的格式与IaC系统所支持的每个格式的相似度后,从这些相似度中选择一个最高的相似度对应的IaC系统支持的格式。该格式与IaC文件的格式最为相似,IaC文件的格式转换为该格式时相比于IaC系统支持的其它格式更加方便简单,能够IaC文件格式转换的效率。

S213:将IaC文件的格式转换为目标格式。

上述步骤S213与前述步骤S14的具体实现方式相同,此处不再赘述。

S214:通过IaC系统在格式转换后的IaC文件中的预设位置提取属性信息。

在将IaC文件的格式转换为IaC系统支持的格式后,IaC系统就能够从IaC文件中准确的找出其需要的信息,也就是说,IaC系统基于其固有设置,能够知晓IaC文件中各节点的位置以及各节点的内容,从而能够准确的从IaC文件中提取出所需的信息。

IaC文件中,用于进行缺陷检测的位置明确,这些位置可以预先设置,即预设位置。从IaC文件的预设位置中提取属性信息,通过提取的属性信息就能够知晓IaC文件是否存在缺陷。

S215:判断属性信息与知识库中的缺陷特征是否匹配。若是,则执行S216-S218,若否,则执行S219。

在从IaC文件中提取到用于进行缺陷判断的属性信息后,就可以将这些属性信息与知识库中的缺陷特征进行匹配。当属性信息与某一个或某几个缺陷特征匹配时,说明IaC文件中存在相应的缺陷。当属性信息与知识库中所有的缺陷特征都不匹配时,说明IaC文件中不存在缺陷。

在实际应用中,缺陷特征包括以下至少一种:数据库加密、存储桶的权限控制、未加密的通信、访问控制、容器权限管理、硬编码密码、日志管理、合规性最佳实践,以及CWE、OWASAP TOP 10、PCIDSS、CWE/SANS TOP 24、CIS K8s基线的安全标准。

以缺陷特征为数据库加密为例,从IaC文件与数据库相关的节点中提取数据库是否加密的属性信息,假设提取的属性信息为数据库加密,将数据库加密的属性信息与数据库加密这一缺陷特征进行匹配,匹配成功,可以确定IaC文件存在数据库加密这一缺陷。而假设提取的属性信息为数据库未加密,将数据库未加密的属性信息与数据库加密这一缺陷特征进行匹配,匹配失败,可以确定IaC文件不存在数据库加密这一缺陷。

S216:确定IaC文件存在安全问题。

无论是通过上述步骤S27-S28确定IaC文件中存在敏感信息,还是通过上述步骤S29-S215确定IaC文件中存在缺陷,只要确定了IaC文件中存在敏感信息和/或缺陷,就能够确定IaC文件存在安全问题。

S217:从问题项与修复建议的对应关系中查找出使IaC文件存在安全问题的问题项对应的修复建议。

在确定IaC文件存在安全问题后,可以先确定导致IaC文件存在安全问题的原因,即,IaC文件中哪里存在敏感信息,存在什么样的敏感信息,以及IaC文件中哪里存在缺陷,存在什么样的缺陷,这些原因以及具体的内容可以作为问题项,在问题项与修复建议的对应关系中找出IaC文件的问题项对应的修复建议。

对于导致IaC文件出现安全问题的各种问题项及其对应的修复建议,可以事先基于大量的IaC文件的安全检测结果统计出现的各种安全问题,进而总结出相应的问题项,然后根据每个问题项的历史解决结果得到相应的修复建议(某个问题项的修复建议需要在历史场景下确实解决了该问题项才能够加入到对应关系中作为该问题项对应的修复建议)。

S218:输出IaC文件的修复建议。

在确定了存在安全问题的IaC文件的修复建议后,就可以将该修复建议输出,以便相关人员能够及时根据修改建议对IaC文件进行修复,提高了IaC文件安全问题修复的便捷性以及及时性。

S219:确定IaC文件不存在安全问题。

在通过上述步骤S27-S28确定IaC文件中不存在敏感信息,以及通过上述步骤S29-S215确定IaC文件中不存在缺陷,就能够确定IaC文件不存在安全问题,该IaC文件就顺利通过了此次的安全检测。

至此,本申请实施例提供的IaC文件的安全检测方法就已全部说明完成。

基于同一发明构思,作为对上述方法的实现,本申请实施例还提供了一种IaC文件的安全检测系统。

图3为本申请实施例中IaC文件的安全检测系统的结构示意图一,参见图3所示,该系统可以包括:获取模块31、判断模块32和转换检测模块33。其中,获取模块31、判断模块32和转换检测模块33依次连接。

获取模块31,用于获取基础设施即代码IaC文件。

判断模块32,用于判断所述IaC文件的格式是否为IaC系统所支持的格式。若否,则进入转换检测模块33。

转换检测模块33,用于将所述IaC文件的格式转换为所述IaC系统所支持的格式,并通过所述IaC系统对格式转换后的IaC文件进行安全检测。

进一步地,作为对图3所示系统的细化和扩展,本申请实施例还提供了一种IaC文件的安全检测系统。

图4为本申请实施例中IaC文件的安全检测系统的结构示意图二,参见图4所示,所述IaC系统与静态应用安全测试SAST系统集成,以通过所述SAST系统的启用实现所述IaC系统的自动检测。所述IaC系统和所述SAST系统集成于集成开发环境IDE中,以通过所述IDE实现所述SAST系统和所述IaC系统的检测。所述IaC系统与版本控制系统VCS集成,以通过所述VCS检测IaC文件的版本变化。

该系统可以包括:版本模块41、获取模块42、判断模块43、转换检测模块44和建议模块45。其中,版本模块41、获取模块42、判断模块43、转换检测模块44和建议模块45依次连接。

版本模块41,用于通过所述VCS检测当前版本的IaC文件与上一版本的IaC文件的内容是否发生变化。若是,则输出变化告警信息,并进入获取模块42。若否,则跳过安全检测。

获取模块42,用于获取所述SAST系统发送的IaC文件,或者,获取当前版本的IaC文件。

获取模块42,具体用于获取所述IDE通过所述SAST系统发送的源代码文件,所述源代码文件是在所述IDE中进行开发时生成的;从所述源代码文件中提取出所述IaC文件。

判断模块43,用于判断所述IaC文件的格式是否为IaC系统所支持的格式。若否,则进入转换检测模块44。

转换检测模块44包括:敏感检测单元441、转换单元442和缺陷检测单元443。其中,敏感检测单元441与获取模块42连接,转换单元442与判断模块43连接,转换单元442和缺陷检测单元443连接,敏感检测单元441和缺陷检测单元443均与建议模块45连接。

敏感检测单元441,用于通过所述IaC系统对所述IaC文件进行敏感信息检测。

敏感检测单元441,具体用于通过所述IaC系统从所述IaC文件中识别出键值对中的键Key、注释、包含特定敏感信息格式的字符串和统一资源定位符URL;采用正则匹配的方式判断所述Key、所述注释、所述字符串和所述URL中是否存在敏感信息;若是,则确定所述IaC文件存在安全问题;若否,则确定所述IaC文件不存在安全问题。

所述IaC系统所支持的格式的数量为多个。

转换单元442,用于确定所述IaC文件的格式与所述IaC系统所支持的每个格式的相似度;从多个相似度中选择最高相似度对应的所述IaC系统所支持的格式作为目标格式;将所述IaC文件的格式转换为所述目标格式。

缺陷检测单元443,用于通过所述IaC系统在格式转换后的IaC文件中的预设位置提取属性信息;判断所述属性信息与知识库中的缺陷特征是否匹配;若是,则确定所述IaC文件存在安全问题;若否,则确定所述IaC文件不存在安全问题。

所述缺陷特征包括以下至少一种:数据库加密、存储桶的权限控制、未加密的通信、访问控制、容器权限管理、硬编码密码、日志管理、合规性最佳实践,以及CWE、OWASAPTOP 10、PCIDSS、CWE/SANS TOP 24、CIS K8s基线的安全标准。

建议模块45,用于当检测出所述IaC文件存在安全问题时,从问题项与修复建议的对应关系中查找出使所述IaC文件存在安全问题的问题项对应的修复建议;输出所述IaC文件的修复建议。

这里需要指出的是,以上系统实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请系统实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

基于同一发明构思,本申请实施例还提供了一种电子设备。图5为本申请实施例中电子设备的结构示意图,参见图5所示,该电子设备可以包括:处理器51、存储器52、总线53;其中,处理器51、存储器52通过总线53完成相互间的通信;处理器51用于调用存储器52中的程序指令,以执行上述一个或多个实施例中的方法。

这里需要指出的是,以上电子设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请电子设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

基于同一发明构思,本申请实施例还提供了一种计算机可读存储介质,该存储介质可以包括:存储的程序;其中,在程序运行时控制存储介质所在设备执行上述一个或多个实施例中的方法。

这里需要指出的是,以上存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种高纯乙炔的精制方法
  • 一种工业乙炔纯化为高纯乙炔的装置及提纯方法
技术分类

06120116566292