天天看點

雲效DevOps實踐-代碼掃描

當代企業,離不開軟體技術。軟體是工程師編寫的,難免可能存在品質或安全問題,這些問題可能在生産環境中引發嚴重的故障,直接造成企業的經濟損失和信任危機。

為了将風險降至最低,建議在編碼過程中啟用一系列的自動化掃描服務,盡早的發現問題,将風險扼殺在搖籃中。

那麼福利來了,點選

連結文字

,直達9.18雲栖大會雲效分會場,即可免費領取雲效AI研發助手。

雲效DevOps實踐-代碼掃描

使用者的訴求或問題

編碼不規範:開發者專業度有限,特别是依賴外包團隊的情況,業務代碼通常沒有通過細緻的設計,也很難保證相容性和擴充性,存在隐藏的缺陷和故障風險;

敏感資料洩露:開發者缺乏安全意識,企業的敏感資訊直接編寫到代碼中,可能造成敏感資訊的外流,進而使得不法分子有機可乘,造成企業損失;

依賴項存在安全漏洞:代碼中免不了引入二方或三方的依賴包,特别是引入開源依賴包的場景下,很可能自身代碼保護周全,但是依賴的代碼存在安全漏洞,使得不法分子可以通過這些漏洞發起攻擊;

代碼優化:開發者編寫了代碼,期望能夠得到專業的代碼優化建議;

雲效代碼掃描解決方案

啟用服務

雲效代碼管理内置了多種掃描服務,為了保證每次送出都能及時的擷取掃描結果,建議在建立代碼庫後,立即前往代碼庫「設定」-「內建與服務」開啟自動化掃描服務。

雲效DevOps實踐-代碼掃描

點選期望開啟服務右側的開關,确認授權後服務成功啟用。

雲效DevOps實踐-代碼掃描

啟用時可以選擇觸發方式:送出觸發或合并請求觸發,部分服務僅支援一種觸發方式。

「送出觸發」在每次送出後,将自動觸發相關分支的全量掃描,即掃描分支下的所有内容;

「合并請求觸發」在建立或更新合并請求後,将自動觸發源/目标分支的增量掃描,即掃描源/目标分支變更的内容(Diff);

如不再使用掃描服務,點選服務右側開關關閉即可。

接下來依次介紹上述四種掃描服務。

代碼品質——Java 開發規約

《阿裡巴巴 Java 開發手冊》是阿裡内部 Java 工程師所遵循的開發規範,涵蓋程式設計規約、單元測試規約、異常日志規約、MySQL 規約、工程規約、安全規約等,這是近萬名阿裡 Java 技術精英的經驗總結,并經曆了多次大規模一線實戰檢驗及完善。根據限制力強弱,規約依次分為強制、推薦、參考三大類:

【強制】必須遵守。是不得不遵守的約定,違反本約定或将引起嚴重的後果。

【推薦】盡量遵守。長期遵守這樣的規則,有助于系統穩定性和合作效率的提示。

【參考】充分了解。技術意識的引導,是個人學習、團隊溝通、項目合作的方向。

Java 代碼規約掃描使用《阿裡巴巴 Java 開發規約》插件掃描 Java 規約問題。

代碼品質——代碼更新檔智能推薦

缺陷檢測和更新檔推薦幾十年來一直是軟體工程領域的難題,又是研究者和一線開發者最為關心的問題之一,這裡講的缺陷不是網絡漏洞、系統缺陷,而是隐藏在代碼中的缺陷。幫助開發者識别這些缺陷,并進行修複,能夠大幅提升軟體品質。

基于業界和學術界較為流行的缺陷檢測手段,并分析和規避其局限性,雲效代碼管理的算法工程師們提出了一種新的算法,實作更加精準和高效的分析代碼缺陷并推薦優化方案,該算法已被國際軟體工程大會(ICSE)收錄。

