Aqua Security Trivy插件是一项高级产品,旨在通过与行业领先的漏洞扫描器Trivy(Trivy)无缝集成,增强代码仓库的安全性(Trivy文档)。该插件仅对Aqua Security客户可用,提供超越标准漏洞扫描的高级安全功能。
增强安全扫描:Aqua Security客户可使用高级功能,包括增强的秘密扫描引擎、静态应用安全测试(SAST)、可达性检查等。
更优的秘密扫描:检测代码库和配置文件中的敏感信息(如API密钥和密码),防止潜在泄露。
静态应用安全测试(SAST):分析源代码中的安全漏洞,包括可能导致潜在利用的代码模式。
可达性检查:提供更细致的分析,了解现有漏洞是否可被代码仓库中的包访问。若漏洞可达,可优先修复。
自定义安全策略:根据组织需求定制安全策略,包括严重级别阈值和合规要求。更多信息请参见Aqua***文档。
详细报告:接收全面的安全报告,包含可操作的修复建议。
CI/CD流水线集成:无缝整合到CI/CD流水线中,确保在整个软件开发生命周期中执行严格的安全检查。
适用于需要在软件开发周期中加强代码仓库安全的Aqua Security客户,特别是希望在CI/CD流程中集成自动化安全检查,防止敏感信息泄露、识别代码漏洞并优先修复关键安全问题的组织。
要开始使用Aqua Security Trivy集成保护代码仓库,请联系我们的销售或支持团队,了解更多优势和访问方式。
唯一明确需要的环境变量如下:
| 变量名 | 用途 |
|---|---|
| AQUA_KEY | 通过CSPM UI生成 |
| AQUA_SECRET | 通过CSPM UI生成 |
| 变量名 | 用途 |
|---|---|
| CSPM_URL | Aqua CSPM URL(默认:us-east-1 CSPM) |
| AQUA_URL | Aqua平台URL(默认:us-east-1 Aqua平台) |
Trivy将尝试从可用环境变量中解析以下详细信息:
以下是用于覆盖默认值和行为的环境变量:
| 变量名 | 用途 |
|---|---|
| OVERRIDE_REPOSITORY | 显式指定Trivy使用的仓库名称 |
| FALLBACK_REPOSITORY | 当未找到其他仓库环境变量时作为备份 |
| OVERRIDE_BRANCH | 显式指定Trivy使用的分支 |
| FALLBACK_BRANCH | 当未找到其他分支环境变量时作为备份 |
| OVERRIDE_BUILDSYSTEM | 显式指定构建系统 |
| IGNORE_PANIC | 当CLI发生panic错误时返回退出码0 |
| OVERRIDE_REPOSITORY_URL | 显式指定Trivy使用的仓库链接(用于结果的Web链接) |
| OVERRIDE_REPOSITORY_SOURCE | 显式指定Trivy使用的仓库源 |
| HTTP_PROXY/HTTPS_PROXY | 用于代理配置 |
| XDG_DATA_HOME | 指定存储用户特定数据的基本目录 |
| XDG_CACHE_HOME | 设置缓存目录 |
| SAST_LOGS | 设置为true时将SAST日志写入文件(文件名:${REPOSITORY_NAME}-sast-logs.txt,位于SAST_LOGS_DIR目录下) |
| SAST_LOGS_DIR | 显式指定日志文件写入位置(默认:/tmp/.trivy/plugins/aqua) |
| TRIVY_QUIET | 禁用日志中的Trivy输出报告 |
| AQUA_ASSURANCE_EXPORT | 策略结果导出路径(JSON格式) |
| OVERRIDE_AUTHOR | 覆盖扫描的作者(默认:提交推送者) |
| OVERRIDE_RUN_ID | 覆盖运行ID(默认:SCM运行构建号) |
| OVERRIDE_BUILD_ID | 覆盖作业/构建ID(默认:SCM构建ID) |
| OVERRIDE_TARGET_BRANCH | 覆盖PR扫描的目标分支(默认:SCM目标分支) |
| OVERRIDE_SOURCE_BRANCH | 覆盖PR扫描的源分支(默认:SCM源分支) |
| OVERRIDE_COMMIT | 覆盖提交以丰富SCM链接 |
| OVERRIDE_REPOSITORY_NAME | 覆盖仓库名称(默认:SCM仓库名称) |
| OVERRIDE_REPOSITORY_ID | 覆盖仓库ID(默认:SCM仓库ID) |
| OVERRIDE_PROJECT_NAME | 覆盖项目名称(默认:SCM项目名称 - 在Azure中很重要) |
| OVERRIDE_PULL_REQUEST_ID | 覆盖PR扫描的拉取请求ID(默认:SCM目标拉取请求ID) |
| 参数 | 环境变量 | 用途 | 示例用法 |
|---|---|---|---|
--debug | DEBUG | 获取Trivy运行时的详细输出 | --debug / DEBUG=true |
--severities | TRIVY_SEVERITY | 指定关注的严重级别 | --severities CRITICAL,HIGH,UNKNOWN / TRIVY_SEVERITY=CRITICAL,HIGH,UNKNOWN |
--skip-pipelines | SKIP_PIPELINES | 跳过扫描仓库流水线文件 | --skip-pipelines / SKIP_PIPELINES=true |
--sast | SAST | 启用静态应用安全测试(SAST)扫描 | --sast / SAST=true |
--reachability | REACHABILITY | 启用可达性扫描 | --reachability / REACHABILITY=true |
--package-json | PACKAGE_JSON | 扫描无锁文件的package.json文件 | --package-json / PACKAGE_JSON=true |
--dotnet-proj | DOTNET_PROJ | 扫描无锁文件的dotnet proj文件 | --dotnet-proj / DOTNET_PROJ=true |
--gradle | GRADLE | 扫描无锁文件的gradle构建文件 | --gradle / GRADLE=true |
--skip-policies | TRIVY_SKIP_POLICIES | 跳过策略检查 | --skip-policies / TRIVY_SKIP_POLICIES=true |
--skip-result-upload | TRIVY_SKIP_RESULT_UPLOAD | 禁用将扫描结果上传到Aqua平台 | --skip-result-upload / TRIVY_SKIP_RESULT_UPLOAD=true |
--skip-policy-exit-code | TRIVY_SKIP_POLICY_EXIT_CODE | 当保障策略失败时防止非零退出码 | --skip-policy-exit-code / TRIVY_SKIP_POLICY_EXIT_CODE=true |
--file-patterns | TRIVY_FILE_PATTERNS | 指定用于查找文件的正则表达式模式(例如,当Dockerfile文件名不匹配默认模式时) | --file-patterns="dockerfile:.*.docker" / TRIVY_FILE_PATTERNS="dockerfile:.*.docker" 前缀列表参见此处 |
以下示例展示如何将Aqua Security Trivy集成无缝整合到开发工作流中,可由推送(全量扫描)或拉取请求创建(扫描Git差异)触发:
yamlname: 代码仓库安全扫描 on: pull_request: push: branches: - main jobs: security_scan: runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v2 - name: 运行Aqua扫描器 uses: docker://aquasec/aqua-scanner with: args: trivy fs --scanners misconfig,vuln,secret . env: AQUA_KEY: ${{ secrets.AQUA_KEY }} AQUA_SECRET: ${{ secrets.AQUA_SECRET }} GITHUB_TOKEN: ${{ github.token }} TRIVY_RUN_AS_PLUGIN: "aqua" # 在此处使用其他环境变量
bashAQUA_KEY=${AQUA_KEY} AQUA_SECRET=${AQUA_SECRET} TRIVY_RUN_AS_PLUGIN=aqua docker run -it -e AQUA_KEY -e AQUA_SECRET -e TRIVY_RUN_AS_PLUGIN -e INPUT_WORKING_DIRECTORY=/scanning -v "${YOUR_WORKSPACE}":"/scanning" aquasec/aqua-scanner trivy fs --scanners misconfig,vuln,secret .
bashpodman run --rm \ -e AQUA_KEY=${AQUA_KEY} \ -e AQUA_SECRET=${AQUA_SECRET} \ -e TRIVY_RUN_AS_PLUGIN='aqua' \ -e SAST='true' \ -e INPUT_WORKING_DIRECTORY='/scanning' \ -v ${WORKSPACE}:/scanning \ docker.io/aquasec/aqua-scanner \ git config --global --add safe.directory /scanning && trivy fs --scanners='misconfig,vuln,secret' .
在CI环境中,重要的是包含源代码管理(SCM)令牌以处理拉取请求。有关各SCM的更多指导和详细信息,请参阅Aqua平台文档。
"aqua-scanner"镜像可从Docker Hub的aquasec仓库获取。该镜像用于扫描与具有管理员级别权限的CI构建系统关联的代码仓库。如果需要扫描与具有非root用户权限的CI构建系统关联的代码仓库,请使用带有latest-limited标签的Aqua扫描器镜像,即aquasec/aqua-scanner:latest-limited。此镜像兼容AMD64和ARM64 Linux平台。
以下是在Azure流水线脚本中使用"Push"选项和aqua-scanner:latest-limited的示例代码块。仅当在Azure流水线脚本中添加此代码块时,确保包含选项:-u 0。如果要使用带limited标签的aqua-scanner,并将Aqua UI中的代码块添加到其他仓库托管平台的流水线脚本中,请将aqua-scanner替换为aqua-scanner:latest-limited。
yamltrigger: - main container: image: aquasec/aqua-scanner:latest-limited options: -u 0 env: AQUA_KEY: $(AQUA_KEY) AQUA_SECRET: $(AQUA_SECRET) AZURE_TOKEN: $(AZURE_TOKEN) TRIVY_RUN_AS_PLUGIN: aqua steps: - checkout: self fetchDepth: 0 - script: | trivy fs --scanners misconfig,vuln,secret . displayName: Aqua扫描器
该插件设计用于Docker环境,兼容Linux容器。对Gradle无锁文件扫描的支持从Gradle 7.0.0开始,支持Groovy和Kotlin DSL。
本GitHub仓库采用Apache License 2.0许可证。它仅对Aqua Security客户开放,并非开源软件。有关许可详情,请联系Aqua Security。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429