scanning-docker-images-with-trivy

Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规,并集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。

9 stars

Best use case

scanning-docker-images-with-trivy is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规,并集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。

Teams using scanning-docker-images-with-trivy should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/scanning-docker-images-with-trivy/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/scanning-docker-images-with-trivy/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/scanning-docker-images-with-trivy/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How scanning-docker-images-with-trivy Compares

Feature / Agentscanning-docker-images-with-trivyStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规,并集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 使用 Trivy 扫描 Docker 镜像

## 概述

Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规。它可集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。

## 前置条件

- Docker Engine 20.10+
- Trivy v0.50+
- 互联网访问权限(用于漏洞数据库更新)
- 容器镜像仓库凭据(用于私有仓库)

## 核心概念

### 扫描器类型

| 扫描器 | 参数 | 检测内容 |
|---------|------|---------|
| 漏洞扫描 | `--scanners vuln` | 操作系统软件包和库中的 CVE |
| 错误配置扫描 | `--scanners misconfig` | Dockerfile/K8s 清单错误配置 |
| 密钥扫描 | `--scanners secret` | 硬编码密码、API 密钥、令牌 |
| 许可证扫描 | `--scanners license` | 软件许可证合规问题 |

### 严重程度级别

- **严重(CRITICAL)**:CVSS 9.0-10.0 - 需立即处理
- **高危(HIGH)**:CVSS 7.0-8.9 - 生产部署前修复
- **中危(MEDIUM)**:CVSS 4.0-6.9 - 计划修复
- **低危(LOW)**:CVSS 0.1-3.9 - 机会性接受或修复
- **未知(UNKNOWN)**:未评分 - 手动评估

### 漏洞数据库

Trivy 使用多个漏洞数据库:
- NVD(国家漏洞数据库)
- Red Hat 安全数据
- Alpine SecDB
- Debian Security Tracker
- Ubuntu CVE Tracker
- Amazon Linux Security Center
- GitHub Advisory Database

## 实施步骤

### 步骤 1:安装 Trivy

```bash
# Linux(apt)
sudo apt-get install wget apt-transport-https gnupg lsb-release
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 $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update && sudo apt-get install trivy

# macOS
brew install trivy

# Docker
docker pull aquasecurity/trivy:latest
```

### 步骤 2:基本镜像扫描

```bash
# 扫描公共镜像
trivy image python:3.12-slim

# 使用严重性过滤器扫描
trivy image --severity CRITICAL,HIGH nginx:latest

# 忽略未修复漏洞
trivy image --ignore-unfixed alpine:3.19

# 扫描本地镜像
docker build -t myapp:latest .
trivy image myapp:latest

# 从 tar 存档扫描
docker save myapp:latest -o myapp.tar
trivy image --input myapp.tar
```

### 步骤 3:高级扫描选项

```bash
# 启用所有扫描器(漏洞+错误配置+密钥+许可证)
trivy image --scanners vuln,misconfig,secret,license myapp:latest

# 生成 CycloneDX 格式 SBOM
trivy image --format cyclonedx --output sbom.cdx.json myapp:latest

# 生成 SPDX 格式 SBOM
trivy image --format spdx-json --output sbom.spdx.json myapp:latest

# JSON 格式输出(用于编程处理)
trivy image --format json --output results.json myapp:latest

# SARIF 格式输出(用于 GitHub Security 标签页)
trivy image --format sarif --output results.sarif myapp:latest

# 基于模板的输出
trivy image --format template --template "@contrib/html.tpl" --output report.html myapp:latest

# 列出所有软件包
trivy image --list-all-pkgs myapp:latest
```

### 步骤 4:扫描 Kubernetes 清单

```bash
# 扫描 Dockerfile 中的错误配置
trivy config Dockerfile

# 扫描 Kubernetes 清单
trivy config k8s-deployment.yaml

# 扫描 Helm chart
trivy config ./helm-chart/

# 扫描 Terraform 文件
trivy config ./terraform/
```

### 步骤 5:CI/CD 集成

```yaml
# GitHub Actions
name: Trivy 容器扫描
on: push

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: 构建镜像
        run: docker build -t myapp:${{ github.sha }} .

      - name: 运行 Trivy 漏洞扫描
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: myapp:${{ github.sha }}
          format: sarif
          output: trivy-results.sarif
          severity: CRITICAL,HIGH
          exit-code: 1

      - name: 上传 Trivy 扫描结果
        uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: trivy-results.sarif

      - name: 生成 SBOM
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: myapp:${{ github.sha }}
          format: cyclonedx
          output: sbom.cdx.json
```

```yaml
# GitLab CI
trivy-scan:
  stage: security
  image:
    name: aquasecurity/trivy:latest
    entrypoint: [""]
  script:
    - trivy image --exit-code 1 --severity CRITICAL,HIGH
        --format json --output gl-container-scanning-report.json
        $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  artifacts:
    reports:
      container_scanning: gl-container-scanning-report.json
```

### 步骤 6:使用 .trivyignore 执行策略

