aquasecurity/trivy-action:從 README 拆解功能邊界與採用條件
專案速覽:將 Trivy 作為 GitHub 操作運行以掃描 Docker 容器映像是否有漏洞。
秒懂
- 它是什麼?
- Runs Trivy as GitHub action to scan your Docker container image for vulnerabilities.;本文以 README、版本與倉庫明列資訊整理實作觀察,區分可證實能力與尚待驗證的環境差異。
- 適合誰用?
- aquasecurity/trivy-action 適合需要 Runs Trivy as GitHub action to scan your Docker container image for vulnerabilities. 所描述能力、並能依 README 指定入口管理版本與輸出的團隊;不適合把倉庫統計直接當成生產保證的情境。採用前,請在隔離環境針對 Trivy 建立最小案例,使用 README 出現的命令或設定鍵記錄成功輸出、錯誤訊息與資源消耗,再檢查 v0.36.0 的變更。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 27 天前。
- 用什麼語言寫的?
- 主要是 Shell(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
aquasecurity/trivy-action:這個 Action 做什麼
aquasecurity/trivy-action 是一個 GitHub Action,用於在 CI/CD 工作流程中執行 Trivy 掃描器。README 描述它的主要用途是掃描 Docker 容器映像檔的漏洞,但也列出了其他掃描模式:檔案系統(fs)、Git 儲存庫(repo)、rootfs 目錄、基礎設施即程式碼(config)以及產生軟體物料清單(SBOM)。它預設會呼叫 aquasecurity/setup-trivy 來安裝指定版本的 Trivy,但可以透過輸入跳過這一步。倉庫元資料顯示該專案用 Shell 撰寫,目前有 1390 顆星和 357 個 fork,但這些數字本身並不代表功能特性。
在 aquasecurity/trivy-action 的 README 脈絡中,第 1 個觀察點應與 Trivy 一起閱讀。這裡能確認的是文件明列的能力與入口,不能把未出現的部署拓撲、效能數字或安全保證當成既定行為。若要核對這一點,請以 master 分支和 v0.36.0 為記錄基準,保存實際輸出,並把差異對回來源文字。
對使用 aquasecurity/trivy-action 的團隊而言,這個細節會影響工作流程:先界定輸入、執行位置與預期輸出,再決定是否把它放進現有工具鏈。README 明確寫到的 https://github.com/features/actions 可作為檢查點;README 沒有說明的部分則標記為未知,不以推測補齊。這樣才能分開文件承諾、倉庫現況與本地環境結果。
aquasecurity/trivy-action:基本用法:掃描 CI 流水線中的映像檔
README 給出的第一個範例是掃描 CI 流水線中的 Docker 映像檔。工作流程步驟先使用 actions/checkout 檢出程式碼,然後建置映像檔,最後使用 aquasecurity/trivy-action@v0.36.0 並設定 image-ref、format、exit-code、ignore-unfixed、vuln-type 和 severity 等輸入。在這個範例中,format 設為 table,exit-code 設為 1,意味著如果發現指定嚴重級別的漏洞,建置會失敗。另一個範例展示了如何使用 trivy-config 輸入,將掃描選項放在倉庫內的 trivy.yaml 檔案中,這時 action 只需要 scan-type、scan-ref 和 trivy-config 三個輸入。README 還說明了選項的優先順序:GitHub Action 旗標高於環境變數,環境變數高於設定檔,設定檔高於預設值。
在 aquasecurity/trivy-action 的 README 脈絡中,第 2 個觀察點應與 Action 一起閱讀。這裡能確認的是文件明列的能力與入口,不能把未出現的部署拓撲、效能數字或安全保證當成既定行為。若要核對這一點,請以 master 分支和 v0.36.0 為記錄基準,保存實際輸出,並把差異對回來源文字。
對使用 aquasecurity/trivy-action 的團隊而言,這個細節會影響工作流程:先界定輸入、執行位置與預期輸出,再決定是否把它放進現有工具鏈。README 明確寫到的 for 可作為檢查點;README 沒有說明的部分則標記為未知,不以推測補齊。這樣才能分開文件承諾、倉庫現況與本地環境結果。
aquasecurity/trivy-action:掃描類型和輸入參數
該操作支援多種掃描類型,透過 scan-type 輸入指定,包括 image、fs、repo、rootfs 和 config。輸入表列出了所有可用輸入,其中 scan-type 預設是 image,scan-ref 預設是 /github/workspace/,format 預設是 table,severity 預設是 UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL,exit-code 預設是 0。對於映像檔掃描使用 image-ref,對於檔案系統或倉庫掃描使用 scan-ref。還可以透過 input 輸入指定一個 tarball 檔案進行掃描。README 中的範例涵蓋了這些場景,例如掃描 tarball、掃描 Git 倉庫、掃描 rootfs 目錄以及掃描 Terraform 等 IaC 設定。對於 IaC 掃描,如果 Terraform 設定包含私有模組,README 建議設定 Git 認證。
在 aquasecurity/trivy-action 的 README 脈絡中,第 3 個觀察點應與 GitHub 一起閱讀。這裡能確認的是文件明列的能力與入口,不能把未出現的部署拓撲、效能數字或安全保證當成既定行為。若要核對這一點,請以 master 分支和 v0.36.0 為記錄基準,保存實際輸出,並把差異對回來源文字。
對使用 aquasecurity/trivy-action 的團隊而言,這個細節會影響工作流程:先界定輸入、執行位置與預期輸出,再決定是否把它放進現有工具鏈。README 明確寫到的 https://github.com/aquasecurity/trivy 可作為檢查點;README 沒有說明的部分則標記為未知,不以推測補齊。這樣才能分開文件承諾、倉庫現況與本地環境結果。
aquasecurity/trivy-action:與 GitHub Code Scanning 和範本的整合
README 提供了多個與 GitHub Code Scanning 整合的範例。工作流程需要 permissions 包含 contents: read 和 security-events: write,掃描時設定 format 為 sarif 並指定 output 檔案,然後使用 github/codeql-action/upload-sarif 上傳結果。如果掃描傳回非零退出碼,可以在上傳步驟加入 if: always() 以確保結果仍被上傳。另外,該操作支援 Trivy 範本,透過 template 輸入指定範本檔案路徑,路徑前需要加 @ 前綴。預設範本由 setup-trivy 安裝到 $HOME/.local/bin/trivy-bin/contrib 目錄。
在 aquasecurity/trivy-action 的 README 脈絡中,第 4 個觀察點應與 https://github.com/features/actions 一起閱讀。這裡能確認的是文件明列的能力與入口,不能把未出現的部署拓撲、效能數字或安全保證當成既定行為。若要核對這一點,請以 master 分支和 v0.36.0 為記錄基準,保存實際輸出,並把差異對回來源文字。
對使用 aquasecurity/trivy-action 的團隊而言,這個細節會影響工作流程:先界定輸入、執行位置與預期輸出,再決定是否把它放進現有工具鏈。README 明確寫到的 Release 可作為檢查點;README 沒有說明的部分則標記為未知,不以推測補齊。這樣才能分開文件承諾、倉庫現況與本地環境結果。
aquasecurity/trivy-action:快取機制和 Trivy 安裝
操作內建了快取和還原漏洞資料庫、Java 資料庫和檢查套件的功能。快取預設儲存在 $GITHUB_WORKSPACE/.cache/trivy 目錄,使用 actions/cache 實作,預設開啟。可以透過設定 cache 輸入為 false 來停用。README 還提到,如果需要在分支間共用快取,可以在預設分支上透過 cron 工作定期更新快取,並在掃描工作流程中設定 TRIVY_SKIP_DB_UPDATE 和 TRIVY_SKIP_JAVA_DB_UPDATE 環境變數。關於 Trivy 安裝,預設情況下操作會呼叫 aquasecurity/setup-trivy,但可以透過 skip-setup-trivy 輸入跳過,或者手動使用 setup-trivy 安裝後再呼叫本操作。對於 GitHub Enterprise Server,可以使用 token-setup-trivy 輸入覆蓋用於安裝 Trivy 的 token。
在 aquasecurity/trivy-action 的 README 脈絡中,第 5 個觀察點應與 for 一起閱讀。這裡能確認的是文件明列的能力與入口,不能把未出現的部署拓撲、效能數字或安全保證當成既定行為。若要核對這一點,請以 master 分支和 v0.36.0 為記錄基準,保存實際輸出,並把差異對回來源文字。
對使用 aquasecurity/trivy-action 的團隊而言,這個細節會影響工作流程:先界定輸入、執行位置與預期輸出,再決定是否把它放進現有工具鏈。README 明確寫到的 release-img 可作為檢查點;README 沒有說明的部分則標記為未知,不以推測補齊。這樣才能分開文件承諾、倉庫現況與本地環境結果。
aquasecurity/trivy-action:掃描私有倉庫和產生 SBOM
對於私有映像檔倉庫,README 說明了如何透過環境變數進行認證。Docker Hub 需要 TRIVY_USERNAME 和 TRIVY_PASSWORD;AWS ECR 使用 AWS 環境變數;GCR 使用 GOOGLE_APPLICATION_CREDENTIALS;自託管倉庫同樣需要使用者名稱和密碼。另有,該操作支援產生 SBOM 並提交到 GitHub Dependency Graph。使用 format 為 github 並設定 github-pat 輸入(可以是 PAT 或 GITHUB_TOKEN),同時需要在工作流程中設定 contents: write 權限。README 也提到可以將報告作為 artifact 上傳。
在 aquasecurity/trivy-action 的 README 脈絡中,第 6 個觀察點應與 https://github.com/aquasecurity/trivy 一起閱讀。這裡能確認的是文件明列的能力與入口,不能把未出現的部署拓撲、效能數字或安全保證當成既定行為。若要核對這一點,請以 master 分支和 v0.36.0 為記錄基準,保存實際輸出,並把差異對回來源文字。
對使用 aquasecurity/trivy-action 的團隊而言,這個細節會影響工作流程:先界定輸入、執行位置與預期輸出,再決定是否把它放進現有工具鏈。README 明確寫到的 release 可作為檢查點;README 沒有說明的部分則標記為未知,不以推測補齊。這樣才能分開文件承諾、倉庫現況與本地環境結果。
aquasecurity/trivy-action:設定優先順序和已知問題
README 的 Customizing 部分列出了完整的輸入表,並說明了設定優先順序:輸入、環境變數、Trivy 設定檔、預設值。環境變數可以使用 Trivy 支援的所有環境變數,包括輸入表未覆蓋的旗標。README 還提到一個舊版本中的已知 bug:一次呼叫 action 的輸入可能會洩漏到後續呼叫,導致多步掃描產生意外結果。如果 Actions 輸出中的 env 部分包含未明確設定的 TRIVY_* 環境變數,則可能受影響,建議升級到最新版本。
在 aquasecurity/trivy-action 的 README 脈絡中,第 7 個觀察點應與 Release 一起閱讀。這裡能確認的是文件明列的能力與入口,不能把未出現的部署拓撲、效能數字或安全保證當成既定行為。若要核對這一點,請以 master 分支和 v0.36.0 為記錄基準,保存實際輸出,並把差異對回來源文字。
對使用 aquasecurity/trivy-action 的團隊而言,這個細節會影響工作流程:先界定輸入、執行位置與預期輸出,再決定是否把它放進現有工具鏈。README 明確寫到的 Marketplace 可作為檢查點;README 沒有說明的部分則標記為未知,不以推測補齊。這樣才能分開文件承諾、倉庫現況與本地環境結果。
編輯結論
aquasecurity/trivy-action 適合需要 Runs Trivy as GitHub action to scan your Docker container image for vulnerabilities. 所描述能力、並能依 README 指定入口管理版本與輸出的團隊;不適合把倉庫統計直接當成生產保證的情境。採用前,請在隔離環境針對 Trivy 建立最小案例,使用 README 出現的命令或設定鍵記錄成功輸出、錯誤訊息與資源消耗,再檢查 v0.36.0 的變更。對 Apache-2.0 的再發布、修改和第三方依賴也要交由團隊的合規流程確認。
社群筆記