Skip to main content
雲端安全

什麼是 GitLab Container Scanning?

透過 GitLab Container Scanning 提升企業安全性與合規性,在部署前偵測容器映像中的弱點與惡意軟體。自動化掃描、降低風險,並利用這項強大工具確保安全的供應鏈。

作者 SentinelOne
什麼是 GitLab Container Scanning?

GitLab Container Scanning 是維護容器化應用程式安全性與完整性的重要工具。隨著組織逐步採用容器化進行軟體部署,熟悉並運用這項技術變得更加關鍵。

本文將涵蓋 GitLab Container Scanning 的深入內容,包括其運作方式、支援的容器格式,以及最佳實務與真實案例如何協助專案完成設定。本文全程強調最佳實務,協助您理解 GitLab Container Scanning,確保安全的開發流程與順暢的工作流程。

了解 GitLab Container Scanning

了解 GitLab Container Scanning 對於希望使用 GitLab 保護容器化應用程式,或希望透過其他 容器化 平台(如 Docker)達成此目標的人而言至關重要。GitLab Container Scanning 可作為安全檢查機制,檢查您軟體中的每個元件是否存在攻擊者可利用的弱點——就像對其組成元件進行防毒掃描一樣!

此檢查程序會仔細檢視容器內包含的軟體,以偵測其中可能存在的任何問題或潛在風險。這個步驟在現代軟體開發中至關重要;容器通常由來自多個來源的不同元件組成,而這些元件都必須符合安全標準,才能維持應用程式的完整性。

GitLab Container Scanning 對軟體開發極具價值,可為容器化軟體應用程式提供必要保護。及早識別弱點有助於維持安全系統,讓開發人員與利害關係人都能更加安心。

GitLab Container Scanning 如何運作?

GitLab Container Scanning 可自動識別並處理容器映像中的弱點,讓您安心確信這些映像中的任何弱點都能快速且可靠地獲得處理。以下是其運作方式的說明:

GitLab Container Scanning 可輕鬆整合至 Continuous Integration/Continuous Deployment (CI/CD) pipeline,使掃描流程成為每次建置與推送的必要環節,而不只是獨立事件。這可確保安全檢查成為開發中的持續性工作,而非只執行一次。

利用弱點資料庫

此工具會將元件與已知弱點資料庫進行交叉比對,以偵測容器內所使用軟體套件或程式庫中的已知弱點。這使得識別其中可能存在的已知威脅變得更加容易。

產生報告

GitLab Container Scanning 在完成後會產生一份完整報告,列出所發現的任何弱點及其嚴重性分類;並在需要時提出修正或緩解策略建議。

自動化回應

GitLab Container Scanning 可讓使用者根據其設定建立自動回應;這些回應可能包括建立問題供開發團隊處理,甚至停止 CI/CD pipeline,若發現重大弱點時,以確保不安全的程式碼不會進入正式環境。

修復與持續監控

我們的 Continuous Monitoring Tool 可透過持續掃描容器更新來協助進行持續修復,在更新到來時自動檢查因變更實作而可能出現的弱點,並確保持續防護隨時間出現的新弱點。

Callout Background Image Gradient

CNAPP Market Guide

Get key insights on the state of the CNAPP market in this Gartner Market Guide for Cloud-Native Application Protection Platforms.

GitLab 支援的容器格式

當我們提到 GitLab 的 Container Scanning 支援特定容器格式時,我們指的是檢視其中特定的結構以及資料排列方式。Trivy 與 Grype 掃描工具廣泛支援各種 Linux 發行版本,因此可在不同環境中快速識別弱點。

開源掃描工具:

  • Trivy(適用於容器與作業系統的開源弱點掃描器):Trivy 是一款成熟的開源弱點掃描器,專為容器與作業系統打造,提供輕量但全面的掃描能力,可識別多種 Linux 發行版本中的弱點。
  • Grype:Grype 可為容器映像提供準確的弱點資料。作為分析工具,Grype 透過精確且可採取行動的弱點資料,補強 Trivy 對安全威脅的深入檢查。