代碼更新檔推薦服務目前應用于合并請求的代碼自動掃描場景,掃描輸出優化推薦方案,問題等級僅包含 MAJOR 類型:建議修複的代碼缺陷。

代碼安全——敏感資訊檢測

敏感資訊檢測功能,可以檢測代碼庫中的敏感憑證和密鑰,比如 API keys 等資訊。內建在合并請求代碼評審階段,可以有效防止敏感資訊意外送出。

敏感資訊問題等級分為:BLOCKER, CRITICAL, MAJOR

BLOCKER: 通過規則掃描出來的可能性很高的明文問題 ;

CRITICAL: 通過資訊熵模型得出的可能性較高的潛在問題;

MAJOR: 用于測試的敏感資訊字段;

代碼安全——依賴包漏洞檢測

為了杜絕安全隐患,企業需要做到以下三點:

了解工程都使用了哪些依賴包;

删除不需要的依賴包;

檢測并修複目前依賴的已知漏洞;

依賴包漏洞檢測服務幫助企業友善的檢查其工程依賴包的安全性。

依賴包漏洞等級分為:BLOCKER, CRITICAL, MAJOR,等級劃分根據 NVD 國家漏洞資料庫CVSS 分數評估制定。

BLOCKER: 高危漏洞,建議立即修複;

CRITICAL: 中危漏洞,建議盡快修複;

MAJOR: 低危漏洞;

送出代碼執行檢測

為了保證代碼問題不被引入生産環境,越早進行檢查,引入的風險越小。是以,建議能夠在每次送出時都進行代碼檢測,從起點發現并扼殺問題,保障後續應用研發流程的穩定性。

開啟檢測服務時,勾選觸發方式的「代碼送出觸發掃描」,如圖①:

雲效DevOps實踐-代碼掃描

此後庫内的每次送出都會自動執行對應的自動化檢測,檢測目前新送出的所有檔案,可在源檔案或送出頁面檢視檢測結果:

雲效DevOps實踐-代碼掃描
雲效DevOps實踐-代碼掃描

可點選檢測服務展開問題詳情檢視,Blocker 級别的問題建議立即解決,這類問題容易引起故障或安全漏洞:

雲效DevOps實踐-代碼掃描

合并請求執行檢測

開啟檢測服務時,勾選觸發方式的「合并請求觸發掃描」,如圖②:

雲效DevOps實踐-代碼掃描

此後庫内的每次建立合并請求或合并請求源分支有新送出,都會針對變更檔案自動執行對應的自動化檢測,保證新增期望合并至目标分支的代碼品質和安全。

可在合并請求清單和詳情頁面檢視檢測結果:

雲效DevOps實踐-代碼掃描
雲效DevOps實踐-代碼掃描

點選合并請求詳情的檢測結果詳情,可以跳轉代碼行内檢視具體問題代碼:

雲效DevOps實踐-代碼掃描

安全檢測

針對安全類問題,通常需要統計或追溯曆史,是以雲效代碼庫中提供了專門的安全子產品,用于承載檢測出的全部問題,并記錄了已解決的曆史資料。

若未開啟過安全類檢測服務,可以通過安全子產品前往代碼庫設定-「內建與服務」中開啟。

雲效DevOps實踐-代碼掃描

開啟後,可以在目前頁檢視各分支檢測出的安全問題:

雲效DevOps實踐-代碼掃描

同樣,可點選問題名稱檢視詳情和推薦的解決方案:

雲效DevOps實踐-代碼掃描

TIPS:針對敏感資訊檢測,若部分檔案希望跳過掃描,可以使用檔案白名單的功能,白名單内的檔案将不被檢測:

雲效DevOps實踐-代碼掃描

總結

将測試左移,對每次送出和合并進行自動化檢測,保證存量和新增代碼的品質和安全,能夠有效的提升研發效率,助力企業更好的實作業務價值。

點選連結:

直達會場訂閱雲栖大會雲效分會場,也可加入釘群:34543530,更多幹貨等你探索,9.18,13:00,不見不散!