iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
DevOps

不僅是程式碼代管平台 - Github 能做些什麼?系列 第 21

GitHub Advanced Security - 程式碼掃描 (Code Scanning)

  • 分享至 

  • xImage
  •  

在前一篇文章GitHub Security - 基本安全相關功能介紹 內文中我們有對於 Repo 內相依功能進行掃描與警告進行說明,在這一篇文章,我們將介紹較為進階的功能 - Code Scanning Alert。一般來說,我們常見多數軟體在進行交付前(甚至交付後)才進行程式碼掃描,因為多數的團隊會認為安全工具的導入會影響開發速度,導致時程延宕,但管理者沒有發現的是在軟體開發流程中,越接近交付前發現安全漏洞並進行修復,耗損的成本越高,更不用說是已經上線的系統,如果安全漏洞被有心人士利用,其損失更是難以估計。倘若能在每一次修改中偵測出漏洞,即時讓開發人員了解可能風險,在開發過程中遵循正確的撰寫方式,即可避免資安問題發生,這也是我們在這系列文章前期提到的安全測試左移。

程式碼掃描是用於分析 GitHub Repo 內程式碼,進而找出安全漏洞與程式碼錯誤,並產生結果在 GitHub 內。你可以設定在 GitHub Action 內,防止開發人員引進新問題;你也可以設定排程,也可以在觸發特定事件時進行掃描。一旦發現安全漏洞,程式碼掃描功能即會提出警告,直到問題修復程式碼為止。

程式碼掃描計費是透過 GitHub Action,執行期間會以分鐘計算,你可以參考 GitHub Actions 基本介紹 - 開始自動化 workflow 的第一步

程式碼掃描提供 CodeQL 與其他第三方掃描工具,可以依據需求選擇

CodeQL 為 GitHub 提供的程式碼分析引擎服務,你可以透過:
CLI: 在外部 CI 系統中運行 CodeQL CLI 並將結果上傳到 GitHub
Action: 在 Repo 內加入 CodeQL Action 至 workflow

Code Scanning 可以對任何 Public Repo 進行設定,若為 Private Repo,則需要啟用 GitHub Advanced Security (Enterprise 版本)


程式碼掃描設定步驟

在 Repo 內點選 Security > Code Scanning Alert > 找到 CodeQL Analysis,點選 Set up this workflow

https://ithelp.ithome.com.tw/upload/images/20210920/200914943SJgtrnnl2.png

我們可以看見自動產生了 CodeQL 範本,若您對於 GitHub Aciton YAML 不熟,可以先閱讀先前的文章:GitHub Action YAML - 語意解析與指令說明。這裡我們專注於 strategy語法設定

fast-fast: 發生錯誤即停止
language: 支援語言,請依據 Repo 內的語言進行設定

    strategy:
      fail-fast: false
      matrix:
        language: [ 'csharp', 'javascript' ]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
        # Learn more:
        # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed

完成後,點選右上角 Start Commit,輸入標題與描述後,點選 Commit new file 即可
https://ithelp.ithome.com.tw/upload/images/20210921/20091494l2WQTY3x6z.png

在 Repo 內點選 Actions > CodeQL,可以看進正在執行分析中
https://ithelp.ithome.com.tw/upload/images/20210921/20091494Bjz0cvv8SM.png

https://ithelp.ithome.com.tw/upload/images/20210921/20091494OFmHS1C4K0.png

執行完成後,你可以看到執行過程 Log
https://ithelp.ithome.com.tw/upload/images/20210921/200914945egl6GGc39.png

回到 Repo > Scurity,可以看見 Code Scanning 有相關報告可以檢視。你可點選任一警告,會詳細告訴您哪一行程式碼有什麼問題。當你修復後,警告訊息即會消失。
https://ithelp.ithome.com.tw/upload/images/20210921/20091494uZTz36GZx8.png

https://ithelp.ithome.com.tw/upload/images/20210921/20091494lCxcif2RBF.png


閱讀完本篇文章,你應該對於 GitHub Advanced Security 內的 Code Scanning 有初步的了解,並且知道其費用、如何設定、執行與檢視報告。比較起其他安全掃描服務,個人覺得設定 GitHub 的 Code Scanning 較為容易也好維護。

若喜歡我的文章,歡迎點 like、分享與訂閱,謝謝


上一篇
GitHub Security - 基本安全相關功能介紹
下一篇
GitHub Advanced Security - 秘密掃描 (Secret Scanning)
系列文
不僅是程式碼代管平台 - Github 能做些什麼?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言