Deploys Aqua Security's Trivy scanner to detect vulnerabilities, misconfigurations, secrets, SBOM, and licenses in container images, filesystems, repos, Kubernetes, and IaC via CI/CD.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
Aqua Security 提供 Trivy,这是全球最流行的开源通用安全扫描器,旨在发现容器、Kubernetes、代码仓库和云环境中的漏洞、配置错误、敏感信息、SBOM 数据和许可证问题。Trivy 涵盖操作系统软件包(Alpine、Debian、Ubuntu、RHEL 等)和特定语言的依赖项(npm、pip、Maven、Go modules、Cargo 等),漏洞数据库来源于 NVD、供应商公告和 GitHub Security Advisories。企业版 Aqua Platform 在 Trivy 基础上扩展了集中式策略管理、运行时保护和合规性报告功能。
Deploys Aqua Security's Trivy scanner to detect vulnerabilities, misconfigurations, secrets, and license issues in container images across CI/CD pipelines and registries.
Deploys Trivy scanner to detect vulnerabilities, misconfigurations, secrets, SBOM, and licenses in container images, repos, and Kubernetes via CI/CD pipelines.
Scans container images, filesystems, and Kubernetes manifests with Trivy for vulnerabilities, misconfigurations, secrets, and licenses. Generates SBOMs and integrates into CI/CD pipelines like GitHub Actions.
Share bugs, ideas, or general feedback.
Aqua Security 提供 Trivy,这是全球最流行的开源通用安全扫描器,旨在发现容器、Kubernetes、代码仓库和云环境中的漏洞、配置错误、敏感信息、SBOM 数据和许可证问题。Trivy 涵盖操作系统软件包(Alpine、Debian、Ubuntu、RHEL 等)和特定语言的依赖项(npm、pip、Maven、Go modules、Cargo 等),漏洞数据库来源于 NVD、供应商公告和 GitHub Security Advisories。企业版 Aqua Platform 在 Trivy 基础上扩展了集中式策略管理、运行时保护和合规性报告功能。
trivy)或用于 Kubernetes 的 Trivy OperatorTrivy 逐层扫描容器镜像,识别操作系统软件包和应用程序依赖项中的 CVE。支持扫描本地镜像、远程镜像仓库镜像和 tar 归档文件。
# 扫描远程镜像
trivy image python:3.11-slim
# 按严重性过滤扫描
trivy image --severity HIGH,CRITICAL nginx:latest
# 扫描并在发现严重 CVE 时使 CI 失败
trivy image --exit-code 1 --severity CRITICAL myapp:latest
# 以 CycloneDX 格式生成 SBOM
trivy image --format cyclonedx --output sbom.json myapp:latest
# 扫描项目目录中依赖项的漏洞
trivy fs --scanners vuln,secret,misconfig .
# 扫描特定锁定文件
trivy fs --scanners vuln package-lock.json
# 扫描 git 仓库
trivy repo https://github.com/org/project
Trivy Operator 在 Kubernetes 集群内运行,持续扫描工作负载:
# 通过 Helm 安装 Trivy Operator
helm repo add aqua https://aquasecurity.github.io/helm-charts/
helm repo update
helm install trivy-operator aqua/trivy-operator \
--namespace trivy-system \
--create-namespace \
--set trivy.severity="HIGH,CRITICAL" \
--set operator.scanJobTimeout="5m"
Operator 为每个工作负载创建 VulnerabilityReport 和 ConfigAuditReport 自定义资源。
# 扫描 Terraform 文件
trivy config --severity HIGH,CRITICAL ./terraform/
# 扫描 Dockerfile 的配置错误
trivy config Dockerfile
# 扫描 Kubernetes 清单
trivy config ./k8s-manifests/
name: Container Security Scan
on:
push:
branches: [main]
pull_request:
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: 'myapp:${{ github.sha }}'
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
exit-code: '1'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: 'trivy-results.sarif'
container_scanning:
stage: security
image:
name: aquasec/trivy:latest
entrypoint: [""]
variables:
FULL_IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
script:
- trivy image --exit-code 0 --format template --template "@/contrib/gitlab.tpl"
--output gl-container-scanning-report.json $FULL_IMAGE_NAME
- trivy image --exit-code 1 --severity CRITICAL $FULL_IMAGE_NAME
artifacts:
reports:
container_scanning: gl-container-scanning-report.json
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'docker build -t myapp:${BUILD_NUMBER} .'
}
}
stage('Security Scan') {
steps {
sh '''
trivy image --exit-code 1 \
--severity HIGH,CRITICAL \
--format json \
--output trivy-report.json \
myapp:${BUILD_NUMBER}
'''
}
post {
always {
archiveArtifacts artifacts: 'trivy-report.json'
}
}
}
}
}
创建 .trivy/policy.rego 用于自定义策略执行:
package trivy
deny[msg] {
input.Results[_].Vulnerabilities[_].Severity == "CRITICAL"
msg := "Critical vulnerabilities found in image"
}
deny[msg] {
input.Results[_].Vulnerabilities[vuln]
vuln.FixedVersion != ""
vuln.Severity == "HIGH"
msg := sprintf("Fixable HIGH vulnerability: %s", [vuln.VulnerabilityID])
}
创建 .trivyignore 用于已接受的风险:
# Accepted risk: vulnerability in test dependency only
CVE-2023-12345
# Accepted until expiry date
CVE-2024-67890 exp:2025-06-01
# 生成 CycloneDX SBOM
trivy image --format cyclonedx --output sbom-cyclonedx.json myapp:latest
# 生成 SPDX SBOM
trivy image --format spdx-json --output sbom-spdx.json myapp:latest
# 扫描现有 SBOM 中的新漏洞
trivy sbom sbom-cyclonedx.json
| 指标 | 描述 | 目标 |
|---|---|---|
| 每日扫描镜像数 | 通过扫描管道的镜像总数 | 所有生产镜像 |
| 严重 CVE 数量 | 所有镜像中未修复的严重漏洞 | 生产环境为 0 |
| 平均修复时间 | 从 CVE 发布到镜像修补的平均天数 | < 7 天 |
| SBOM 覆盖率 | 已生成 SBOM 的生产镜像百分比 | 100% |
| 扫描时长 | 每次镜像扫描的平均时间 | < 2 分钟 |