發(fā)行渠道、容器鏡像與包管理器全解析)
Trivy 安裝完全指南官方與社區(qū)發(fā)行渠道、容器鏡像與包管理器全解析【免費下載鏈接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more項目地址: https://gitcode.com/GitHub_Trending/tr/trivy本文基于 Trivy 官方文檔 docs/getting-started/installation.md 編寫系統(tǒng)梳理 Trivy 在容器、Linux/macOS/Windows、FreeBSD 等平臺上的全部安裝方式區(qū)分官方Official與社區(qū)Community兩類渠道并結合當前倉庫中的安裝腳本、發(fā)布配置與 CI 部署代碼講清每個渠道背后的工作原理。讀完本文你可以在裸機、容器、云服務器及各類包管理器環(huán)境中快速、正確、可復現(xiàn)地完成 Trivy 的部署與版本驗證。安裝渠道總覽Official 與 CommunityTrivy 官方對安裝方式做了一個清晰的兩級劃分官方安裝Official由 Trivy 團隊開發(fā)并維護包括容器鏡像、GitHub Release 二進制包、官方安裝腳本、RHEL/CentOS / Debian / Ubuntu 的軟件源Repository與離線包、Homebrew、Windows以及FreeBSDpkg社區(qū)安裝Community由社區(qū)成員開發(fā)并在此匯集方便用戶選用包括Arch Linuxpacman、openSUSEzypper、MacPorts、Nix/NixOS以及asdf/mise。官方對這類安裝不提供支持遇到問題請聯(lián)系對應維護者。之所以有如此豐富的發(fā)布形態(tài)是因為 Trivy 采用 Go 編寫、通過 goreleaser.yml 做跨平臺發(fā)布同一份源碼會同時產(chǎn)出deb/rpm包nfpm 段、tar.gz歸檔archives 段與各平臺二進制并注入版本號ldflags: -X github.com/aquasecurity/trivy/pkg/version/app.ver{{.Version}}最終由 pkg/version/app/version.go 承載。理解了這一點就能明白下面各渠道為何能保持版本同步。另外請注意官方文檔中的{{ git.tag }}是 MkDocs 渲染時自動替換的占位符實際會變成類似v0.xx.x的具體版本標簽而{{ git.tag[1:] }}表示去掉v前綴的版本號如0.xx.x文檔站渲染后即可直接使用。如果你安裝 Trivy 的目標是把它集成進 CI/CD、IDE、Kubernetes 等第三方系統(tǒng)建議先瀏覽 Ecosystem 集成總覽。官方安裝方式詳解1. 容器鏡像官方推薦Trivy 官方發(fā)布了多架構的容器鏡像可從以下三個鏡像倉庫拉取鏡像倉庫RepositoryDocker Hubdocker.io/aquasec/trivyGitHub Container Registry (GHCR)ghcr.io/aquasecurity/trivyAWS ECR Public Gallerypublic.ecr.aws/aquasecurity/trivy以當前倉庫根目錄的 Dockerfile 為參照可以看出官方鏡像的構成基于alpine基礎鏡像預裝ca-certificates與git掃描需要 CA 證書與 git 能力并把trivy二進制復制到/usr/local/bin/trivy且設置了ENTRYPOINT [trivy]。因此下面的命令中無需寫trivy子命令前綴——docker run aquasec/trivy ... image ...等價于宿主上的trivy ... image ...。文檔給出的典型使用示例如下把 Docker 引擎 socket 與緩存目錄同時掛進容器docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy:0.xx.x image python:3.4-alpine其中兩點務必理解掛載 Docker socketTrivy 在容器內(nèi)掃描宿主上的鏡像時需要訪問宿主 Docker 引擎因此將/var/run/docker.sock掛載進容器。這就要求宿主確實裝有 Docker 引擎若僅僅是要掃描某個鏡像倉庫里的遠程鏡像則無需掛載 socket。掛載緩存目錄Trivy 首次運行會下載漏洞數(shù)據(jù)庫等數(shù)據(jù)并寫入緩存。建議把宿主目錄示例中$HOME/Library/Caches是 macOS 下的寫法掛載為容器內(nèi)的/root/.cache/實現(xiàn)持久化緩存避免每次重建容器都重新下載數(shù)據(jù)。容器內(nèi)緩存目錄的構成與清理方式參見 Cache 緩存配置指南漏洞數(shù)據(jù)庫Vulnerability Database / Java Index Database的下載細節(jié)見 DB 數(shù)據(jù)庫配置。緩存默認位于$HOME/.cache/trivy也可用--cache-dir改變位置。提示若你的 CI 環(huán)境沒有 DockerTrivy 也可以直接掃描倉庫目錄trivy fs、OCI 鏡像經(jīng)認證的 registry等具體入口介紹見 Getting Started 首頁。2. GitHub Release 手動安裝Trivy 每次發(fā)版都會在 GitHub Release 頁面附上各平臺歸檔。手動安裝只需三步到GitHub Release assets下載與你操作系統(tǒng)/架構匹配的文件解壓歸檔tar -xzf ./trivy.tar.gz給二進制加上執(zhí)行權限chmod x ./trivy隨后即可運行。產(chǎn)物命名規(guī)則可從 goreleaser.yml 的file_name_template反推出來形如trivy_0.xx.x_Linux-64bit.tar.gz、trivy_0.xx.x_Linux-ARM64.tar.gz、trivy_0.xx.x_macOS-64bit.tar.gz。不同 GOOS/GOARCH 會被映射為可讀名稱amd64→64bit、386→32bit、arm→ARM、arm64→ARM64而系統(tǒng)名會輸出為Linux/macOS/Windows/FreeBSD等。從goreleaser.yml的builds段可以看到官方發(fā)布的平臺矩陣Linux386、arm(v7)、amd64、arm64、s390x、ppc64lemacOSamd64、arm64FreeBSDamd64Windowsamd64。注釋中還說明了限制原因modernc.org/sqlite暫不支持 freebsd/arm64、freebsd/386、windows/386、windows/arm 等組合。也就是說發(fā)布矩陣并非窮盡所有 GOOS/GOARCH而是受 SQLite 驅(qū)動能力約束后的結果。3. 官方安裝腳本官方提供了一個curl | sh式安裝腳本用于從 GitHub Release 自動下載并安裝curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin 0.xx.x該腳本的源碼就保存在本倉庫的 contrib/install.sh由 goreleaser/godownloader 生成從源碼可以看清它的完整行為參數(shù)-b指定安裝目錄默認./bin-c指定客戶端標識僅允許字母/數(shù)字/-用于下載追蹤默認install-script-d開啟調(diào)試日志-x開啟set -x詳細輸出最后一個位置參數(shù)是版本 tag缺省時自動查詢 latest。下載源真正的下載地址指向https://get.trivy.dev/trivy?os...arch...version...type...client...按當前系統(tǒng)自動選擇正確的歸檔校驗和文件trivy_版本_checksums.txt則從 GitHub Release 拉取。安全性腳本會把 OS/ARCH 自動歸一化如x86_64→64bit、aarch64→ARM64、darwin→macOS下載后用sha256sum無則回退gsha256sum/shasum -a 256/openssl dgst比對校驗和不一致即中止安裝安裝動作解壓到臨時目錄后將trivyWindows 下為trivy.exe用install復制到目標目錄并提示安裝完成。該腳本同樣適用于 CI 中的自動安裝例如固定版本號以避免 latest 漂移。對于更嚴謹?shù)墓溡骉rivy 還提供 Cosign 簽名與 SBOM 校驗見 簽名校驗指南。4. RHEL/CentOSTrivy 官方維護獨立的 RPM 倉庫支持通過軟件源或直接安裝 RPM 包兩種方式。方式 A配置軟件源Repositorycat EOF | sudo tee -a /etc/yum.repos.d/trivy.repo [trivy] nameTrivy repository baseurlhttps://aquasecurity.github.io/trivy-repo/rpm/releases/\$basearch/ gpgcheck1 enabled1 gpgkeyhttps://aquasecurity.github.io/trivy-repo/rpm/public.key EOF sudo yum -y update sudo yum -y install trivy注意baseurl里的$basearch是 yum 內(nèi)置變量需轉(zhuǎn)義為\$basearchyum 會按本機架構解析。倉庫 CI 部署腳本 ci/deploy-rpm.sh 表明RPM 倉庫實際覆蓋 RHEL/CentOS 5/6/7/8/9并提供x86_64與aarch64兩種架構目錄源中的gpgcheck1配合gpgkey會校驗包簽名RPM 包本身在發(fā)布階段已通過 goreleaser.yml 中rpm.signature.key_file配置的 GPG 私鑰簽名。方式 B直接安裝 RPM 包rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v0.xx.x/trivy_0.xx.x_Linux-64bit.rpm適合不便配置軟件源的離線或一次性環(huán)境。5. Debian/UbuntuTrivy 同樣維護官方的 APT 軟件源generic分發(fā)代號附帶按各 Debian/Ubuntu 版本命名的倉庫。方式 A配置軟件源Repositorysudo apt-get install wget gnupg wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg /dev/null echo deb [signed-by/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb generic main | sudo tee -a /etc/apt/sources.list.d/trivy.list sudo apt-get update sudo apt-get install trivy該流程采用了現(xiàn)代 APT 的signed-by方式先把公鑰 dearmor 成二進制 keyring 存入/usr/share/keyrings/trivy.gpg再在 sources 條目中顯式指定避免使用已廢棄的apt-key add。從 ci/deploy-deb.sh 可以看出官方倉庫針對每個受支持的 Debian/Ubuntu 發(fā)行版發(fā)布i386/amd64/arm64三個架構的 deb 包并由reprepro維護簽名索引因此apt-get update時校驗簽名不會報錯。方式 B直接安裝 DEB 包wget https://github.com/aquasecurity/trivy/releases/download/v0.xx.x/trivy_0.xx.x_Linux-64bit.deb sudo dpkg -i trivy_0.xx.x_Linux-64bit.debDEB/RPM 包安裝后還會把contrib/*.tpl模板復制到/usr/local/share/trivy/templates見 goreleaser.yml 的contents段供--template報告模板功能使用。6. macOSHomebrewHomebrew 同時支持 macOS 與 Linux一條命令即可安裝brew install trivy若需要指定歷史版本可通過brew install trivy舊版本如果存在對應 formula或查閱 Homebrew 對 trivy 的版本策略文檔默認安裝當前最新穩(wěn)定版。7. WindowsWindows 用戶按如下步驟安裝從releases page下載trivy_x.xx.x_windows-64bit.zip注意發(fā)布矩陣中 Windows 僅提供amd64見 goreleaser.yml解壓 zip把trivy.exe復制到任意目錄并將其所在目錄加入PATH即可在命令行中使用。也可以參考前文install.sh的 Windows 邏輯——腳本在檢測到windows時會把歸檔格式切換為 zip、并把二進制改名為trivy.exe只是官方安裝腳本主要面向 Unix shellWindows 上更推薦直接解壓 zip 或使用社區(qū)提供的方式。8. FreeBSDFreeBSD 官方通過 Pkg 包管理器分發(fā)對應 goreleaser.yml 中的build-bsd段發(fā)布freebsd/amd64產(chǎn)物pkg install trivy社區(qū)安裝方式以下渠道由社區(qū)維護安裝前請確認其與官方版本的同步節(jié)奏是否符合你的安全策略例如漏洞庫版本與 Trivy 二進制版本需匹配。Arch LinuxArch Linux 官方軟件倉庫extra中直接提供trivysudo pacman -S trivy對應維護信息可查詢 Arch Linux 軟件包頁及其 PKGBUILD 構建腳本版本同步以 Arch 倉庫實際為準。openSUSEopenSUSE 軟件倉庫提供trivysudo zypper install trivyMacPortsmacOSMacPorts 用戶可安裝sudo port install trivyNix / NixOSNix 包管理器同時覆蓋 Linux 與 macOS提供三種用法命令行方式Nixnix-env --install -A nixpkgs.trivy系統(tǒng)級聲明式配置NixOS# your other config ... environment.systemPackages with pkgs; [ # your other packages ... trivy ];Home Manager 用戶級配置# your other config ... home.packages with pkgs; [ # your other packages ... trivy ];asdf / miseasdf 與 mise 是兩款語義相近的版本管理器可通過同一款社區(qū)插件由第三方維護安裝 Trivy。兩者均支持全局安裝與按目錄鎖定版本兩種模式此處展示基礎全局安裝。asdf# Install plugin asdf plugin add trivy https://github.com/zufardhiyaulhaq/asdf-trivy.git # Install latest version asdf install trivy latest # Set a version globally (on your ~/.tool-versions file) asdf global trivy latest # Now trivy commands are available trivy --versionmise# Install plugin and install latest version mise install trivylatest # Set a version globally (on your ~/.tool-versions file) mise use -g trivylatest # Now trivy commands are available trivy --version需要多版本共存如驗證新舊版本行為差異時asdf/mise 相比其他渠道有明顯優(yōu)勢。安裝后驗證與下一步無論使用哪種渠道安裝完成后都建議先驗證版本再執(zhí)行一次最小掃描。驗證版本trivy --version輸出不僅包含版本號。從 pkg/version/version.go 的實現(xiàn)看VersionInfo結構體還會讀取本地緩存元數(shù)據(jù)展示 Vulnerability DB漏洞數(shù)據(jù)庫與 Java DB 的 Schema 版本、更新時間、下次更新時間等信息方便你確認二進制版本與已下載數(shù)據(jù)庫是否配套。快速體驗掃描以鏡像倉庫中的鏡像為例trivy image python:3.4-alpine首次運行會自動下載漏洞數(shù)據(jù)庫到緩存目錄默認$HOME/.cache/trivy后續(xù)使用命中緩存即可。若掃描鏡像過程中需要緩存與引擎配置優(yōu)化參見前文提及的 Cache 緩存配置。選擇安裝方式時的決策建議僅想在單機上試用優(yōu)先Homebrew / 官方 install.sh / GitHub Release 二進制需要鎖版本并在生產(chǎn)環(huán)境統(tǒng)一管理優(yōu)先RPM/DEB 軟件源可yum list trivy/apt-cache policy trivy查看候選版本或asdf/mise完全容器化的環(huán)境直接使用官方鏡像并做好 socket 與緩存目錄的掛載追求供應鏈可驗證性結合 簽名校驗指南 校驗二進制/容器鏡像簽名。安裝就緒后可以繼續(xù)閱讀 Getting Started 快速上手 了解 target/scanner 的命令行模型如trivy image、trivy fs --scanners vuln,secret,misconfig、trivy k8s --report summary cluster或前往 Ecosystem 集成生態(tài) 查看如何接入 GitHub Actions、Kubernetes Operator、IDE 插件等周邊工具。【免費下載鏈接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more項目地址: https://gitcode.com/GitHub_Trending/tr/trivy創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考