
网络安全应用安全云原生漏洞扫描【免费下载链接】ThreatMapperOpen Source Cloud Native Application Protection Platform (CNAPP)项目地址https://gitcode.com/gh_mirrors/th/ThreatMapper点击查看免费下载本指南面向需要基于自研或私有化镜像部署 ThreatMapper 传感器Sensor Agent的开发者与运维人员讲解如何先构建并推送自定义 Agent 镜像再分别通过docker run与 Helm Chart 两种方式将 Agent 部署到 Docker 主机和 Kubernetes 集群并深入解析镜像仓库替换、MGMT_CONSOLE_URL、DEEPFENCE_KEY等关键参数的作用原理。读完本文你将能够完全脱离 Deepfence 官方镜像仓库在自己的环境中完成传感器全生命周期管理部署、验证、升级、卸载。前置条件先构建镜像并推送至自有仓库部署自定义传感器之前必须先在构建机上完成 ThreatMapper 的源码构建并将生成的镜像推送到一个可访问的镜像仓库。官方推荐的构建流程记录在 构建指南 中核心步骤为git clone ThreatMapper 仓库地址 cd ThreatMapper make构建过程会产出管理控制台与传感器相关的多个容器镜像并保存在本地 Docker 仓库中。若要在其他主机上部署传感器需要将deepfence_agent_ce普通传感器与deepfence_cluster_agent_ce集群传感器推送到你的镜像仓库例如 DockerHubACCmyorg # 你的 dockerhub 账户名 docker login -u $ACC # 登录账户 for IMG in \ deepfence_redis_ce \ deepfence_postgres_ce \ deepfence_kafka_broker_ce \ deepfence_router_ce \ deepfence_file_server_ce \ deepfence_server_ce \ deepfence_worker_ce \ deepfence_ui_ce \ deepfence_agent_ce \ deepfence_cluster_agent_ce \ deepfence_package_scanner_ce \ deepfence_malware_scanner_ce \ deepfence_secret_scanner_ce \ deepfence_neo4j_ce do docker tag deepfenceio/$IMG $ACC/$IMG:latest docker push $ACC/$IMG:latest done完成镜像推送后就可以把标准安装文档Docker 安装指南、Kubernetes 安装指南中的镜像引用从 Deepfence 官方地址替换为你自己的镜像地址其余安装逻辑完全一致。从源码结构看Agent 镜像并非单一二进制在 deepfence_agent/Dockerfile 中secret_build、package_build、malware_build、compliance_build四个构建阶段分别把 SecretScanner、Syft/package-scanner、YaraHunter、compliance 扫描器集成进最终镜像同时内置docker、vessel、nerdctl、crictl等工具用于与宿主机容器运行时交互。因此推送镜像时上述扫描器基础镜像同样需要一并推送。在 Docker 主机上安装并运行自定义 Sensor AgentLinux Docker 主机上的 ThreatMapper 传感器以一个轻量容器形式运行。参照 Docker 安装指南 的部署形态把镜像地址替换为你的仓库即可ACCmyorg # 你的 dockerhub 账户名 docker login -u $ACC # 登录账户 docker run -dit \ --cpus.2 \ --namedeepfence-agent \ --restart on-failure \ --pidhost \ --nethost \ --log-driver json-file \ --log-opt max-size50m \ --privilegedtrue \ -v /sys/kernel/debug:/sys/kernel/debug:rw \ -v /var/log/fenced \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /:/fenced/mnt/host/:ro \ -e DF_LOG_LEVELinfo \ -e CUSTOM_TAGS \ -e MGMT_CONSOLE_URL---CONSOLE-IP--- \ -e MGMT_CONSOLE_PORT443 \ -e DEEPFENCE_KEY---DEEPFENCE-API-KEY--- \ -e http_proxy \ -e https_proxy \ -e no_proxy \ $ACC/deepfence_agent_ce:THREATMAPPER_VERSION其中THREATMAPPER_VERSION是你构建/推送时使用的版本标签官方仓库同时提供quay.io/deepfenceio/deepfence_agent_ce:THREATMAPPER_VERSION-multiarch多架构镜像支持 amd64 与 arm64/v8 架构。若使用 Podman将命令中的docker换成podman并将-v /var/run/docker.sock:/var/run/docker.sock替换为-v /run/podman/podman.sock:/run/podman/podman.sock同时挂载-v /run/systemd/:/run/systemd/部署前需确保 Podman system serviceAPI service已启动。关键启动参数说明参数/环境变量含义与作用--pidhost/--nethost与宿主机共享 PID 与网络命名空间是 Agent 观测宿主机进程与网络的基础--privilegedtrue授予容器特权用于内核级采集与合规检查-v /sys/kernel/debug:/sys/kernel/debug:rw挂载内核调试文件系统供漏洞/合规等内核态探测使用-v /var/run/docker.sock:/var/run/docker.sock挂载 Docker Socket用于发现宿主上的容器与镜像-v /:/fenced/mnt/host/:ro只读挂载宿主机根文件系统供恶意软件、机密等扫描器读取宿主文件-v /var/log/fenced挂载扫描日志目录malware-scan、secret-scan、compliance 等子目录MGMT_CONSOLE_URL/MGMT_CONSOLE_PORT管理控制台的地址与端口Agent 据此反向连接控制台默认 443DEEPFENCE_KEY管理控制台的 API Key用于 Agent 身份认证DF_LOG_LEVEL日志级别取值为debug/info/error默认infoCUSTOM_TAGS逗号分隔的自定义标签例如dev,front-end用于在 UI 中标识节点http_proxy/https_proxy/no_proxy当控制台位于代理之后时Agent 通过该代理与控制台通信环境变量在 Agent 内部的真实作用链路这些环境变量并非表面参数而是直接驱动 Agent 的启动逻辑在 deepfence_agent/run_discovery.sh 中MGMT_CONSOLE_URL与MGMT_CONSOLE_PORT会拼接成https://$MGMT_CONSOLE_URL:$MGMT_CONSOLE_PORTDEEPFENCE_KEY作为--probe.token传入deepfence-discovery探测进程DF_LOG_LEVEL映射为--probe.log.level默认info。脚本还会调用vessel自动探测宿主机容器运行时docker/containerd/crio/podman再按探测结果选择对应的--probe.docker/--probe.cri/--probe.podman参数启动探测。在 deepfence_agent/tools/apache/deepfence/df-utils/utils.go#L26-L36 中GetCustomTags()读取CUSTOM_TAGS环境变量按逗号切分并TrimSpace去除首尾空白后作为节点标签上报。在 deepfence_agent/start_agent.sh 中启动阶段会创建/var/log/fenced下的扫描日志目录、配置 logrotate 定时任务并通过 supervisord 拉起全部 Agent 子进程DEEPFENCE_KEY、MGMT_CONSOLE_URL等环境变量还会被注入到 fluentbitshipper配置中用于日志回传。通过代理服务器访问控制台如果管理控制台需要通过代理访问有两种方式在docker run时直接设置http_proxy、https_proxy环境变量Agent 会使用该代理与控制台通信即上文命令中预留的空变量或者配置 Docker 客户端全局代理编辑~/.docker/config.json{ auths: { https://index.docker.io/v1/: { auth: } }, HttpHeaders: { User-Agent: Docker-Client/19.03.1 (linux) }, proxies: { default: { httpProxy: http://111.111.111.111:8006, httpsProxy: http://111.111.111.111:8006, noProxy: localhost,127.0.0.1 } } }随后重启 Docker 守护进程sudo systemctl restart docker。升级传感器升级 Docker 传感器时先停止旧容器再以新版本镜像标签启动新容器即可docker stop deepfence-agent docker rm deepfence-agent # 使用新版本标签重新执行 docker run在 Kubernetes 集群中部署自定义 Sensor Agent在 Kubernetes 中传感器以 DaemonSet 形态运行集群传感器则以单 Pod 形式运行统一通过 Helm Chart 管理适用于独立集群与托管集群EKS、AKS、GKE 等。注意deepfence-consoleChart 默认会在其部署的集群中同时运行 agent 与 cluster-agent Pod因此无需再额外安装deepfence-agentChart。快速安装--set 方式helm repo add deepfence https://artifacts.threatmapper.org/helm-charts/threatmapper helm repo update helm install deepfence-agent deepfence/deepfence-agent \ --set managementConsoleUrlx.x.x.x \ --set deepfenceKey73f6f3d0-9931-4b31-8967-fd6adf475f80 \ --set global.imageTagTHREATMAPPER_VERSION \ --set clusterNameprod-cluster \ --set mountContainerRuntimeSocket.containerdSocktrue \ --set mountContainerRuntimeSocket.dockerSockfalse \ --set mountContainerRuntimeSocket.crioSockfalse \ --set mountContainerRuntimeSocket.podmanSockfalse \ --set mountContainerRuntimeSocket.containerdSockPath/run/containerd/containerd.sock \ --set logLevelinfo \ --namespace deepfence \ --create-namespace \ --version TM_AGENT_HELM_CHART_VERSION要点说明clusterName是集群名称/标识不同集群必须使用不同值如prod-cluster-1、test-cluster它会作为主机名前缀出现在 Deepfence UI 中容器运行时 Socket 的挂载需与实际运行时匹配默认 Chart 中 containerd 开启、docker 关闭在 Minikube 等特殊平台上若 Agent 无法启动可尝试将containerdSock设为false官方镜像标签quay.io/deepfenceio/deepfence_agent_ce:THREATMAPPER_VERSION-multiarch支持 amd64 与 arm64/v8。细调部署values 文件方式需要替换为自定义镜像或深度调优时推荐导出 values 文件后修改helm repo add deepfence https://artifacts.threatmapper.org/helm-charts/threatmapper helm repo update helm show values deepfence/deepfence-agent --version TM_AGENT_HELM_CHART_VERSION deepfence_agent_values.yaml # 必须更新以下值 # managementConsoleUrl 和 deepfenceKey - 指定你的控制台 IP/URL 与 API Key # image:name 和 image:clusterAgentImageName - 改为指向你的自定义镜像 # 可按需调整其他值例如 # containerdSock - 在 Minikube 等平台上 Agent 启动失败时可设为 false vim deepfence_agent_values.yaml helm install -f deepfence_agent_values.yaml deepfence-agent deepfence/deepfence-agent \ --namespace deepfence \ --create-namespace \ --version TM_AGENT_HELM_CHART_VERSION允许容器在 Kubernetes 环境中拉取并部署等待数秒即可完成。替换自定义镜像的完整参数对照deepfence-agent values.yaml 定义了全部可调参数部署自定义传感器时重点修改以下内容Values 参数默认值说明global.imageTag2.5.8当前仓库版本全局镜像标签所有 Agent 组件统一使用agent.image.namequay.io/deepfenceio/deepfence_agent_ce普通传感器镜像改为你的镜像仓库地址cluster_agent.image.namequay.io/deepfenceio/deepfence_cluster_agent_ce集群传感器镜像改为你的镜像仓库地址managementConsoleUrl空控制台 IP/URL必填managementConsolePort443控制台端口deepfenceKey空API KeyUI → Settings → User Management 获取必填createDeepfenceKeySecrettrue是否由 Chart 创建存放 Key 的 SecretclusterName空集群名称作为主机名前缀logLevelinfoPod 日志级别debug/info/errorinstanceIdSuffixN是否给主机名追加云实例 ID区分同名 AMI 实例customTags空逗号分隔的节点自定义标签enableGraphReporttrue是否启用进程/连接图数据上报mountContainerRuntimeSocket.*containerd 开启各容器运行时 Socket 开关与路径imagePullSecretcreate: false私有仓库拉取凭据自定义仓库需开启并填写用户名密码agent.resourcesrequests 150m/512Milimits 1500m/1536Mi传感器资源配额cluster_agent.resourcesrequests 25m/80Milimits 1500m/1536Mi集群传感器资源配额私有仓库与 Key 的底层实现从 Chart 模板可以确认自定义镜像与认证机制的实际落地方式镜像替换在 templates/daemonset.yaml 中容器镜像由{{ .Values.agent.image.name }}:{{ default .Values.global.imageTag .Values.agent.image.tag }}渲染即“镜像名 标签”完全由 values 驱动该模板同时把MGMT_CONSOLE_URL、MGMT_CONSOLE_PORT、DF_KUBERNETES_ONY、DF_CLUSTER_NAME、CUSTOM_TAGS、DF_LOG_LEVEL、代理变量以及DOCKER_SOCKET_PATH/CONTAINERD_SOCKET_PATH等运行时 Socket 路径注入容器环境并将/sys/kernel/debug、宿主机根目录只读、/var/log/fenced等挂载进 Pod与 Docker 部署的参数一一对应。Key 下发在 templates/secret.yaml 中deepfenceKey被 base64 编码写入名为release-key的 Opaque SecretDaemonSet 通过secretKeyRef引用该 Secret 填充DEEPFENCE_KEY环境变量。若你的环境中已存在外部定义的 Secret可将createDeepfenceKeySecret设为false。私有仓库拉取设置imagePullSecret.create: true并填写registry、username、password后Chart 会生成kubernetes.io/dockerconfigjson类型的 Secret 用于拉取自定义镜像。完整可参考 deepfence-agent Chart 文档。部署验证、卸载与容器运行时识别验证部署状态kubectl get daemonset -n deepfence kubectl get pods -n deepfence随后即可在管理控制台的拓扑与主机列表中看到以clusterName-hostname命名的传感器节点。删除传感器helm delete deepfence-agent -n deepfence # 或helm uninstall deepfence-agent -n deepfence识别集群容器运行时如果不知道集群使用哪种容器运行时可先执行kubectl get nodes -ocustom-columnsNAME:.metadata.name,Runtime:.status.nodeInfo.containerRuntimeVersion之后在安装时按结果设置对应的mountContainerRuntimeSocket.*Sock开关与 Socket 路径。即便配置有出入Agent 容器内的vessel工具也会在启动时自动探测实际运行时见 deepfence_agent/run_discovery.sh并据此选择 docker/containerd/crio/podman 对应的探测参数这也是 DaemonSet 模板中挂载多种 Socket 的原因所在。小结部署自定义 ThreatMapper 传感器可以概括为三步其一通过make构建并推送deepfence_agent_ce、deepfence_cluster_agent_ce等镜像到自有仓库其二在 Docker 主机上用docker run以--privileged 宿主机命名空间 多卷挂载的方式拉起 Agent并通过MGMT_CONSOLE_URL、DEEPFENCE_KEY、DF_LOG_LEVEL、CUSTOM_TAGS等环境变量完成与控制台的对接与行为定制其三在 Kubernetes 集群中通过deepfence-agentHelm Chart 以 DaemonSet 方式批量部署替换agent.image.name、cluster_agent.image.name并填写控制台地址与 Key。理解环境变量与 Chart values 到底如何驱动run_discovery.sh、start_agent.sh与 DaemonSet 模板参见 run_discovery.sh、start_agent.sh、daemonset.yaml就能在离线、私有化或定制镜像场景下稳定复现官方部署行为。赞分享网络安全应用安全云原生漏洞扫描【免费下载链接】ThreatMapperOpen Source Cloud Native Application Protection Platform (CNAPP)项目地址https://gitcode.com/gh_mirrors/th/ThreatMapper点击查看免费下载相关推荐Polar 前端性能实践用战略性 Suspense 边界消除异步阻塞加速首屏渲染Polar 前端性能实践用战略性 Suspense 边界消除异步阻塞加速首屏渲染 导读 在 React 与 Next.js 应用中异步组件在返回 JSX网络安全应用安全云原生漏洞扫描ThreatMapper 传感器Sensor Agent部署实战从 Docker、Kubernetes 到 AWS 的完整安装指南ThreatMapper 传感器Sensor Agent部署实战从 Docker、Kubernetes 到 AWS 的完整安装指南 ThreatMappe网络安全应用安全云原生漏洞扫描Mage AI 自建 Spark 集群基于自定义 Docker 镜像与 Helm 的 Standalone 部署实战指南Mage AI 自建 Spark 集群基于自定义 Docker 镜像与 Helm 的 Standalone 部署实战指南 本篇技术指南围绕 Mage AI 仓数据工程数据编排ETL任务调度批处理流处理数据集成后端前端上一篇如何在Godot中快速创建专业对话系统Dialogic 2终极指南下一篇Vanna 2.0企业级自然语言SQL生成框架的技术深度解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考