+我們?yōu)槭裁撮_發(fā)KICS?
云原生的出現(xiàn)致使現(xiàn)代應用的設計、開發(fā)和部署方式的觀念徹底發(fā)生改變。最終,單體應用被分解成小型、獨立的微服務,且不受所處的環(huán)境約束。Orchestration將它們粘合在一起,使應用程序變得更可擴展、更可靠、更靈活。
就此而論,Orchestration不僅涉及微服務通信或組成的方式,還涉及基礎架構需求或特定配置。雖然在不久之前,基礎架構和配置主要通過人工提供,但隨著DevOps理念的出現(xiàn),自動化現(xiàn)在已經普及并在代碼中定義。因此,基礎架構即代碼(IaC)時代已經來臨。
IaC通過工具和技術建立了一種方法,用于通過代碼進行基礎架構配置和提供服務?;A架構即代碼的優(yōu)點包括:自動化、冪等性(例如,復制用于測試和生產的基礎架構)、一致性、自文檔化、降低成本等。然而,與傳統(tǒng)的軟件開發(fā)類似,基礎架構即代碼也容易出現(xiàn)錯誤配置或安全漏洞等問題,這些問題不僅可能危及某一特定的應用程序,還可能在更大范圍內危及整個業(yè)務及其底層基礎架構。
引入KICS(保持基礎架構即代碼安全):這是一個由Checkmarx(靜態(tài)代碼分析領域的市場領導者)提供的開源獨立引擎,用于在本地云應用的環(huán)境中檢測源自基礎架構即代碼的漏洞、合規(guī)問題或錯誤配置。截至發(fā)布之日,KICS已提供1000多條安全規(guī)則(用Cx語言查詢),支持Terraform、Kubernetes、Docker、AWSCloudFormation和Ansible,跨越多個云提供商(如AWS、谷歌云或微軟Azure)。
+我們如何開發(fā)KICS?
起初,KICS僅有50個查詢,沉寂在一個私有存儲庫中,并作為一個獨立的引擎存在。當時,引擎只能讀取少量的IaC文件類型,將它們轉換為內部展現(xiàn)形式,并以JSON格式生成結果。
為了讓KICS成為一個產品,Checkmarx制定了一個雄心勃勃的目標,即在不到三個月的時間內達到1000個REGO/OPA查詢,并在不到兩個月的時間內使其完全開源化。
KICS規(guī)則-使用REGO創(chuàng)建超1000條規(guī)則
兩周內,Checkmarx招募了一批學生人才加入團隊,并專注于創(chuàng)建更多使用REGO開發(fā)的規(guī)則。
REGO/OPA是一種用于查詢結構化文檔的高級說明性語言。因此,我們選擇它作為獲取IaC掃描規(guī)則的方法。學生們很快學會了使用REGO進行開發(fā),并在不到一周的培訓內,按照Checkmarx應用安全研究團隊提供的建議漏洞列表和描述編寫出規(guī)則和IaC樣本(每項查詢一個真正樣本和一個真負樣本)。
”創(chuàng)建1000條規(guī)則的目標是一個重大挑戰(zhàn)。我們調整了我們的流程與設計,并創(chuàng)建了可重用的存儲庫,以避免在我們的REGO代碼中復制。
有意思的是,完成這些工作后,難題就變成了代碼合并請求批準,而不是開發(fā)本身。到最后的截止時間時,團隊不僅達到了1000個查詢的里程碑,并超過了這個里程碑(大約1200個)。
KICS核心–開源查詢
核心團隊最初的重點在使KICS完全開源化。
經過本項目開源軟件顧問LiorKaplan的密切監(jiān)督,并根據他提出的寶貴建議,Checkmarx打破了對于私有存儲庫的依賴性,重寫了更合適的commit歷史記錄,并根據Apache2.0許可將其移到了公有GitHub存儲庫中。詳解:
https://github.com/Checkmarx/kics
在這個過程期間,Checkmarx利用GitHubActions搭建了CI流水線,將所有KICS的基礎架構保持在GitHub環(huán)境中。很快,按照代碼合并請求在流水線中運行一系列的驗證。它解決了幾個質量方面問題:
”代碼測試覆蓋率(使用Codecov)
”代碼質量(使用SonarCloud和Codacy)
”代碼安全性(通過KICSGitHubaction使用Checkmarx提供的CxSAST和我們自己的KICS)
所有這些驗證都出奇地快,只花費大約一分鐘,這是在每次成功的”代碼合并請求”之后讓KICS準備發(fā)布的時間。
只要質量等級在每個CI步驟中通過,KICS就可以隨時發(fā)布。遵循開源的最佳實踐,我們產生了:
”一次夜間發(fā)布,使用相應commit的哈希值來命名。
”每兩周發(fā)布一次官方版本,使用SemVer標準。
每次KICS發(fā)布包括裸源、Windows、Linux和MacOS二進制文件,以及一個docker鏡像,詳見DockerHub。
KICS文檔–共享財富
KICS擁有一個強大的核心功能,其能夠分析多種類型的IaC文件,并且有數(shù)千條安全規(guī)則,持續(xù)每兩周發(fā)布一次。
為此,Checkmarx建造了一個網站(https://kics.io/),并將其存儲在AWS中。但這只是漂亮的登錄頁。文檔站點是根據markdown文件通過MkDocs動態(tài)生成的,詳見GitHub頁面。(
https://hub.docker.com/r/checkmarx/kics)
Checkmarx試圖使KICS文檔盡可能清晰易懂,包含本項目的所有內容,包括路線圖,以及使用或貢獻方法說明。此外,我們還使用Gitter建立了一個KICS社區(qū)。一些人開始對外評論,提出問題,并立即提供反饋。
KICS管理–敏捷、規(guī)范化
團隊遵循看板管理法以敏捷的方式開展工作。以這種方式管理工作變得很容易,因為可以輕而易舉地利用GitHub的集成管理功能。
Checkmarx將工作劃分為小項目并為此劃定了目標,以便更好地組織要處理的問題和請求。每個開放的問題運用標簽,以便于理解它們的本質:漏洞、特性、安全性、查詢、增強等等。
為了指導和更好地管理KICS用戶的貢獻,Checkmarx為漏洞、特性、新查詢和代碼合并請求定義了模板。有了模板,我們能獲取重要的信息,并最終標準化描述工作的質量。
總體而言,KICS是一個由架構師、開發(fā)人員、DevOps和經理組成的多學科團隊。目前已有一些關注者給予KICS更多的貢獻、反饋等。Checkmarx期待聽到更多使用者的聲音!
在此,誠邀您使用Checkmarx的產品!免費下載KICS并向我們提供反饋意見【掃碼下方二維碼馬上參與】,前30位最詳細的反饋意見提供者將獲得1000元京東代金券!
此外,3月30日北京時間下午4-5點,Checkmarx將在線上直播演示KICS【掃碼下方二維碼馬上參與】,并在線進行答疑!我們在此誠邀您的參與!