如何將 Semgrep 整合到 GitLab Pipeline 以進行 SAST 掃描

閱讀時間約 4 分鐘

CI/CD Pipeline 中,SAST(Static Application Security Testing)是一種重要的安全檢查步驟,可以幫助開發人員及早發現程式碼中的潛在安全漏洞。Semgrep 是一款功能強大的 SAST 工具,可以掃描程式碼並檢查各種安全問題,例如寫死的密碼、SQL Injection。

本文將介紹如何將 Semgrep 整合到 GitLab Pipeline 以進行 SAST 掃描。


整合步驟

  1. 在 Semgrep Cloud Platform 建立 Project。
  2. 建立 Semgrep App Token。(只需要 1 個,讓 GitLab 有權限將掃描結果送到 Semgrep Cloud Platform)
  3. GitLab CI/CD Pipeline 加入以下 Job:
    semgrep:
    image: returntocorp/semgrep
    stage: test
    script: semgrep ci
    rules:
    - if: $CI_PIPELINE_SOURCE == "web" # allow triggering a scan manually from the gitlab UI
    - if: $CI_MERGE_REQUEST_IID # This rule triggers Semgrep if the scan is part of a merge request review process. The $CI_MERGE_REQUEST_IID variable holds the ID of the associated merge request, indicating its involvement.
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # This rule triggers Semgrep if the scan is run on the default branch (likely master or main). The $CI_COMMIT_BRANCH variable specifies the branch where the commit is being pushed, and comparing it to the $CI_DEFAULT_BRANCH variable checks for alignment.
    variables:
    SEMGREP_APP_TOKEN: $SEMGREP_APP_TOKEN
    # To configure MR comments on gitlab.com, see <https://semgrep.dev/docs/semgrep-cloud-platform/gitlab-mr-comments/#enabling-gitlab-merge-request-comments>
    GITLAB_TOKEN: $PAT
  4. 建立 GitLab Access Token,必須要有 api 權限。(Semgrep Cloud Platform 才可以將報告送到 GitLab Merge Request)
  5. 在 GitLab Pipeline 加上 SEMGREP_APP_TOKEN, PAT 變數。
  6. 到 Semgrep Cloud Platform | Rules | Policy,將全部的規則的 Mode 都改為 Comment。
  7. 加上 .semgrepignore,排除不需要掃描的目錄。
    • # Common large paths
      node_modules/
      build/
      dist/
      vendor/
      .env/
      .venv/
      .tox/
      *.min.js
      .npm/
      .yarn/

      # Common test paths
      test/
      tests/
      *_test.go

      # Semgrep rules folder
      .semgrep

      # Semgrep-action log folder
      .semgrep_logs/


使用心得

將 Semgrep 整合到 GitLab Pipeline 後,可以將 SAST 掃描完全整合到開發工作流程中。在 Merge Request 中,開發人員可以直接看到掃描報告,並根據報告中的資訊及早修正程式碼中的安全漏洞。

以下是使用 Semgrep 的一些心得:

  • 整合過程簡單,只需幾個步驟即可完成。
  • 掃描速度快,可以快速發現程式碼中的安全漏洞。
  • 報告詳細,可以幫助開發人員快速理解安全漏洞的風險。


