+我們?yōu)槭裁撮_發(fā)KICS?

  云原生的出現(xiàn)致使現(xiàn)代應(yīng)用的設(shè)計(jì)、開發(fā)和部署方式的觀念徹底發(fā)生改變。最終,單體應(yīng)用被分解成小型、獨(dú)立的微服務(wù),且不受所處的環(huán)境約束。Orchestration將它們粘合在一起,使應(yīng)用程序變得更可擴(kuò)展、更可靠、更靈活。

  就此而論,Orchestration不僅涉及微服務(wù)通信或組成的方式,還涉及基礎(chǔ)架構(gòu)需求或特定配置。雖然在不久之前,基礎(chǔ)架構(gòu)和配置主要通過人工提供,但隨著DevOps理念的出現(xiàn),自動化現(xiàn)在已經(jīng)普及并在代碼中定義。因此,基礎(chǔ)架構(gòu)即代碼(IaC)時(shí)代已經(jīng)來臨。

Checkmarx發(fā)布靜態(tài)分析開源解決方案KICS

  IaC通過工具和技術(shù)建立了一種方法,用于通過代碼進(jìn)行基礎(chǔ)架構(gòu)配置和提供服務(wù)?;A(chǔ)架構(gòu)即代碼的優(yōu)點(diǎn)包括:自動化、冪等性(例如,復(fù)制用于測試和生產(chǎn)的基礎(chǔ)架構(gòu))、一致性、自文檔化、降低成本等。然而,與傳統(tǒng)的軟件開發(fā)類似,基礎(chǔ)架構(gòu)即代碼也容易出現(xiàn)錯誤配置或安全漏洞等問題,這些問題不僅可能危及某一特定的應(yīng)用程序,還可能在更大范圍內(nèi)危及整個(gè)業(yè)務(wù)及其底層基礎(chǔ)架構(gòu)。

Checkmarx發(fā)布靜態(tài)分析開源解決方案KICS

  引入KICS(保持基礎(chǔ)架構(gòu)即代碼安全):這是一個(gè)由Checkmarx(靜態(tài)代碼分析領(lǐng)域的市場領(lǐng)導(dǎo)者)提供的開源獨(dú)立引擎,用于在本地云應(yīng)用的環(huán)境中檢測源自基礎(chǔ)架構(gòu)即代碼的漏洞、合規(guī)問題或錯誤配置。截至發(fā)布之日,KICS已提供1000多條安全規(guī)則(用Cx語言查詢),支持Terraform、Kubernetes、Docker、AWSCloudFormation和Ansible,跨越多個(gè)云提供商(如AWS、谷歌云或微軟Azure)。

  +我們?nèi)绾伍_發(fā)KICS?

  起初,KICS僅有50個(gè)查詢,沉寂在一個(gè)私有存儲庫中,并作為一個(gè)獨(dú)立的引擎存在。當(dāng)時(shí),引擎只能讀取少量的IaC文件類型,將它們轉(zhuǎn)換為內(nèi)部展現(xiàn)形式,并以JSON格式生成結(jié)果。

  為了讓KICS成為一個(gè)產(chǎn)品,Checkmarx制定了一個(gè)雄心勃勃的目標(biāo),即在不到三個(gè)月的時(shí)間內(nèi)達(dá)到1000個(gè)REGO/OPA查詢,并在不到兩個(gè)月的時(shí)間內(nèi)使其完全開源化。

  KICS規(guī)則-使用REGO創(chuàng)建超1000條規(guī)則

  兩周內(nèi),Checkmarx招募了一批學(xué)生人才加入團(tuán)隊(duì),并專注于創(chuàng)建更多使用REGO開發(fā)的規(guī)則。

  REGO/OPA是一種用于查詢結(jié)構(gòu)化文檔的高級說明性語言。因此,我們選擇它作為獲取IaC掃描規(guī)則的方法。學(xué)生們很快學(xué)會了使用REGO進(jìn)行開發(fā),并在不到一周的培訓(xùn)內(nèi),按照Checkmarx應(yīng)用安全研究團(tuán)隊(duì)提供的建議漏洞列表和描述編寫出規(guī)則和IaC樣本(每項(xiàng)查詢一個(gè)真正樣本和一個(gè)真負(fù)樣本)。

  ”創(chuàng)建1000條規(guī)則的目標(biāo)是一個(gè)重大挑戰(zhàn)。我們調(diào)整了我們的流程與設(shè)計(jì),并創(chuàng)建了可重用的存儲庫,以避免在我們的REGO代碼中復(fù)制。

  有意思的是,完成這些工作后,難題就變成了代碼合并請求批準(zhǔn),而不是開發(fā)本身。到最后的截止時(shí)間時(shí),團(tuán)隊(duì)不僅達(dá)到了1000個(gè)查詢的里程碑,并超過了這個(gè)里程碑(大約1200個(gè))。

  KICS核心–開源查詢

  核心團(tuán)隊(duì)最初的重點(diǎn)在使KICS完全開源化。

  經(jīng)過本項(xiàng)目開源軟件顧問LiorKaplan的密切監(jiān)督,并根據(jù)他提出的寶貴建議,Checkmarx打破了對于私有存儲庫的依賴性,重寫了更合適的commit歷史記錄,并根據(jù)Apache2.0許可將其移到了公有GitHub存儲庫中。詳解:
