链载Ai

标题: 设备巡检的新范式:Agent PAN-OS MCP [打印本页]

作者: 链载Ai    时间: 昨天 22:03
标题: 设备巡检的新范式:Agent PAN-OS MCP

写在前面:



起了个比较俗气的标题,还请大家见谅。

虽然上篇文章对 MCP 有不少批判,但忽略那些缺陷,单纯作为辅助工具用起来还是挺丝滑的。

本文算是对 MCP 工具设计及使用的总结,希望可以帮到大家。


TL;DR


pan-os-mcp 项目概要

最近随着 MCP 大火,不少客户开始问我们是否支持 MCP(关于 MCP 的背景知识,可以阅读上篇文章),以及是否能用它来做防火墙 AIOps、巡检报告等自动化任务。


网上虽然已经有一些pan-os mcp server项目,试了下要么功能不完善,要么 tools 定义不准确,于是花了点时间重新加工测试,做了个增强版的 mcp server 出来,项目地址见:🔗https://github.com/zm1990s/pan-os-mcp


项目中也贴了一些使用示例,欢迎测试使用。


该项目可以干什么?

简单来说,可以让你用自然语言,通过 Agent 来管理防火墙。

比如:


这对于日常巡检、临时信息查询、防火墙配置修改等场景都适用,尤其适合缺乏自动化脚本经验的网络运维人员。


下面贴两个使用示例(使用 VSCode + Cline):


查询设备接口信息

提示词示例:

根据devices.conf中的设备列表和凭据,使用您拥有的适当MCP工具。向我显示PA-440上所有接口的流量统计信息。识别任何具有异常流量模式或错误的接口,并提供每个活动接口的吞吐量摘要。您可能需要使用此命令:<show><counter><interface>all</interface></counter></show>


编写巡检报告

提示词示例:

你是一个严谨的智能巡检助手,会定期执行 Palo Alto Networks 防火墙的深度健康与安全状态检查。自动收集运行状态、性能指标、授权信息、安全配置细节和潜在风险点,生成标准化的 Markdown 格式检查报告,并提供具体、可操作的告警与优化建议。请将结果输出到一个 Markdown 文件中,文件名使用 panw-firewall-report-[当前年月日].md
你需要严格遵照下列规范:*所有巡检結果均使用 Markdown 表格格式輸出。*关键告警和建议应该在表格下方以粗体或列表形式突出展示。-`get_system_info`:获取基本系统信息-`op_command`:使用XML执行操作命令---- 篇幅原因详细内容省略 ----
接下来,是你要检查以及整理的内容:目标设备为: devices.conf 中定义的 PA-440
###**1. 基本运行状态检查 (Runtime & System Health Check)*****指令:**收集防火墙的基本运行信息和系统健康概览。***输出要求:**以 Markdown 表格形式输出以下信息:
| 项目 | 值 | 状态/告警 || :----------- | :---------- | :---------------------------------------- || 主机名 |`[Hostname]`| OK || 管理 IP |`[Management IP]`| OK || 序列号 |`[Serial Number]`| OK || 型号 |`[Model]` | OK || PAN-OS 版本 |`[PAN-OS Version]`| OK |---- 篇幅原因详细内容省略 ----
***相关 XML API 命令示例:***获取基本系统信息(主机名、IP、序列号、PAN-OS 版本、内容版本、运行时长、系统时间、最后配置提交时间):<show><system><info></info></system></show>*获取 HA 状态:<show><high-availability><state></state></high-availability></show>*获取风扇、电源和温度状态<show><system><environmentals></environmentals></system></show>
####**2. 设备许可与订阅服务检查 (License & Subscription Service Check)**---- 篇幅原因详细内容省略 ----详细示例见:https://github.com/zm1990s/pan-os-mcp/blob/main/Agent-Prompt-Examples-CN/Routine%20Inspection-Example-CN.txt
输出报告示例:

背后的实现

该项目的工作原理很简单:


本质上,PAN-OS MCP Server 是一个 API 中转工具,方便 Agent 去发现并调用防火墙的 API。

但考虑到日常使用场景,做了一些微小的优化:


PAN-OS 本身提供多种 API,但其中 XML API 的功能最全,灵活性最高,仅需要写少量的 Tools 即可支持大部分功能。

Tools 相当于一个个 API,PAN-OS 的功能非常多,按照传统做法如果每项功能都做成 Tools,那么代码量会很大,这间接会使得 Agent 上下文变长,Agent 调用工具的精度下降(假如多个 Tools 功能描述相似,可能导致 Agent 选择错误的工具)。

如下图是 PAN-OS REST API 的清单,单 Object 资源对象就有 30+,加上 Policy、Network、Device 等对象,数量会在 100+,对应可能需要 100+ 个 tools 实现。 XML API 命令拼接可以很好地解决此问题。

凭据管理其实是 MCP 的一个老大难问题,在上篇文章的后面详细介绍过。

常见的 MCP 工具都在启动时通过环境变量等方式将认证信息带入工具中,然后通过工具去访问后端资源(比如 API),这种方式存在两个问题:

为了解决第一个问题,项目将凭据和工具解耦合,工具启动时不与任何的 key 绑定,仅在调用工具时由 Agent 动态传入,这样可以很容易通过提示词来切换设备。
为了让 Agent 知道有哪些设备可以使用,以及其 API key 是什么,新增了名为 devices.conf 配置文件:
第二个问题暂时没有特别好的解法,只能说,妥善保存上述配置文件,定期更新设备 key。

前面提到项目使用 XML API,而这种 API 类似于以前网络设备的命令一样(如 show ip int br),虽然基础命令没几个,但组合变化很多。

为了使得 Agent 调用准确,提示词中需要告诉 Agent 做什么事情应该执行什么命令,比如:

根据devices.conf中的设备列表和凭据,使用您拥有的适当MCP工具。请对PA-440-2进行全面的健康检查。检查系统资源,包括CPU、内存和会话使用情况。还要验证接口状态和状态。您需要以下XML命令:<show><session><info></info></session></show><show><system><resources></resources></system></show><show><interface>all</interface></show><show><system><state></state></system></show>

所以,虽然 MCP Tools 少了,但是 API 没少,只是将这部分功能放在提示词中,简单、灵活、适用性强。

距离生产化,依然有段路要走

使用上述工具进行简单任务应该 OK,但距离一个成熟的项目还有段路要走:






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5