iT邦幫忙

2024 iThome 鐵人賽

DAY 18
1
DevOps

就是工商,為什麼要使用付費版 GitLab?系列 第 18

Day 18:Security 功能 - Pre-build scanning

  • 分享至 

  • xImage
  •  

今天繼續回到 GitLab 的付費功能,我們開始來看一下開發團隊可能會有興趣的功能。就從大家都知道很重要,但不一定都會做的 DevSecOps 功能開始。

在前幾天的歷史回顧中,我們可以看到 GitLab 原廠多年下來陸續收購了多間做 Security 產品的公司,他們被收購之後不僅產品被整合進 GitLab 的 DevOps Lifecycle,連同開發能量也持續灌注在 GitLab 產品開發上。我之前與原廠窗口互動時,他們就經常會大力宣傳 GitLab 的 DevSecOps 功能是很完整的,並且表示 GitLab 的 CP 值比起其他 Security 產品來得划算。

在 GitLab 的多種功能分類方式中,其中一個方式將 Security 功能分為 Pre-build scanning 與 Post-build scanning;今天先來看一下 Pre-build scanning 的部分。

Pre-build scanning 功能

位於 Pre-build scanning 分類下的功能有以下幾個

  1. Secret detection
  2. Static application security testing (SAST)
  3. Infrastructure as code (IaC) scanning
  4. Dependency scanning
  5. License compliance

Secret detection

恭喜啦,Secret detection 是免費功能,你只要在 .gitlab-ci.yml 中加入以下內容,就可以自動在 CI Pipeline 中使用這個功能。

include:
- template: Security/Secret-Detection.gitlab-ci.yml

https://ithelp.ithome.com.tw/upload/images/20241002/20120986e8XipdTBJL.png
(在 CI Pipeline 會多一個 Job 幫你檢查。)

但其實在付費功能 Push rules 中,還有另一個與 Secret 有關的功能——Prevent pushing secret files

Settings > Repository > Push rules 裡面,可以找到下圖的設定,只要啟用它,就能夠自動阻擋工程師將 aws/credentials 或是 /ssh/id_dsa 之類的檔案 git push 到 Repository 中。如果你想要知道 GitLab 目前會阻擋哪些檔案,可以查看原廠文件
https://ithelp.ithome.com.tw/upload/images/20241002/20120986E1Wj4K6YYS.png

Static application security testing (SAST)

再次恭喜!?SAST 也有部分是免費功能,你同樣只要在 .gitlab-ci.yml 加入以下內容就可以在 CI Pipeline 中新增 SAST 的 CI Job。

stages:
- test
include:
- template: Security/SAST.gitlab-ci.yml

GitLab 的 SAST 還有許多 Variables 可以設置,例如加上 Variable SCAN_KUBERNETES_MANIFESTS: true,就可以增加 kubesec-sast 的 CI Job。
https://ithelp.ithome.com.tw/upload/images/20241002/20120986DCabzbaypy.png

既然 GitLab 這麼佛,免費就能使用 SAST 那還有什麼好付費的呢?首先免費的 SAST 只是幫你自動套用開源的 SAST 工具,並且掃描的結果會是一個 .json 檔案,你需要自己去 Job Artifacts 下載它,然後閱讀內容再做後續的處理。

但如同下圖,如果你升級到付費等級 Ultimate,還有真正厲害的 Advanced SAST,以及有更多管理者會喜愛的 Vulnerability ManagementAdvanced Vulnerability Tracking 這種好用的功能,可以更容易的一覽與管理 Vulnerability。
https://ithelp.ithome.com.tw/upload/images/20241002/20120986q5HjxayFms.png
(擷圖來自:gitlab.com)

啟用 Advanced SAST,開發團隊就可以更友善的在 UI 上查看 Vulnerability 發生在哪裡、發生的原因、並且追蹤橫跨多個檔案造成的漏洞,能有效的提升團隊除錯修復的效率。
https://ithelp.ithome.com.tw/upload/images/20241002/20120986PdK8TH2VBb.png
(擷圖來自:https://gitlab.navattic.com/advanced-sast)

Infrastructure as code (IaC) scanning

又要再說一次恭喜,又有免費的掃描可以用!(咦)

老樣子,修改你的 .gitlab-ci.yml,加入以下的內容,即可使用。

include:
  - template: Jobs/SAST-IaC.gitlab-ci.yml

掃出來的結果,也是一個 .json 檔案,因此你還是需要自己去下載並閱讀其中的內容。

目前可以支援掃描以下類型的 IaC 檔案

  • Ansible
  • AWS CloudFormation
  • Azure Resource Manager
  • Dockerfile
  • Google Deployment Manager
  • Kubernetes
  • OpenAPI
  • Terraform

如果你覺得 GitLab 預設的掃描規則不合乎你的情境,這時候就是 Ultimate 付費功能 Customize rules 登場的時刻。只要付錢,你就可以自行取消或覆蓋預設的 rules,舉例來說,如果在你的情境中,有某一條預設 rule 並不會帶來危害,你可以取消檢查它,又或者將它的風險等級調低。

Dependency scanning & License compliance

接下來又是 Ultimate 付費功能。如果你的專案有使用其他人開發的套件,那麼你除了要檢查自己的程式碼,也會需要檢查你使用的相依套件是否已經有被通報安全漏洞。

Vulnerability report 中,會列出來自相依套件的漏洞。
https://ithelp.ithome.com.tw/upload/images/20241002/20120986sObMJ2apWz.png

另外如下圖,在啟用 Dependency scanning 的狀況下,你的 GitLab Project 就會出現 Dependency list 的介面,方便你一覽該專案使用了哪些套件,以及該套件的 License,一覽該專案的 Software Bill of Materials (SBOM)。

https://ithelp.ithome.com.tw/upload/images/20241002/20120986hdqFSTK2u4.png
(由於 License 是對照 Linux Foundation 的 SPDX License List,因此不在該 List 內的套件掃描出來就會是 License unknown。)

現在已經有越來越多的資安攻擊案例是因為 Dependency 導致的,顯然 Dependency scanning 與主動管理 Dependency 的重要性變得越來越重要了。

GitLab 原廠有將 Dependency scanning 功能使用的 Advisory Database 公開一個開源的版本 GitLab Advisory Database Open Source Edition,你可以自由使用它,嘗試用免費的方式去做出自己的 Dependency scanning。

小結

今天我們看了一些跟 Security 有關的掃描功能,大家是否有感受到我在前面的文章提到的狀況,原廠會將 DevOps Lifecycle 中的功能盡可能開放免費使用,讓免費使用者也能體驗完整的 Lifecycle,但如果你希望使用上能更方便,或想要用一些更關鍵的好功能,例如 Dependency scanning,那就必須要付費才行。

今天的文章就到這裡,明天我們再繼續認識 Post-build scanning 的功能,明天見!

https://ithelp.ithome.com.tw/upload/images/20241002/20120986WirvJXHVlF.png
圖片來源 - 吉卜力工作室 https://www.ghibli.jp/works/nausicaa/#&gid=1&pid=26

參考資料


上一篇
Day 17:GitLab 歷史與功能發展 Part6 (2023~2024)
下一篇
Day 19:Security 功能 - Post-build scanning
系列文
就是工商,為什麼要使用付費版 GitLab?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言