news 2026/9/12 15:49:59

Trivy 客户端-服务器模式下多个 server 如何用 Redis 共享缓存并配置 --token 鉴权

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Trivy 客户端-服务器模式下多个 server 如何用 Redis 共享缓存并配置 --token 鉴权

Trivy 客户端-服务器模式下多个 server 如何用 Redis 共享缓存并配置 --token 鉴权

【免费下载链接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more项目地址: https://gitcode.com/GitHub_Trending/tr/trivy

当你同时运行多个 Trivy server(例如为不同集群或主机上的扫描客户端提供服务)时,客户端扫描可能失败并报出类似下面的错误:

$ trivy image --server http://xxx.com:xxxx test-image ... - twirp error internal: failed scan, test-image: failed to apply layers: layer cache missing: sha256:*****

原因是各 server 默认使用本地文件系统(fs)作为 scan cache,A server 写入的层分析结果对 B server 不可见,B 扫描时就会找不到 layer cache。解决办法是让所有 server 使用同一个 Redis 作为 cache backend,使多个 server 共享扫描分析结果;同时按文档的安全要求,为 server 配置--token鉴权再暴露给客户端。完成本文操作后,多个 server 共用一份 Redis 缓存、客户端通过 token 访问任一 server 均可完成扫描。

前置条件:各 server 主机上已安装 Trivy,并且每台 server 都能访问同一个 Redis 实例(文档给出的地址格式为redis://[HOST]:[PORT])。

启动使用 Redis 共享缓存的多个 Trivy server

在每台 server 上运行trivy server,并通过--cache-backend指向同一个 Redis 实例。注意客户端要远程连接 server,因此监听地址不能是localhost,需指定0.0.0.0或主机 IP:

$ trivy server --listen 0.0.0.0:8080 \ --cache-backend redis://<REDIS_HOST>:6379 \ --token dummy

命令中各参数的依据:

  • --listen 0.0.0.0:8080:server 默认只监听localhost:4954;要接受其他主机的连接,必须指定0.0.0.0或 IP 地址。
  • --cache-backend redis://<REDIS_HOST>:6379:将 scan cache 后端从默认的fs切换为 Redis,<REDIS_HOST>替换为你可访问的 Redis 地址。该参数属于 EXPERIMENTAL 特性,文档提示其行为可能在不保持向后兼容的情况下变化。
  • --token dummy:开启 client/server 模式鉴权,token 值可自定义,但 server 与所有客户端必须一致。

多个 server 使用同一命令(各自主机上运行)指向同一个 Redis 后,任一台 server 写入的层分析结果,其他 server 都能从 Redis 读到,从而避免layer cache missing错误。

如果 Redis 启用了 TLS,可加--redis-tls使用公共证书;使用自签证书时改用--redis-ca--redis-cert--redis-key指定文件路径:

$ trivy server --cache-backend redis://<REDIS_HOST>:6379 --redis-tls
$ trivy server --cache-backend redis://<REDIS_HOST>:6379 \ --redis-ca /path/to/ca-cert.pem \ --redis-cert /path/to/cert.pem \ --redis-key /path/to/key.pem

可选地,Redis 缓存条目的过期时间用--cache-ttl配置;默认值见trivy clean/server 帮助,文档未给出具体默认时长,按需指定即可。

如果你倾向用配置文件而不是命令行参数,trivy.yaml中对应的项与上述参数一一对应(配置文件路径通过--config指定,默认为trivy.yaml):

cache: backend: "redis://<REDIS_HOST>:6379" redis: tls: false ca: "" cert: "" key: "" ttl: 0s server: listen: "0.0.0.0:8080" token: "dummy"

客户端通过 --token 连接 server

在客户端所在主机上,--server指定 server 地址,--token填入与 server 相同的值。文档特别强调:server 地址必须带协议(http 或 https):

$ trivy image --server http://<SERVER_HOST>:8080 --token dummy alpine:3.10

token 的传输 header 名称默认为Trivy-Token,两端都可用--token-header修改为其他名称。

验证配置是否生效

文档提供了两个不需要鉴权的 server 端点,可用于先确认 server 本身已起来:

curl -s 0.0.0.0:8080/healthz ok

/healthz返回ok且状态为200 OK表示 server 在运行。/version端点返回 server 版本和漏洞库元数据:

curl -s 0.0.0.0:8080/version | jq

文档示例输出(示例结果,数值以你实际环境为准):

{ "Version": "dev", "VulnerabilityDB": { "Version": 2, "NextUpdate": "2023-07-25T14:15:29.876639806Z", "UpdatedAt": "2023-07-25T08:15:29.876640206Z", "DownloadedAt": "2023-07-25T09:36:25.599004Z" } }

随后用客户端对同一镜像分别从不同 server 发起扫描。如果各 server 都基于本地fs缓存时出现的layer cache missing错误不再出现、扫描正常返回漏洞列表,说明 Redis 共享缓存已生效。扫描成功时的表格输出形如(文档示例):

alpine:3.10 (alpine 3.10.2) =========================== Total: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 2, HIGH: 0, CRITICAL: 0)

