052、MCP Server 安全最佳实践:权限控制、输入验证、速率限制与敏感信息防护
上周五凌晨两点,我盯着终端里那行血红色的错误日志发呆——某个MCP Server在生产环境里被注入了一段恶意指令,直接调用了rm -rf /tmp/cache/*。还好容器权限收得紧,只删了临时文件,但那一刻我后背还是凉了半截。
这个MCP Server是我三个月前写的,当时觉得“一个工具调用而已,能出什么事”。结果现实狠狠抽了我一巴掌。今天就把这些用血泪换来的经验整理出来,希望能帮你少踩几个坑。
权限控制:别让你的MCP Server变成“超级管理员”
MCP Server最容易被忽视的安全问题就是权限过大。很多人图省事,直接给Server挂上了宿主机的Docker socket,或者用root用户运行。这就像把家里所有钥匙都挂在门外——方便是方便,但谁都能开门。
最小权限原则不是口号,是保命符。
我现在的做法是:每个MCP Server都跑在独立的容器里,用非root用户启动。Dockerfile里加上这一行:
RUN useradd -m -u 1000 mcpuser && chown -R mcpuser: /app USER mcpuser别笑,就这么简单的一步,能挡住90%的提权攻击。之前那个被注入