+ 我们为什么开发KICS?
云原生的出现致使现代应用的设计、开发和部署方式的观念彻底发生改变。最终,单体应用被分解成小型、独立的微服务,且不受所处的环境约束。Orchestration 将它们粘合在一起,使应用程序变得更可扩展、更可靠、更灵活。
就此而论,Orchestration不仅涉及微服务通信或组成的方式,还涉及基础架构需求或特定配置。虽然在不久之前,基础架构和配置主要通过人工提供,但随着DevOps理念的出现,自动化现在已经普及并在代码中定义。因此,基础架构即代码(IaC)时代已经来临。
IaC通过工具和技术建立了一种方法,用于通过代码进行基础架构配置和提供服务。基础架构即代码的优点包括:自动化、幂等性(例如,复制用于测试和生产的基础架构)、一致性、自文档化、降低成本等。然而,与传统的软件开发类似,基础架构即代码也容易出现错误配置或安全漏洞等问题,这些问题不仅可能危及某一特定的应用程序,还可能在更大范围内危及整个业务及其底层基础架构。
引入KICS(保持基础架构即代码安全):这是一个由Checkmarx(静态代码分析领域的市场领导者)提供的开源独立引擎,用于在本地云应用的环境中检测源自基础架构即代码的漏洞、合规问题或错误配置。截至发布之日,KICS已提供1000多条安全规则(用Cx语言查询),支持Terraform、Kubernetes、Docker、AWS CloudFormation和Ansible,跨越多个云提供商(如AWS、谷歌云或微软Azure)。
+ 我们如何开发KICS?
起初,KICS仅有50个查询,沉寂在一个私有存储库中,并作为一个独立的引擎存在。当时,引擎只能读取少量的IaC文件类型,将它们转换为内部展现形式,并以JSON格式生成结果。
为了让KICS成为一个产品,Checkmarx制定了一个雄心勃勃的目标,即在不到三个月的时间内达到1000个REGO/OPA查询,并在不到两个月的时间内使其完全开源化。
KICS规则—使用REGO创建超1000条规则
两周内,Checkmarx招募了一批学生人才加入团队,并专注于创建更多使用REGO开发的规则。
REGO/OPA是一种用于查询结构化文档的高级说明性语言。因此,我们选择它作为获取IaC扫描规则的方法。学生们很快学会了使用REGO进行开发,并在不到一周的培训内,按照Checkmarx应用安全研究团队提供的建议漏洞列表和描述编写出规则和IaC样本(每项查询一个真正样本和一个真负样本)。
- 创建1000条规则的目标是一个重大挑战。我们调整了我们的流程与设计,并创建了可重用的存储库,以避免在我们的REGO代码中复制。
有意思的是,完成这些工作后,难题就变成了代码合并请求批准,而不是开发本身。到最后的截止时间时,团队不仅达到了1000个查询的里程碑,并超过了这个里程碑(大约1200个)。
KICS核心——开源查询
核心团队最初的重点在使KICS完全开源化。
经过本项目开源软件顾问Lior Kaplan的密切监督,并根据他提出的宝贵建议,Checkmarx打破了对于私有存储库的依赖性,重写了更合适的commit历史记录,并根据Apache 2.0许可将其移到了公有GitHub存储库
https://github.com/Checkmarx/kics 中。
在这个过程期间,Checkmarx利用GitHub Actions搭建了CI流水线,将所有KICS的基础架构保持在GitHub环境中。很快,按照代码合并请求在流水线中运行一系列的验证。它解决了几个质量方面问题:
- 代码测试覆盖率(使用Codecov)
- 代码质量(使用SonarCloud和Codacy)
- 代码安全性(通过KICS GitHub action使用Checkmarx提供的CxSAST和我们自己的KICS)
所有这些验证都出奇地快,只花费大约一分钟,这是在每次成功的“代码合并请求”之后让KICS准备发布的时间。
只要质量等级在每个CI步骤中通过,KICS就可以随时发布。遵循开源的最佳实践,我们产生了:
- 一次夜间发布,使用相应commit的哈希值来命名。
- 每两周发布一次官方版本,使用SemVer标准。
每次KICS发布包括裸源、Windows、Linux和MacOS二进制文件,以及一个docker镜像,详见DockerHub 。
KICS文档——共享财富
KICS拥有一个强大的核心功能,其能够分析多种类型的IaC文件,并且有数千条安全规则,持续每两周发布一次。
为此,Checkmarx建造了一个网站,并将其存储在AWS中。但这只是漂亮的登录页。文档站点是根据markdown文件通过MkDocs动态生成的,详见GitHub页面。
Checkmarx试图使KICS文档尽可能清晰易懂,包含本项目的所有内容,包括路线图,以及使用或贡献方法说明。此外,我们还使用Gitter建立了一个KICS社区。一些人开始对外评论,提出问题,并立即提供反馈。
KICS管理——敏捷、规范化
团队遵循看板管理法以敏捷的方式开展工作。以这种方式管理工作变得很容易,因为可以轻而易举地利用GitHub的集成管理功能。
Checkmarx将工作划分为小项目并为此划定了目标,以便更好地组织要处理的问题和请求。每个开放的问题运用标签,以便于理解它们的本质:漏洞、特性、安全性、查询、增强等等。
为了指导和更好地管理KICS用户的贡献,Checkmarx为漏洞、特性、新查询和代码合并请求定义了模板。有了模板,我们能获取重要的信息,并最终标准化描述工作的质量。
总体而言,KICS是一个由架构师、开发人员、DevOps和经理组成的多学科团队。目前已有一些关注者给予 KICS更多的贡献、反馈等。Checkmarx期待听到更多使用者的声音!
在此,诚邀您使用Checkmarx的产品!免费下载KICS并向我们提供反馈意见,前30位最详细的反馈意见提供者将获得1000 元京东代金券!
此外,3月30日北京时间下午4-5点,Checkmarx将在线上直播演示KICS,并在线进行答疑!我们在此诚邀您的参与!
【责任编辑:张燕妮 TEL:(010)68476606】