https://github.com/Checkmarx/kics  

  在這個(gè)過程期間,Checkmarx利用GitHubActions搭建了CI流水線,將所有KICS的基礎(chǔ)架構(gòu)保持在GitHub環(huán)境中。很快,按照代碼合并請求在流水線中運(yùn)行一系列的驗(yàn)證。它解決了幾個(gè)質(zhì)量方面問題:

  ”代碼測試覆蓋率(使用Codecov)

  ”代碼質(zhì)量(使用SonarCloud和Codacy)

  ”代碼安全性(通過KICSGitHubaction使用Checkmarx提供的CxSAST和我們自己的KICS)

  所有這些驗(yàn)證都出奇地快,只花費(fèi)大約一分鐘,這是在每次成功的”代碼合并請求”之后讓KICS準(zhǔn)備發(fā)布的時(shí)間。

  只要質(zhì)量等級在每個(gè)CI步驟中通過,KICS就可以隨時(shí)發(fā)布。遵循開源的最佳實(shí)踐,我們產(chǎn)生了:

  ”一次夜間發(fā)布,使用相應(yīng)commit的哈希值來命名。

  ”每兩周發(fā)布一次官方版本,使用SemVer標(biāo)準(zhǔn)。

  每次KICS發(fā)布包括裸源、Windows、Linux和MacOS二進(jìn)制文件,以及一個(gè)docker鏡像,詳見DockerHub。

  KICS文檔–共享財(cái)富

  KICS擁有一個(gè)強(qiáng)大的核心功能,其能夠分析多種類型的IaC文件,并且有數(shù)千條安全規(guī)則,持續(xù)每兩周發(fā)布一次。

  為此,Checkmarx建造了一個(gè)網(wǎng)站(https://kics.io/),并將其存儲在AWS中。但這只是漂亮的登錄頁。文檔站點(diǎn)是根據(jù)markdown文件通過MkDocs動態(tài)生成的,詳見GitHub頁面。(
https://hub.docker.com/r/checkmarx/kics)

  Checkmarx試圖使KICS文檔盡可能清晰易懂,包含本項(xiàng)目的所有內(nèi)容,包括路線圖,以及使用或貢獻(xiàn)方法說明。此外,我們還使用Gitter建立了一個(gè)KICS社區(qū)。一些人開始對外評論,提出問題,并立即提供反饋。

  KICS管理–敏捷、規(guī)范化

  團(tuán)隊(duì)遵循看板管理法以敏捷的方式開展工作。以這種方式管理工作變得很容易,因?yàn)榭梢暂p而易舉地利用GitHub的集成管理功能。

  Checkmarx將工作劃分為小項(xiàng)目并為此劃定了目標(biāo),以便更好地組織要處理的問題和請求。每個(gè)開放的問題運(yùn)用標(biāo)簽,以便于理解它們的本質(zhì):漏洞、特性、安全性、查詢、增強(qiáng)等等。

  為了指導(dǎo)和更好地管理KICS用戶的貢獻(xiàn),Checkmarx為漏洞、特性、新查詢和代碼合并請求定義了模板。有了模板,我們能獲取重要的信息,并最終標(biāo)準(zhǔn)化描述工作的質(zhì)量。

Checkmarx發(fā)布靜態(tài)分析開源解決方案KICS

  總體而言,KICS是一個(gè)由架構(gòu)師、開發(fā)人員、DevOps和經(jīng)理組成的多學(xué)科團(tuán)隊(duì)。目前已有一些關(guān)注者給予KICS更多的貢獻(xiàn)、反饋等。Checkmarx期待聽到更多使用者的聲音!

  在此,誠邀您使用Checkmarx的產(chǎn)品!免費(fèi)下載KICS并向我們提供反饋意見【掃碼下方二維碼馬上參與】,前30位最詳細(xì)的反饋意見提供者將獲得1000元京東代金券!

Checkmarx發(fā)布靜態(tài)分析開源解決方案KICS

  此外,3月30日北京時(shí)間下午4-5點(diǎn),Checkmarx將在線上直播演示KICS【掃碼下方二維碼馬上參與】,并在線進(jìn)行答疑!我們在此誠邀您的參與!

Checkmarx發(fā)布靜態(tài)分析開源解決方案KICS
分享到

zhangnn

相關(guān)推薦