The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 Mend Bolt 分析專案使用的開源套件安全性與授權合規性

今天在公司的 Azure DevOps Services 組織加入了一個 Mend Bolt 擴充套件,這套免費工具可以掃描原始碼中所使用到的開放原始碼套件,告訴你哪些套件的版本有弱點、該升級到什麼版本、還會跟你說哪些套件的授權有風險,這些功能提供的資訊對提升軟體專案的安全性很有幫助,這篇文章我就來介紹這個工具。

Mend Bolt (formerly WhiteSource)

其實 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)以及知名的開放原始碼專案議題追蹤。它會即時警告你有關易受攻擊且過時的開放原始碼元件,並提供全面的最新版本清單、授權和安全報告。

Open Source Risk Report

他還會幫你檢測這些第三方相依套件的授權合規性(license compliance),並根據開放原始碼盡職調查報告(due diligence reports)的要求,提供其授權的參考連結。除了全面詳細的報告,包括所有相依套件的授權外,它還提供了按建置分佈的開放原始碼授權摘要。

License risks

安裝 Mend Bolt 擴充套件

安裝之前有幾個要件必須符合:

  1. 你的 Azure DevOps 組織必須連接 Azure Active Directory (Azure AD)
  2. 如果你要跑在 Self-hosted build agent 的話,他不支援跑在 Proxy 模式下
  3. 在 Build agent 上面必須先裝好套件管理器(Package Manager)

安裝的過程就跟安裝其他 Azure DevOps 擴充套件一樣:

  1. 開啟 Mend Bolt 擴充套件網頁
  2. 按下 Get it free 按鈕,並照著畫面指引安裝完成即可

啟用 Mend Bolt 擴充套件

由於使用 Mend Bolt 之前,必須先經過一個啟用的流程,留下你的基本資料才能開始使用。

  1. 進入 Azure DevOps 的組織設定(Organization Settings)
  2. 從左側選單捲到最下方,可以看到一個 Extensions 分類,底下有個 Mend 項目,點擊開啟網頁
  3. 開啟網頁後,只要輸入一些基本聯絡方式,按下 Create Account 按鈕後就可以開始使用 Mend Bolt 了!

新增 Mend Bolt task 到傳統編輯器(Classic Editor)

使用 Azure Pipelines 內建的 Classic Editor 來編輯 Pipelines 的話,可以參考以下步驟:

  1. 在 Agent job 點擊 + 號,搜尋 Mend 關鍵字,找到 Mend Bolt (formerly WhiteSource) 項目,按下 Add 加入

    image

    注意: 你在搜尋 Mend 的時候,應該會看到另一個 Mend for Azure DevOps (formerly WhiteSource) 擴充套件,這個是專門提供給「付費版」的 Mend 用戶使用的,支援 Azure DevOps Server 安裝!

    image

  2. 設定 Mend Bolt 參數

    基本上,需要設定的地方大概只有三個:

    1. Root working directory 請指向你的原始碼根目錄,在 Azure Pipelines 預設就是 $(System.DefaultWorkingDirectory) 預先定義變數。
    2. Project name 請設定一組唯一的專案名稱,隨便設定什麼都可以,我是設定成 Pipelines 的名稱,而不設定也是可以的。
    3. Scan report timeout (minutes) 則設定掃描報告的逾期時間,預設值 10 分鐘應該夠久了,除非你的專案真的很大才需要調整。

    image

新增 Mend Bolt task 到 YAML 定義檔

你若使用 YAML 來定義 Pipelines 的話,可以使用以下 Task 定義:

- task: mend@21
  inputs:
    cwd: '$(System.DefaultWorkingDirectory)'

查看 Mend Bolt 報告

我們每次 Run pipeline 之後,會得到一個 Run 的結果,在結果頁面中會出現一個 Mend Bolt 頁籤,點擊進去就可以看掃描報告!

Open Source Risk Report

注意: 每次執行 Mend Bolt task 都會把報告結果上傳到 Mend 的伺服器,所以看報告的時候其實需要連到外網!

image

注意事項

  1. 每個 Azure Pipelines 中的 Build Definition 只能有一個 WhiteSource (Mend Bolt) 的 task,不能設定多個,否則他只會顯示其中一份報告而已。
  2. 執行 Mend Bolt task 的時候,若遇到 package.json 會進行 npm install 安裝動作,建議可以把 Mend Bolt task 移到 npm install 這個 task 之後執行,這樣執行速度會比較快。

相關連結

留言評論