今天在公司的 Azure DevOps Services 組織加入了一個 Mend Bolt 擴充套件,這套免費工具可以掃描原始碼中所使用到的開放原始碼套件,告訴你哪些套件的版本有弱點、該升級到什麼版本、還會跟你說哪些套件的授權有風險,這些功能提供的資訊對提升軟體專案的安全性很有幫助,這篇文章我就來介紹這個工具。
其實 Mend Bolt 的前身是 WhiteSource Bolt,可以算是 WhiteSource Bolt v2 的新版本,如果你曾經安裝過 WhiteSource Bolt 的人應該知道他有個每日只能掃描 5 次的免費額度上限,但 Mend Bolt 並沒有這個限制!👍
簡介 Mend Bolt 擴充套件
Mend Bolt 是一套免費的擴充套件,支援 GitHub 與 Azure Pipelines 兩大 CI/CD 平台,可以掃描您的所有專案,檢測開放原始碼元件與其授權(License)和已知漏洞。
這套工具的支援度涵蓋大多數常見的程式語言,並持續追踪多個開放原始碼漏洞資料庫,如 NVD、安全公告(security advisories)、同行評審的漏洞資料庫(peer-reviewed vulnerability databases)以及知名的開放原始碼專案議題追蹤。它會即時警告你有關易受攻擊且過時的開放原始碼元件,並提供全面的最新版本清單、授權和安全報告。
他還會幫你檢測這些第三方相依套件的授權合規性(license compliance),並根據開放原始碼盡職調查報告(due diligence reports)的要求,提供其授權的參考連結。除了全面詳細的報告,包括所有相依套件的授權外,它還提供了按建置分佈的開放原始碼授權摘要。
安裝 Mend Bolt 擴充套件
安裝之前有幾個要件必須符合:
- 你的 Azure DevOps 組織必須連接 Azure Active Directory (Azure AD)
- 如果你要跑在 Self-hosted build agent 的話,他不支援跑在 Proxy 模式下
- 在 Build agent 上面必須先裝好套件管理器(Package Manager)
安裝的過程就跟安裝其他 Azure DevOps 擴充套件一樣:
- 開啟 Mend Bolt 擴充套件網頁
- 按下 Get it free 按鈕,並照著畫面指引安裝完成即可
啟用 Mend Bolt 擴充套件
由於使用 Mend Bolt 之前,必須先經過一個啟用的流程,留下你的基本資料才能開始使用。
- 進入 Azure DevOps 的組織設定(Organization Settings)
- 從左側選單捲到最下方,可以看到一個 Extensions 分類,底下有個 Mend 項目,點擊開啟網頁
- 開啟網頁後,只要輸入一些基本聯絡方式,按下 Create Account 按鈕後就可以開始使用 Mend Bolt 了!
新增 Mend Bolt task 到傳統編輯器(Classic Editor)
使用 Azure Pipelines 內建的 Classic Editor 來編輯 Pipelines 的話,可以參考以下步驟:
-
在 Agent job 點擊 + 號,搜尋 Mend
關鍵字,找到 Mend Bolt (formerly WhiteSource)
項目,按下 Add 加入
注意: 你在搜尋 Mend
的時候,應該會看到另一個 Mend for Azure DevOps (formerly WhiteSource) 擴充套件,這個是專門提供給「付費版」的 Mend 用戶使用的,支援 Azure DevOps Server 安裝!
-
設定 Mend Bolt 參數
基本上,需要設定的地方大概只有三個:
Root working directory
請指向你的原始碼根目錄,在 Azure Pipelines 預設就是 $(System.DefaultWorkingDirectory)
預先定義變數。
Project name
請設定一組唯一的專案名稱,隨便設定什麼都可以,我是設定成 Pipelines 的名稱,而不設定也是可以的。
Scan report timeout (minutes)
則設定掃描報告的逾期時間,預設值 10 分鐘應該夠久了,除非你的專案真的很大才需要調整。
新增 Mend Bolt task 到 YAML 定義檔
你若使用 YAML 來定義 Pipelines 的話,可以使用以下 Task 定義:
- task: mend@21
inputs:
cwd: '$(System.DefaultWorkingDirectory)'
查看 Mend Bolt 報告
我們每次 Run pipeline 之後,會得到一個 Run 的結果,在結果頁面中會出現一個 Mend Bolt
頁籤,點擊進去就可以看掃描報告!
注意: 每次執行 Mend Bolt
task 都會把報告結果上傳到 Mend 的伺服器,所以看報告的時候其實需要連到外網!
注意事項
- 每個 Azure Pipelines 中的 Build Definition 只能有一個
WhiteSource (Mend Bolt)
的 task,不能設定多個,否則他只會顯示其中一份報告而已。
- 執行
Mend Bolt
task 的時候,若遇到 package.json
會進行 npm install
安裝動作,建議可以把 Mend Bolt
task 移到 npm install
這個 task 之後執行,這樣執行速度會比較快。
相關連結