專注於 C#, DevOps 的工程師
留言0
查看全部
發表第一個留言支持創作者!
說明 Dockerfile 的 ENTRYPOINT、CMD 指令。
Docker network 會影響 Container: 是否可以透過網路存取其它的 Container。 是否可以存取網際網路(Internet)。 是否可以存取實體網路(Physical Network)。 Docker bridg
CI/CD Pipeline 是一連串自動化步驟,可以測試軟體,部屬應用程式。但實際上到底要做什麼事情呢?可以從 GitLab 的 Auto DevOps 了解。 Auto Dependency Scanning 掃描第三方函式庫的安全性漏洞。參考下圖: 如果是 .NET 6 可以用以下指令掃描:
Prometheus 提供 PromQL 讓我們對 metrics 查詢,可以查出最近 1 小時內的請求成功率,最近 30 分鐘內的請求延遲等等的資訊,下面用範例說明。 Request Per Second 此範例查詢「每秒的請求數量」,我用 Traefik 當作範例說明。 這幫我們得出以下結果:
API Gateway 是什麼? 參考上圖,API Gateway 是一個程式,位於 Client 和 Microservice 之間。當伺服器架構採用這種設計後,會有以下優點: 架構彈性 - 當伺服器架構需要調整的時候,Client 不需要調整(前提是 API 維持不變)。 IP Listing
我發現從統計學、電子、電腦繪圖的角度來看取樣,在說法上有點不同,但我認為大致上的概念是相同的。 資料實在是「太多了」,沒辦法拿這麼多的資料處理,但我們可以降低資料的數量,但和原本的資料大致上差不多,我們就可以做分析,得到我們想要的結果。 Reference:
說明 Dockerfile 的 ENTRYPOINT、CMD 指令。
Docker network 會影響 Container: 是否可以透過網路存取其它的 Container。 是否可以存取網際網路(Internet)。 是否可以存取實體網路(Physical Network)。 Docker bridg
CI/CD Pipeline 是一連串自動化步驟,可以測試軟體,部屬應用程式。但實際上到底要做什麼事情呢?可以從 GitLab 的 Auto DevOps 了解。 Auto Dependency Scanning 掃描第三方函式庫的安全性漏洞。參考下圖: 如果是 .NET 6 可以用以下指令掃描:
Prometheus 提供 PromQL 讓我們對 metrics 查詢,可以查出最近 1 小時內的請求成功率,最近 30 分鐘內的請求延遲等等的資訊,下面用範例說明。 Request Per Second 此範例查詢「每秒的請求數量」,我用 Traefik 當作範例說明。 這幫我們得出以下結果:
API Gateway 是什麼? 參考上圖,API Gateway 是一個程式,位於 Client 和 Microservice 之間。當伺服器架構採用這種設計後,會有以下優點: 架構彈性 - 當伺服器架構需要調整的時候,Client 不需要調整(前提是 API 維持不變)。 IP Listing
我發現從統計學、電子、電腦繪圖的角度來看取樣,在說法上有點不同,但我認為大致上的概念是相同的。 資料實在是「太多了」,沒辦法拿這麼多的資料處理,但我們可以降低資料的數量,但和原本的資料大致上差不多,我們就可以做分析,得到我們想要的結果。 Reference:
你可能也想看
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
Thumbnail
一直很喜歡作者松浦彌太郎的文字,去年在水深火熱的職場狀態下買了「寫給凌晨五點的你」這本書,雖然不至於凌晨五點觀看,但也差不多是深夜狀態下打開這本書,在黑夜裡點起一盞閱讀的燈光,坐在床邊,看著書,寫著便條紙。 我覺得閱讀是一件很棒的事情,尤其是文字會讓你覺得不孤獨,
Thumbnail
由於Icepak是版權軟體,同時也不是屬於大家常用的軟體 提升結果的外部可讀性是一個蠻常見的要求 其中一個就是EE想要看“PCB板溫分布", 面對這種要求,一般來說我們可能只能給他們一張溫度分布圖, 如果想要數字,得要告訴我們位置在哪裡,我們再量給他們 我的老天鵝,你要量50個點我怎麼辦
Thumbnail
權力是「必要之惡」,必須關在籠子裡;但只要權力掌握在人的手裡,這個籠子就不可能只是制度,因為制度無法控制人性。組織運作的彈性可以為善、也可以為惡,端看手握權力的人心中一把尺,而這把尺,就是價值觀。
Thumbnail
根據,美國經濟期刊《American Economic Review: Insights》所刊登的一篇研究報告,指出成功的新創公司創辦人通常是中年創業,顛覆了外界的想像。 ▲找出問題,比解決問題還重要 (圖/Pexels) 依一份由MIT史隆管理學院、華頓商學院、美國全國經濟研究所與美國普查局在20
Thumbnail
在這個競爭的時代,追求一份安穩而讓我們退休的工作變少了,裁員以及無薪假更是時有所聞。這個時候,如果你把夢想建立在別人上覺得容易嗎?事實上,是一件困難的事,因為,現實會讓你覺得是可有可無的。 圖片來源:Pexels 所以,別把你的夢想寄予厚望給無關繄要的人,反之,別人寄予痛苦在你身上,倒是挺容易的。追
Thumbnail
創業者必一定要知道的30個觀念;讓你做好充備準備的30個作業;30天讓夢想起航! 圖片來源:flickr 在現在商學中,帶著熬情工作是常見的,但,帶著熱情工作是第一世界的奢侈品。而現在西方將熱情浪漫化了,「熱情」passion來自於拉丁文passio,而意義代表的是「受難」,有沒有覺得很奇怪,熱情不
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
Thumbnail
一直很喜歡作者松浦彌太郎的文字,去年在水深火熱的職場狀態下買了「寫給凌晨五點的你」這本書,雖然不至於凌晨五點觀看,但也差不多是深夜狀態下打開這本書,在黑夜裡點起一盞閱讀的燈光,坐在床邊,看著書,寫著便條紙。 我覺得閱讀是一件很棒的事情,尤其是文字會讓你覺得不孤獨,
Thumbnail
由於Icepak是版權軟體,同時也不是屬於大家常用的軟體 提升結果的外部可讀性是一個蠻常見的要求 其中一個就是EE想要看“PCB板溫分布", 面對這種要求,一般來說我們可能只能給他們一張溫度分布圖, 如果想要數字,得要告訴我們位置在哪裡,我們再量給他們 我的老天鵝,你要量50個點我怎麼辦
Thumbnail
權力是「必要之惡」,必須關在籠子裡;但只要權力掌握在人的手裡,這個籠子就不可能只是制度,因為制度無法控制人性。組織運作的彈性可以為善、也可以為惡,端看手握權力的人心中一把尺,而這把尺,就是價值觀。
Thumbnail
根據,美國經濟期刊《American Economic Review: Insights》所刊登的一篇研究報告,指出成功的新創公司創辦人通常是中年創業,顛覆了外界的想像。 ▲找出問題,比解決問題還重要 (圖/Pexels) 依一份由MIT史隆管理學院、華頓商學院、美國全國經濟研究所與美國普查局在20
Thumbnail
在這個競爭的時代,追求一份安穩而讓我們退休的工作變少了,裁員以及無薪假更是時有所聞。這個時候,如果你把夢想建立在別人上覺得容易嗎?事實上,是一件困難的事,因為,現實會讓你覺得是可有可無的。 圖片來源:Pexels 所以,別把你的夢想寄予厚望給無關繄要的人,反之,別人寄予痛苦在你身上,倒是挺容易的。追
Thumbnail
創業者必一定要知道的30個觀念;讓你做好充備準備的30個作業;30天讓夢想起航! 圖片來源:flickr 在現在商學中,帶著熬情工作是常見的,但,帶著熱情工作是第一世界的奢侈品。而現在西方將熱情浪漫化了,「熱情」passion來自於拉丁文passio,而意義代表的是「受難」,有沒有覺得很奇怪,熱情不