02.neuvector之Enforcer容器功能介绍

Enforcer容器功能介绍

一、功能介绍

Enforcer容器在neuvector中主要负责网络与DLP/WAF的规则策略的实现以及网络数据的采集上报;

以DaemonSet的方式运行,主要有三个进程monitor、agent、dp;进程分别主要职责如下:

  1. monitor:负责监控其他进程是否正常运行以及资源消耗等;
  2. agent:负责与controller容器进行交互,通过grpc与consul实现数据上报与策略下发,其中进程与文件的策略学习与防护由agent做,网络相关具体实现由dp进程实现;
  3. dp:负责网络的数据采集上报,网络拦截告警等相关功能;

二、进程间通信

dp/ctrl.c中的dp_ctrl_loop方法与agent/dp/dp.go中的listenDP和connectDP方法监(”/tmp/dp_listen.sock”和”/tmp/ctrl_listen.sock”)两个socket以实现agent与dp侧数据通信。

相关的通信图如下:

image.png

具体代码如下:

1.agent侧

1.1通过listenDP方法监听socket = “/tmp/ctrl_listen.sock” 从ctrl.c:dp_ctrl_loop获取对应的信息,然后更新威胁日志、域名转换ip、网络连
接、应用的mac地址更新

image.png

1.2 通过monitorDP方法监听 DPServer string = “/tmp/dp_listen.sock”, agent侧在service.go中可以通过dp侧获取到相关数据转化成
CLUSDatapathCounter、CLUSMetry、CLUSSessionCounter、CLUSSession、CLUSMeter等数据, Controller侧通过grpc的方法调用
service的方法获取到上述数据信息。

image.png

2.dp侧

2.1.dp/ctrl.c中的dp_ctrl_loop方法通过与agent监听socket(/tmp/dp_listen.soc)实现从agent侧获取对应的数据。(agent侧最终会将对应key的数据通过dpSendMsgExSilent等方法传输给socket)。

image.png

2.2 dp_ctrl_loop方法收到socket侧的数据后调用dp_ctrl_handler(g_ctrl_fd)函数进行遍历处理,通过识别对应的key采取对应的措施。

image.png


02.neuvector之Enforcer容器功能介绍
https://blog.longpi1.com/2023/12/23/02-neuvector之Enforcer容器功能介绍/