開發與維運

雲效DevOps實踐-代碼掃描

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

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

那麼福利來了,點擊直達雲效分論壇,直達9.18雲棲大會雲效分會場,即可免費領取雲效AI研發助手。
圖片.gif
用戶的訴求或問題
編碼不規範:開發者專業度有限,特別是依賴外包團隊的情況,業務代碼通常沒有通過細緻的設計,也很難保證兼容性和擴展性,存在隱藏的缺陷和故障風險;
敏感數據洩露:開發者缺乏安全意識,企業的敏感信息直接編寫到代碼中,可能造成敏感信息的外流,進而使得不法分子有機可乘,造成企業損失;
依賴項存在安全漏洞:代碼中免不了引入二方或三方的依賴包,特別是引入開源依賴包的場景下,很可能自身代碼保護周全,但是依賴的代碼存在安全漏洞,使得不法分子可以通過這些漏洞發起攻擊;
代碼優化:開發者編寫了代碼,期望能夠得到專業的代碼優化建議;

雲效代碼掃描解決方案
啟用服務
雲效代碼管理內置了多種掃描服務,為了保證每次提交都能及時的獲取掃描結果,建議在創建代碼庫後,立即前往代碼庫「設置」-「集成與服務」開啟自動化掃描服務。
image-10.png
點擊期望開啟服務右側的開關,確認授權後服務成功啟用。
image-11.png
啟用時可以選擇觸發方式:提交觸發或合併請求觸發,部分服務僅支持一種觸發方式。
「提交觸發」在每次提交後,將自動觸發相關分支的全量掃描,即掃描分支下的所有內容;
「合併請求觸發」在創建或更新合併請求後,將自動觸發源/目標分支的增量掃描,即掃描源/目標分支變更的內容(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: 低危漏洞;

提交代碼執行檢測
為了保證代碼問題不被引入生產環境,越早進行檢查,引入的風險越小。因此,建議能夠在每次提交時都進行代碼檢測,從起點發現並扼殺問題,保障後續應用研發流程的穩定性。
開啟檢測服務時,勾選觸發方式的「代碼提交觸發掃描」,如圖①:
image-12.png
此後庫內的每次提交都會自動執行對應的自動化檢測,檢測當前新提交的所有文件,可在源文件或提交頁面查看檢測結果:
image-13.png
image-14.png
可點擊檢測服務展開問題詳情查看,Blocker 級別的問題建議立即解決,這類問題容易引起故障或安全漏洞:
image-15.png
合併請求執行檢測
開啟檢測服務時,勾選觸發方式的「合併請求觸發掃描」,如圖②:
image-16.png
此後庫內的每次創建合併請求或合併請求源分支有新提交,都會針對變更文件自動執行對應的自動化檢測,保證新增期望合併至目標分支的代碼質量和安全。

可在合併請求列表和詳情頁面查看檢測結果:
image-17.png
image-18.png
點擊合併請求詳情的檢測結果詳情,可以跳轉代碼行內查看具體問題代碼:
image-19.png
安全檢測
針對安全類問題,通常需要統計或追溯歷史,因此雲效代碼庫中提供了專門的安全模塊,用於承載檢測出的全部問題,並記錄了已解決的歷史數據。
若未開啟過安全類檢測服務,可以通過安全模塊前往代碼庫設置-「集成與服務」中開啟。
image-20.png
開啟後,可以在當前頁查看各分支檢測出的安全問題:
image-21.png
同樣,可點擊問題名稱查看詳情和推薦的解決方案:
image-22.png

TIPS:針對敏感信息檢測,若部分文件希望跳過掃描,可以使用文件白名單的功能,白名單內的文件將不被檢測:
image-23.png
總結
將測試左移,對每次提交和合並進行自動化檢測,保證存量和新增代碼的質量和安全,能夠有效的提升研發效率,助力企業更好的實現業務價值。

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

Leave a Reply

Your email address will not be published. Required fields are marked *