此外可验证 token 鉴权:不带--token或使用错误 token 的客户端请求无法通过鉴权,只有--token与 server 一致时扫描请求才生效。

限制与安全边界

  • --token同时控制扫描 API 和缓存 API 的访问,但不提供按客户端的权限区分或租户隔离:持有 token 的客户端可以写入和删除共享缓存条目,从而影响其他客户端的扫描结果。文档明确建议:互不信任的客户端应使用相互独立的 server 实例和独立的缓存存储,即使使用 Redis 后端也不例外。
  • Trivy server 本身只提供 HTTP。对外暴露时,除配置--token和限制网络访问范围外,文档建议通过 TLS 终结的反向代理或等效安全传输来保护连接。
  • Redis 缓存后端是 EXPERIMENTAL 特性,升级 Trivy 版本时留意行为变化。
  • client/server 模式本身不影响扫描职责划分:漏洞、License 扫描在 server 端执行,misconfiguration 与 secret 扫描仍在 client 端本地执行。

相关文档:client-server 模式、缓存配置、故障排查、trivy server 参数。

【免费下载链接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more项目地址: https://gitcode.com/GitHub_Trending/tr/trivy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 15:48:47

数据编排与治理:企业数字化转型的核心技术

1. 数据编排与大数据治理的核心价值在数字化转型浪潮中&#xff0c;企业数据资产正经历从"被动存储"到"主动赋能"的质变。我亲历过某零售集团的数据治理项目&#xff0c;当他们把分散在37个系统的客户数据统一后&#xff0c;促销转化率提升了210%。这印证了…

作者头像 李华
网站建设 2026/9/12 15:46:44

免授权SP_Flash_Tool解压版:MTK定制刷机平台与DA写入实战指南

简介&#xff1a;针对小米、vivo、OPPO、诺基亚等采用MTK芯片的机型&#xff0c;这份免授权定制的SP_Flash_Tool刷机平台可绕过常规授权限制直接完成刷写&#xff0c;适合手机维修从业者与进阶刷机用户使用。平台内置授权选项&#xff0c;刷机时可按需勾选&#xff0c;并附有实…

作者头像 李华
网站建设 2026/9/12 15:46:41

PyTorch人脸表情识别工业落地全链路指南

简介&#xff1a;本资源是一套基于PyTorch实现的人脸表情识别完整项目源码&#xff0c;面向计算机、电子信息、人工智能等专业的本科生与研究生&#xff0c;适用于课程设计、期末大作业及毕业设计参考。项目涵盖数据预处理、模型训练、实时视频检测与图像可视化等核心模块&…

作者头像 李华
网站建设 2026/9/12 15:45:42

微信聊天记录导出与永久保存:WeChatMsg完整指南

微信聊天记录导出与永久保存&#xff1a;WeChatMsg完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …

作者头像 李华