MCP安全系列之缺乏日志审计

介绍

这一项是关于缺乏审计的,相当于MCP的运行没有日志审计,事后无法定位和溯源,所以本篇我们演示一下如何给MCP去记录日志情况。

MCP日志记录

比较原始的方法就是在开发MCP服务的代码中,添加日志记录代码,比如通过logger去记录,但这种方式有几个弊端,一个是开发时会导致代码冗余,要想记录的详细,需要添加很多logger代码。另一个是这种日志即使保存下来后,也可能去查看或者定位。

这里采用langfuse平台来演示,langfuse是一个开源的LLMOps平台,即大模型应用可观测平台,它可以记录Agent完整会话中的每一步,比如大模型调用情况、工具调用情况、输入输出情况等等。

首先安装langfuse,这里通过docker安装,从github下载源码后,直接运行:

bash 复制代码
docker compose up -d

它会自动拉取相关镜像并启动,启动后浏览器访问3000端口进入langfuce。

准备好langfuce后,我们还是通过CherryStudio来测试MCP,MCP服务代码如下,这是没有记录日志功能的代码:

bash 复制代码
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Test")

@mcp.tool()
def helloworld(username: str) -> str:
    """根据传入的用户名来打印友好提示语"""
    return f"你好,{username}"

if __name__ == "__main__":
    mcp.run()

当我们想把MCP和langfuse打通,则需要在MCP代码中把langfuse加进去,对上面的代码进行修改,具体作用见注释:

bash 复制代码
import os
from pathlib import Path

from dotenv import load_dotenv
from langfuse import get_client, observe
from mcp.server.fastmcp import FastMCP


# 加载.env文件,该文件配置了langfuse的key,有了key才能和langfuse交互
load_dotenv(Path(__file__).with_name(".env"))

mcp = FastMCP("Test")

@mcp.tool()
# 主要加的就是这行代码,加到函数上,其中name代表在langfuse中显示日志时,这个日志名称是什么,as_type是说这个函数是属于Agent调用工具类型,langfuse显示日志时会显示工具的图标,因为langfuse观测面板有多种观测对象,比如推理过程、代码执行等等,工具调用就是其中一种
@observe(
    name="helloworld",
    as_type="tool"
)
def helloworld(username: str) -> str:
    """根据传入的用户名来打印友好提示语"""
    return f"你好,{username}"


if __name__ == "__main__":
    mcp.run()

最后还少个.env文件,内容如下:

bash 复制代码
LANGFUSE_PUBLIC_KEY=pk-lf-xxxxxxxxxxxxx
LANGFUSE_SECRET_KEY=sk-lf-xxxxxxxxxxxxx
LANGFUSE_BASE_URL=http://localhost:3000

其中key要去langfuse平台获取,回到langfuse,创建个项目,在该项目的设置-API KEYs下,点击创建key即可。

一切准备好后,回到Cherrystudio去调用工具进行测试:

此时在langfuse的tracing下可以看到日志记录:

总结

MCP记录日志还有很多方式,也有很多平台,不止局限于langfuse,可根据自己情况进行选择。

小枣信安:专注AI安全,包括但不限于大模型安全、智能体安全、机器人安全、AI赋能网络安全等,欢迎一起学习。

相关推荐
SGS官方1 小时前
SGS为紫光国芯颁发ISO 26262:2018汽车功能安全ASIL D流程证书
安全·汽车·检测认证机构·sgs
Xudde.1 小时前
PwnLab: init 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
学逆向的1 小时前
C 数据溢出与精度丢失
c语言·开发语言·网络安全
是真的小外套2 小时前
第14章:恶意代码防范技术原理与应用
网络·网络安全
听说6663 小时前
信息安全工程师 - 第二十三章 云计算安全需求分析与安全保护工程
网络·安全·web安全·网络安全·云计算·系统安全
Xudde.3 小时前
HackMe 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
罗斯8393 小时前
Datalog与安全分析
算法·安全·网络安全
橙色云-智橙协同研发3 小时前
电子高科技行业:机械与电子(MCAD & ECAD)如何协同?
大数据·运维·服务器·人工智能·安全
上海广测检测科技有限公司4 小时前
音响网络安全认证:联网音频设备的全球合规法规与测试要点解读
网络·经验分享·安全