NeuVector 的 Zero Draft 与 Basic 模式

NeuVector 有 Zero-drift 和 Basic 两种模式,而 Zero-drift 模式是默认模式,根据一个 Nginx 来作为测试案例,观察两种模式下 Process Profile Rules 的效果。

Zero-drift 模式

Discover

在 Discover 下,NV 会自动学习容器运行中的进程并生成 Process Profile Rules

image-1

若发现未授权进程,会触发告警

image-2

但不自动生成 File Access Rules,只有在系统默认监控的目录内进行文件增删改查等动作才会触发告警

image-3

Monitor

Monitor 与 Discover 类似,任何不符合 Process Profile Rules 的活动都会发出警告,但不会阻止操作

Protect

在 Protect 下,对未被授权的进程和文件活动进行强制阻止并发出告警

1
2
3
root@test:~# kubectl exec -it nginx-57b989859-bbh9j -- bash
exec /usr/bin/bash: operation not permitted
command terminated with exit code 1

Basic 模式

Discover

与 Zero-drift 类似,会学习容器进程,但不会对容器中的新进程发出告警,反而会自动学习这些新进程,也就是说在该模式下所有的进程活动都是被允许的;文件监控的规则与 Zero-drift 相同不会自动生成

image-4

Monitor

不会学习新进程,任何未被允许的进程活动都会触发告警

image-5

Protect

行为与 Zero-drift Protect 相同,禁止任何未被允许的进程活动,并触发告警

结论

NeuVector 的 Zero-drift 模式和 Basic 模式主要区别在于 Discover 模式下的行为。Zero-drift 更为严格,确保容器仅运行镜像中定义的进程,不允许任何新的进程运行。而 Basic 模式则更灵活,允许 NeuVector 学习容器内的新进程,并根据这些新活动自动生成规则。两种模式在 Monitor 和 Protect 模式下都会对容器的进程和文件活动进行监控和防护。

Zero-drift 模式

  1. Discover:Zero-drift 会自动分析和学习容器镜像中允许的进程,并自动生成 Process Profile Rules,确保容器只运行在镜像内定义的进程。如果容器内有其他非镜像定义的进程启动,NeuVector 会发出告警。文件访问监控则只针对 NV 默认的监控目录,且不会自动生成 File Access Rules。这种模式更严格地控制容器行为,尤其适用于需要高安全性的场景。

  2. Monitor:和 Discover 相似,NeuVector 会持续监控容器内的进程和文件活动,但不会阻止活动,只会发出警告。如果有任何与规则不匹配的进程或文件操作,都会触发告警。

  3. Protect:在 Protect 下,Zero-drift 会阻止任何与规则不匹配的进程或文件操作,确保容器运行环境的安全。如果发现未授权的进程或文件活动,NeuVector 会立即阻止并发出告警。

Basic 模式

  1. Discover:Basic 模式也会自动学习容器运行的进程,并生成 Process Profile Rules,但与 Zero-drift 模式不同,Basic 模式不会限制新进程的运行,即便有非镜像定义的进程启动,NeuVector 也不会立即发出告警,反而会自动学习这些新进程,创建相应的规则。文件监控的规则则与 Zero-drift 模式相同,依赖于系统默认的监控目录。该模式更灵活,适用于需要动态调整容器进程的场景。

  2. Monitor:在 Monitor 下,Basic 模式不再继续学习新的进程活动,任何未经授权的进程操作都会触发告警。

  3. Protect:在 Protect 下,Basic 模式和 Zero-drift 模式的行为一致,NeuVector 会阻止任何未被授权的进程和文件活动,并发出告警。

Author

Warner Chen

Posted on

2024-10-21

Updated on

2024-10-22

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.