如何在Kubernetes中利用Trivy扫描集群内所有节点的系统组件漏洞

胖墨吖_7971

胖墨吖_7971

2026-04-27

480人浏览

原创

Trivy k8s 默认不扫描节点漏洞,因其仅读取API资源,不访问节点文件系统;需显式启用--enable-node-collector,并配置RBAC权限、tolerations及宿主机路径挂载,否则节点OS组件(如kubelet、containerd)漏洞完全遗漏。

如何在kubernetes中利用trivy扫描集群内所有节点的系统组件漏洞

Trivy 默认不扫描节点系统组件(如 kubelet、containerd、内核模块),必须显式启用节点收集器并确保权限到位,否则 trivy k8s 命令只会检查 API 资源配置,不会触达节点文件系统。

为什么 trivy k8s 默认不查节点漏洞

Trivy 的 trivy k8s 命令默认只读取 Kubernetes API 中的资源对象(如 Pod、Deployment、ConfigMap),它本身不登录或挂载节点磁盘。节点上的操作系统包、运行时二进制(kubelet、containerd)、内核模块等属于“主机层”,需通过 NodeCollector 作业以 Pod 形式在节点上执行本地扫描。

  • 不启用 --enable-node-collector 时,所有节点相关漏洞(如 CVE-2023-24538 in containerd)完全不会出现在报告中
  • 即使启用了,若 ServiceAccount 缺少 node 资源的 get/list 权限,收集器会静默失败
  • 扫描结果中的 OS Packages 类型漏洞,仅来自节点上 /var/lib/dpkg(Debian)或 /var/lib/rpm(RHEL)等路径,与容器镜像扫描无关

启用节点扫描必须做的三件事

要让 Trivy 真正看到节点系统组件的漏洞,得同时满足以下条件:

  • 命令中加上 --enable-node-collector(注意不是 --disable-node-collector)
  • 确保当前 kubectl 上下文所用的 ServiceAccount 具备 nodes 资源的 get、list、watch 权限(通常需绑定 cluster-admin 或自定义 ClusterRole)
  • 节点必须允许容忍(tolerations)和挂载宿主机路径:Trivy NodeCollector 需要挂载 /proc、/sys、/var/lib/dpkg(或对应发行版路径)才能读取系统状态

典型命令示例:

trivy k8s --report summary cluster --enable-node-collector --tolerations 'key: node-role.kubernetes.io/master,operator: Exists,effect: NoSchedule' --exclude-nodes 'kubernetes.io/os=windows'

--exclude-nodes 和 --tolerations 不是可选项,而是必填项

很多用户卡在“节点没被扫描到”,实际是因为:

Kubernetes RBAC Audit
Kubernetes RBAC Audit

审计 Kubernetes 集群 RBAC 配置,识别过度宽松的角色、通配符权限、危险的 ClusterRoleBinding 及服务账号滥用

下载
  • 集群里有 Windows 节点,但 Trivy NodeCollector 目前不支持 Windows 主机扫描,不加 --exclude-nodes 'kubernetes.io/os=windows' 会导致 collector Pod 在 Windows 节点上启动失败并跳过整个节点池
  • 控制平面节点打了 NoSchedule 污点,但 collector Job 没配对应 tolerations,结果根本调度不上控制面节点,导致 apiserver、etcd 等组件漏扫
  • 使用 --include-kinds node 没用——node 是 Kubernetes API 对象,不是可扫描的“系统组件”;真正要扫的是节点 OS 层,靠的是 collector 作业,不是资源过滤

扫描结果里哪些行代表节点系统漏洞

运行成功后,报告中会出现形如以下的条目,它们才是节点系统组件的真实漏洞:

  • node/worker-1: os-pkgs: libsystemd0 (245.4-4ubuntu3.22) → 表示该节点 Debian 系统上 systemd 包存在已知 CVE
  • node/control-plane-0: os-pkgs: containerd.io (1.6.28-1) → 表示该节点手动安装的 containerd 二进制存在漏洞
  • node/worker-2: config: kubelet (1.28.9) → 表示 kubelet 版本低于 CIS 建议的最小安全版本(非 CVE,但属加固问题)

注意:os-pkgs 类型只出现在 node/xxx 前缀行;而 image/xxx 或 pod/xxx 开头的仍是容器镜像或工作负载层面的漏洞,和节点系统无关。

节点扫描依赖宿主机路径挂载和足够权限,一旦 collector Pod 因 toleration 缺失、污点不匹配或 RBAC 不足而处于 Pending 或 CrashLoopBackOff,就等于没扫——这点很容易被忽略,且错误不会直接报在终端,得查 kubectl get jobs -n trivy-system 和对应 Pod 日志。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

kubernetes

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

2025.12.22

116

5

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

2026.06.29

228

19

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

80

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

40

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

80

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

60

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

60

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

60

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

60

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习