ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Trivy 入门指南:5 分钟扫出容器镜像漏洞、密钥泄露与 K8s 集群问题

Trivy 入门指南:5 分钟扫出容器镜像漏洞、密钥泄露与 K8s 集群问题 Trivy 入门指南5 分钟扫出容器镜像漏洞、密钥泄露与 K8s 集群问题【免费下载链接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more项目地址: https://gitcode.com/GitHub_Trending/tr/trivy凌晨两点有人想起一句这个密码是不是提交进仓库了。与其等事故发生后开复盘会不如花 5 分钟回答三个问题镜像里有没有已知漏洞代码里有没有密钥集群配置有没有踩雷Trivy 就是干这件事的开源安全扫描工具——一个二进制文件扫描容器镜像、文件系统、Git 仓库乃至 Kubernetes 集群同时查漏洞、错误配置和泄露的密钥。四种安装方式挑一种适合你环境的Trivy 的获取方式很宽按你的环境挑一种即可# macOS brew install trivy # 或者不装任何东西直接用容器跑 docker run -it aquasec/trivy image python:3.4-alpineLinux 上也可以走 apt/yum 仓库安装或用仓库自带的 install.sh 一行装好。完整选项见 安装文档。第一次扫描时Trivy 会自动下载漏洞数据库并缓存——所以首次运行会明显慢一些之后每次扫描都在本地完成分析不依赖外网环境。它的命令结构很直观trivy 目标 [--scanners 扫描器] 扫描对象。目标可以是 image镜像、fs文件系统、k8s集群扫描器有 vuln漏洞、secret密钥、misconf错误配置三种。记住这个模式下面所有场景都是它的变体。上线前先把镜像扫一遍镜像发布前的最后一道检查一条命令就够trivy image python:3.4-alpine它只从仓库拉取缺失的层不要求本地装 Docker。结果按层和包分组列出漏洞编号、受影响的包名、当前版本、修复版本、严重等级CRITICAL 到 LOW。读结果时重点看两列Fixed Version告诉你升级到哪个版本能消掉漏洞如果某个包没有修复版本说明上游还没发补丁。对于 CentOS 7 这类老旧基础镜像未修复漏洞往往占大头可以加--ignore-unfixed跳过它们先把有解的问题清掉用法详见 过滤配置。推送前扫代码仓库漏洞、密钥、配置错误一次过代码仓库比镜像多两件事要查锁文件里的依赖漏洞和不小心提交进来的密钥。默认的 fs 扫描只开漏洞扫描器把三个都打开trivy fs --scanners vuln,secret,misconf /path/to/myproject一条命令覆盖三类问题扫描器查什么典型发现vuln依赖与系统包漏洞package-lock.json、go.sum、poetry.lock里带 CVE 的包secret 明文密钥与令牌云厂商 AccessKey、GitHub Token、私钥文件misconf错误配置特权容器的 Dockerfile、放行的 K8s 清单、Terraform 规则其中 misconf 用 Rego 策略实现内置规则库在 pkg/iac/ 下按云厂商和服务划分想加自定义规则可以看 示例策略。fs 扫描的完整流程如下先下载漏洞库再遍历目录找依赖文件、密钥和 IaC 文件最后本地比对检测。一条命令体检整个 K8s 集群集群上线后最该问的是现在到底健不健康。在集群里执行trivy k8s --report summary cluster它会给出一份两层摘要Workload Assessment按命名空间列出每个 Deployment、Pod 的漏洞、配置错误和密钥数量Infra Assessment检查控制面组件etcd、apiserver 等的镜像和配置。每个数字都带 C/H/M/L 四个严重度等级红色的高危项就是今晚要优先处理的。注意它不只是查配置——每个工作负载引用的镜像也会被做漏洞扫描所以一次命令等价于集群配置审计 全量镜像扫描。K8s 扫描的进阶用法按命名空间过滤、输出 SARIF 等见 官方文档。扫描结果怎么读三个参数值得记扫出结果之后真正影响效率的是只看该看的。三个参数组合起来能解决 80% 的日常抱怨参数作用典型场景--severity HIGH,CRITICAL只报告指定严重度告警疲劳时先只看高危--ignore-unfixed隐藏无修复版本的漏洞老基础镜像漏洞刷屏--exit-code 1发现问题时进程返回 1让 CI 流水线真正变红比如trivy image --severity HIGH,CRITICAL --exit-code 1 nginx:1.25含义就是只关心高危以上扫出来就让构建失败。更多过滤和输出格式JSON、SARIF、GitHub 格式在 报告配置 里有完整说明。从一条命令到一条流水线 把扫描钉在流水线里才能防止问题悄悄溜回生产。最简单的做法是在 CI 任务里跑上面那条带--exit-code 1的命令仓库里直接附带了 GitLab CI 模板把扫描结果聚合到 Code Quality 面板每条漏洞能点开定位到具体文件行GitHub Actions、CircleCI、ArgoCD 等平台的接入方式汇总在 生态集成页其中 CI/CD 集成 讲了如何在流水线里复用数据库缓存避免每次任务都重新下载。规模上来之后会遇到一个瓶颈每个流水线都独立拉层、独立分析又慢又重复。Trivy 的 client-server 模式就是为此设计的——跑一个trivy server集中做分析和缓存本地或 Redis 均可各条流水线用trivy client提交扫描请求只传缺失的层配合 缓存配置同一个镜像在多条流水线间只会被完整分析一次。下一步今晚就可以做两件事挑一个正在开发的项目跑一遍trivy fs --scanners vuln,secret,misconf再把你最近发布的镜像跑一遍trivy image。看到的第一屏结果大概率会让你沉默几秒——这很正常。真正的问题不是扫出了多少而是扫出几十个 Critical 之后你的团队打算按什么顺序修、谁来修、修不完的先怎么挡在合并门外。把这个流程先跑通一次比多装一个扫描器更有用。【免费下载链接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more项目地址: https://gitcode.com/GitHub_Trending/tr/trivy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表