```bash
# .trivyignore - 忽略特定 CVE(可设置过期时间)
# 已接受风险:开发依赖中的低影响漏洞
CVE-2023-12345 exp:2025-06-01

# 误报:在我们的配置中不可利用
CVE-2024-67890

# 供应商不予修复
CVE-2023-11111
```

### 步骤 7:扫描私有仓库镜像

```bash
# Docker Hub(使用 ~/.docker/config.json)
trivy image myregistry.azurecr.io/myapp:latest

# ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <account>.dkr.ecr.us-east-1.amazonaws.com
trivy image <account>.dkr.ecr.us-east-1.amazonaws.com/myapp:latest

# GCR
trivy image gcr.io/my-project/myapp:latest

# 使用显式凭据
TRIVY_USERNAME=user TRIVY_PASSWORD=pass trivy image registry.example.com/myapp:latest
```

## 验证命令

```bash
# 验证 Trivy 安装
trivy version

# 更新漏洞数据库
trivy image --download-db-only

# 快速扫描(表格输出)
trivy image --severity CRITICAL python:3.12

# 验证无严重漏洞
trivy image --exit-code 1 --severity CRITICAL myapp:latest
echo "退出码:$?"  # 0 = 无漏洞,1 = 发现漏洞
```

## 参考资料

- [Trivy 文档](https://trivy.dev/docs/)
- [Trivy GitHub 仓库](https://github.com/aquasecurity/trivy)
- [Trivy GitHub Action](https://github.com/aquasecurity/trivy-action)
- [Aqua Security - Trivy 扫描器指南](https://www.aquasec.com/products/trivy/)

Related Skills

securing-container-registry-images

9
from killvxk/cybersecurity-skills-zh

通过使用 Trivy 和 Grype 实施漏洞扫描、使用 Cosign 和 Sigstore 强制执行镜像签名、配置镜像仓库访问控制,以及构建阻止部署未扫描或未签名镜像的 CI/CD 流水线,来保护容器仓库(Container Registry)中的镜像安全。

scanning-network-with-nmap-advanced

9
from killvxk/cybersecurity-skills-zh

使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。

scanning-kubernetes-manifests-with-kubesec

9
from killvxk/cybersecurity-skills-zh

使用 Kubesec 对 Kubernetes 资源清单执行安全风险分析,识别错误配置、权限提升风险以及与安全最佳实践的偏差。

scanning-infrastructure-with-nessus

9
from killvxk/cybersecurity-skills-zh

Tenable Nessus 是业界领先的漏洞扫描器,用于识别网络基础设施(包括服务器、工作站、网络设备和操作系统)中的安全弱点。

scanning-containers-with-trivy-in-cicd

9
from killvxk/cybersecurity-skills-zh

本技能涵盖将 Aqua Security 的 Trivy 扫描器集成到 CI/CD 流水线中,用于全面的容器镜像漏洞检测。包括扫描 Docker 镜像中的操作系统包和应用依赖 CVE、检测 Dockerfile 中的错误配置、扫描文件系统和 Git 仓库,以及建立基于严重性的质量门禁以阻止有漏洞的镜像部署。

scanning-container-images-with-grype

9
from killvxk/cybersecurity-skills-zh

使用 Anchore Grype 扫描容器镜像的已知漏洞(Vulnerability),支持基于 SBOM 的匹配和可配置的严重性阈值。

performing-web-application-scanning-with-nikto

9
from killvxk/cybersecurity-skills-zh

Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。

performing-vulnerability-scanning-with-nessus

9
from killvxk/cybersecurity-skills-zh

使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。

performing-sca-dependency-scanning-with-snyk

9
from killvxk/cybersecurity-skills-zh

本技能涵盖使用 Snyk 实施软件成分分析(SCA, Software Composition Analysis),在 CI/CD 流水线中检测存在漏洞的开源依赖项。内容包括扫描包清单和锁文件、自动修复拉取请求生成、许可证合规检查、已部署应用程序的持续监控,以及与 GitHub、GitLab 和 Jenkins 流水线的集成。

performing-ot-vulnerability-scanning-safely

9
from killvxk/cybersecurity-skills-zh

使用被动监控、原生协议查询和经过精心控制的Tenable OT Security主动扫描,在OT/ICS环境中安全执行漏洞扫描,在不破坏工业过程或导致旧版控制器崩溃的情况下识别漏洞。

performing-docker-bench-security-assessment

9
from killvxk/cybersecurity-skills-zh

Docker Bench for Security 是一个开源脚本,用于检查生产环境中部署 Docker 容器的数十项常见最佳实践。基于 CIS Docker Benchmark,审计宿主机配置,生成包含通过/失败/警告结果的合规报告。

performing-container-security-scanning-with-trivy

9
from killvxk/cybersecurity-skills-zh

使用 Aqua Security Trivy 扫描容器镜像、文件系统和 Kubernetes 清单,检测漏洞(Vulnerability)、错误配置、暴露的密钥和许可证合规问题,并生成 SBOM(Software Bill of Materials,软件物料清单)及集成到 CI/CD 流水线。