02.neuvector之Enforcer容器功能介绍
Enforcer容器功能介绍
一、功能介绍
Enforcer容器在neuvector中主要负责网络与DLP/WAF的规则策略的实现以及网络数据的采集上报;
以DaemonSet的方式运行,主要有三个进程monitor、agent、dp;进程分别主要职责如下:
- monitor:负责监控其他进程是否正常运行以及资源消耗等;
- agent:负责与controller容器进行交互,通过grpc与consul实现数据上报与策略下发,其中进程与文件的策略学习与防护由agent做,网络相关具体实现由dp进程实现;
- dp:负责网络的数据采集上报,网络拦截告警等相关功能;
二、进程间通信
dp/ctrl.c中的dp_ctrl_loop方法与agent/dp/dp.go中的listenDP和connectDP方法监(”/tmp/dp_listen.sock”和”/tmp/ctrl_listen.sock”)两个socket以实现agent与dp侧数据通信。
相关的通信图如下:
具体代码如下:
1.agent侧
1.1通过listenDP方法监听socket = “/tmp/ctrl_listen.sock” 从ctrl.c:dp_ctrl_loop获取对应的信息,然后更新威胁日志、域名转换ip、网络连
接、应用的mac地址更新
1.2 通过monitorDP方法监听 DPServer string = “/tmp/dp_listen.sock”, agent侧在service.go中可以通过dp侧获取到相关数据转化成
CLUSDatapathCounter、CLUSMetry、CLUSSessionCounter、CLUSSession、CLUSMeter等数据, Controller侧通过grpc的方法调用
service的方法获取到上述数据信息。
2.dp侧
2.1.dp/ctrl.c中的dp_ctrl_loop方法通过与agent监听socket(/tmp/dp_listen.soc)实现从agent侧获取对应的数据。(agent侧最终会将对应key的数据通过dpSendMsgExSilent等方法传输给socket)。
2.2 dp_ctrl_loop方法收到socket侧的数据后调用dp_ctrl_handler(g_ctrl_fd)函数进行遍历处理,通过识别对应的key采取对应的措施。