支援的 Linux 發行版本

了解容器格式與發行版本之間的差異極為重要。容器格式定義容器內資料的儲存方式,而發行版本則是 GitLab 的 Trivy 與 Grype 服務所支援的不同 Linux 作業系統變體。GitLab 支援相當多的發行版本;以下為簡要說明:

  • Alma Linux:使用 Trivy 掃描
  • Alpine Linux:Grype 與 Trivy 均支援
  • Amazon Linux:Grype 與 Trivy 均支援
  • BusyBox:由 Grype 掃描
  • CentOS:Grype 與 Trivy 均支援
  • CBL-Mariner:使用 Trivy 掃描
  • Debian:Grype 與 Trivy 均支援
  • Distroless:Grype 與 Trivy 均支援
  • Oracle Linux:Grype 與 Trivy 均支援
  • Photon OS:由 Trivy 掃描
  • Red Hat (RHEL):Grype 與 Trivy 均支援
  • Rocky Linux:使用 Trivy 掃描
  • SUSE:由 Trivy 掃描
  • Ubuntu:Grype 與 Trivy 均支援

廣泛發行版本支援的重要性

在 GitLab Container Scanning,我們了解,隨著容器化應用程式在開發人員之間日益普及,而他們通常會根據效能、安全性、相容性或個人偏好選擇不同的 Linux 發行版本,廣泛的發行版本支援的重要性也正變得愈發關鍵。透過同時支援多種發行版本,GitLab Container Scanning 可確保開發人員無論選擇哪種環境,都能持續維護應用程式安全性,進一步鞏固我們對於為容器化工作負載提供整體安全性的承諾。

如何設定 GitLab 以進行容器掃描?

實作 GitLab 進行容器掃描是一個高效率的流程,可協助您為容器化應用程式自動執行弱點掃描。以下是實現方式的一般概述:

1. 透過自動合併請求啟用容器掃描

GitLab 14.9 可讓您透過自動化合併請求簡單且快速地啟用容器掃描;方法如下:

  • 前往所需的專案。
  • 前往 Secure > Security Configuration。
  • 在 Container Scanning 列中,選取 Configure with a merge request。

啟用後,此流程將產生一個自動合併請求,其中包含啟用 Container Scanning 所需的任何變更。只需在合併前先檢閱,即可完成 Container Scanning 的設定。

2. 透過 .gitlab-ci.yml 檔案進行設定:

手動設定容器掃描需要將相關範本新增至您的 .gitlab-ci.yml 檔案:

include:   - template: Security/Container-Scanning.gitlab-ci.yml

此範本會將 container_scanning 工作新增至您的 CI/CD 管線中,用於掃描 Docker 映像檔中的弱點,並將其結果儲存為 container-scanning 報告成品。

可建置並掃描 Docker 映像檔的 .gitlab-ci.yml 檔案範例如下所示。

include:   - template: Jobs/Build.gitlab-ci.yml   - template: Security/Container-Scanning.gitlab-ci.yml container_scanning:   variables:     CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA

3. 自訂容器掃描設定

GitLab 可讓您依據特定需求調整容器掃描方式,從增強輸出、使用特定登錄進行驗證,到提供更細緻的結果皆可設定。

例如,若要啟用詳細輸出,請相應編輯您的 .gitlab-ci.yml:

include:   - template: Security/Container-Scanning.gitlab-ci.yml variables:     SECURE_LOG_LEVEL: 'debug'

4. 掃描遠端登錄中的映像檔:

您也可以使用下列設定來掃描位於專案以外登錄中的映像檔:

include:   - template: Security/Container-Scanning.gitlab-ci.yml container_scanning:   variables:     CS_IMAGE: example.com/user/image:tag

建立 GitLab Container Scanning 是一種直覺且易於使用的體驗,無論是自動化合併請求還是手動設定皆然。GitLab 透過其強大的掃描工具,讓安全性檢查成為開發人員開發工作流程的一部分,使 GitLab 成為現代安全軟體開發中的關鍵要素。

