如何將 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 的一些心得:

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


3會員
11Content count
專注於 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
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
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
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
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,而意義代表的是「受難」,有沒有覺得很奇怪,熱情不