GitLab Container Scanning 的最佳實務

1. 定期更新掃描工具

務必讓 Trivy 和 Grype 等掃描工具保持最新狀態,如此才能在新弱點出現時立即偵測,同時維持與受支援發行版本所做任何變更的相容性。定期更新可確保這一點。

2. 在開發早期整合掃描

容器掃描越早成為您開發週期的一部分,就越能及早識別並修補弱點。將 GitLab Container Scanning 納入您的 持續整合 (CI) 管線,可確保每次程式碼推送時都會自動執行掃描——使其成為您開發工作流程的一部分,並有助於更快識別與解決弱點。

3. 依需求調整掃描

並非每個專案都需要完全相同的掃描。根據您的專案需求進行調整——例如詳細程度、目標登錄或設定變數——可讓掃描更快速且更有效率。利用 .gitlab-ci.yml file 中的自訂功能來精確微調掃描。

4. 定期重新檢視並處理掃描報告

僅執行掃描並不足夠——還必須及時檢閱並處理發現結果。定期檢閱 Container Scanning 報告成品並結合系統化修補,可確保快速識別並妥善處理弱點。將修補工作流程整合至既有開發流程中,可能有助於完成這項重要的修補工作。

使用 GitLab Container Scanning 的修補工作流程

GitLab Container Scanning 的修補工作流程包含數個步驟,旨在識別容器映像檔弱點,並以高效率且系統化的方式加以解決。典型工作流程可能如下所示:

  1. 判定弱點:GitLab 提供 Container Scanning 功能以及使用 Trivy 或 Grype 的安全掃描;一旦發現弱點,此步驟將產生一份詳盡報告,列出所有弱點。
  2. 分析發現結果:在此步驟中,必須深入檢閱 Container Scanning 報告中的發現結果,以提供有關嚴重性、類型以及需要立即關注之來源弱點的詳細資訊。藉由優先處理緊急問題以立即解決。
  3. 排定修補優先順序:根據此評估,應相應排定問題的優先順序。高優先順序的關注點通常聚焦於對應用程式構成立即威脅的弱點,而影響程度與利用難易度等因素也可能納入考量。
  4. 制定修補計畫:在排定弱點優先順序後,必須制定有效的修補計畫,以處理每一項弱點。此計畫包含有效降低各項弱點風險所需的行動——這可能包括安裝更新、進行修改,或直接變更部分程式碼。
  5. 實作修正:有了計畫後,應使用 GitLab 合併請求執行修補行動,以修改受影響程式碼庫相關的程式碼、設定或相依性;開發人員、安全團隊及其他關鍵參與者之間的協作,通常對成功完成此流程至關重要。
  6. 測試修補成效:套用修正後,務必執行額外驗證檢查,以確保這些修正確實解決弱點,且不會產生新問題。重新掃描容器映像檔或執行其他測試,可能有助於驗證修補工作是否成功消除弱點並造成安全漏洞。
  7. 監控與持續改進:修復工作流程不會一夜之間完成;持續監控、掃描與修訂可確保持續可行性。採用迭代式方法可確保其長期可行性。

真實案例與使用情境

1. 銀行業

銀行應用程式中的安全性至關重要。傳統的弱點偵測方法往往無法及時發現問題;透過將 GitLab Container Scanning 納入銀行應用程式的持續整合/持續部署流程,即可實現即時檢查與修復,提供更強健的解決方案,不僅能強化整體安全性,也能在整個產業中促進信任與合規。

2. 醫療保健

醫療保健系統會處理必須依據嚴格法規指引加以保護的敏感資料,但人工檢查往往繁瑣且容易出錯。透過採用 GitLab Container Scanning 進行弱點評估,並作為持續合規報告流程的一部分,醫療保健組織可運用 GitLab Container Scanning 簡化流程,以保護自身免於資料外洩,同時讓報告流程比以往更不複雜。

3. 科技新創公司

科技新創公司經常面臨如何在快速開發與維持安全標準之間取得平衡的困難。GitLab Container Scanning 可協助企業讓這兩項流程保持一致;對容器化應用程式進行持續弱點掃描,可在保護安全性的同時加快開發週期,讓新創公司在維持強大安全態勢的同時,仍具備創新所需的敏捷性。

Callout Background Image Gradient

See SentinelOne in Action

Discover how AI-powered cloud security can protect your organization in a one-on-one demo with a SentinelOne product expert.

結論

GitLab Container Scanning 已成為現代開發環境中不可或缺的一部分,為組織提供直接明瞭的方法,能夠快速且可靠地偵測容器化應用程式中的弱點。透過無縫整合至其開發流程,並在開發過程早期提供弱點可視性,組織得以將安全性納入開發流程,在降低風險的同時提升整體安全態勢。

GitLab Container Scanning 是有效 DevSecOps 策略中的關鍵要素,可培養持續改善安全性的環境。這項寶貴資產可確保安全性始終位於創新的核心,無論是遵循法規、保護客戶資料、維持敏捷開發週期,或滿足各產業與使用情境中的多元安全需求。

GitLab Container Scanning 常見問題

GitLab Container Scanning 會在 CI/CD 期間對您的容器映像執行弱點檢查。它使用 Trivy 等掃描器,在映像進入正式環境之前檢查每一層——從基礎作業系統套件到應用程式相依性。您可以透過納入 GitLab 的 Container-Scanning CI 範本或使用一鍵合併請求來啟用它。

結果會以 JSON 成品形式顯示,並出現在流程的 Security 分頁中,標示出高風險 CVE 與已過期的作業系統版本。

它會找出基礎映像與作業系統套件中的已知 CVE,另外在啟用時,也會偵測特定語言函式庫的缺陷(例如 Java 或 Python 套件)。它也會標示不再接收安全性更新的生命週期終止作業系統。底層的 Trivy 掃描器會參考 NVD、發行版安全追蹤器以及 GitLab 自有公告資料庫等來源,依據 CVSS 分數與可利用性來識別並分類弱點。

將 GitLab 的內建範本加入您的 .gitlab-ci.yml。

include:

  - template: Jobs/Container-Scanning.gitlab-ci.yml

或者,前往您專案中的 Secure > Security configuration,按一下 Configure with a merge request,然後合併。這會將必要的工作注入您的流程中。如果您已經將 Docker 映像建置並推送至專案登錄,就不需要額外撰寫指令碼

在您的流程執行後,開啟 Build > Pipelines,選擇該次執行,然後選取 Security 分頁。在那裡,您可以看到每項發現的嚴重性、CVSS 分數、可利用可能性 (EPSS) 與修復指引。原始掃描報告 (gl-container-scanning-report.json) 以及 CycloneDX SBOM (gl-sbom-report.cdx.json) 可在 Job Artifacts 下取得。

在 Ultimate 方案中,您也可以在合併請求中看到內嵌結果,以及預設分支上的整合式弱點報告。

會。每個弱點項目都包含說明,解釋問題、其影響,以及建議的修復步驟,例如套件升級或組態變更。在 Ultimate 方案中,GitLab 甚至可以產生自動修復修補程式——也就是會為您將 Dockerfile 或套件資訊清單更新為已修正版本的合併請求。

在您的儲存庫根目錄建立一個 vulnerability-allowlist.yml。列出您已確認為誤判的 CVE ID(全域或依映像分別列出)。之後 GitLab 會將這些 CVE 排除在未來的掃描報告之外,並在工作日誌中將其標示為「Approved」。這可讓您的 Security 分頁專注於真實風險,同時不會隱藏真正的問題。

深入了解 雲端安全

Decorative background gradient

您的雲端安全——30 分鐘內完成全面評估。

與 SentinelOne 專家會面,評估您在多雲環境中的雲端安全態勢,找出雲端資產、錯誤設定、秘密掃描,並透過 Verified Exploit Paths™ 排定風險優先順序。
Dark dashboard UI with purple-highlighted nav, summary cards showing 149, 7, 78, 56, 1.2 h, and a status table with linked purple text