Skip to content
← 全部文章

自部署 AI Agent 安全自检清单

覆盖网络暴露、鉴权、工具权限、密钥与成本的十四项检查,每项都给出具体命令或设置,按「真正能降低风险」的顺序排列。

4 分钟读完 安全清单自部署

拿这份清单去过一遍你自己托管的 Agent。它是按影响力排序的,不是按类别——如果你只做前四条,就已经消掉了大部分现实风险。

每一条都写清楚:查什么、怎么查、以及「合格」长什么样。

网络暴露

1. 搞清楚你的网关绑在哪。

ss -tlnp | grep LISTEN

127.0.0.1:端口 是只绑本机。0.0.0.0:端口*:端口 是绑在所有接口上——在一台有公网 IP 的服务器上,这就等于绑在了互联网上。合格:localhost,除非你有明确理由不这样。

2. 从外面确认一遍可达性。

绑定不是全部——前面可能还有防火墙挡着。从一台不在同一个网络的机器上:

curl -m 5 -sv http://你的服务器IP:端口/ 2>&1 | tail -20

合格:连接被拒绝或超时。拿到 HTTP 响应就说明它是开放的。

3. 别指望用冷门端口藏起来。

把服务挪到 48291 端口并不能把它藏起来。全网扫描器在持续地扫遍整个端口范围,一个非标准端口给你争取到的是几个小时,不是安全。合格:起作用的是鉴权或防火墙,绝不是「别人猜不到」。

4. 用私有网络,而不是公开端口。

如果你需要远程访问,WireGuard 或 Tailscale 能给你,而且不需要任何公网可路由的端口。合格:没有任何一个 Agent 端口能从公网够到。

鉴权

5. 每一个入口都要求鉴权。

对你的 Agent 暴露的每一个接口发一个未认证请求——HTTP API、Web 界面、websocket、各种渠道适配器。合格:每一个都拒绝你。

6. 检查那些你忘了的接口。

Agent 常常不止暴露一个东西:API、界面、指标端点、调试端口。主界面有鉴权,不代表它背后的 API 也有。合格:你已经把所有监听端口列了出来,并且逐个测过。

7. 改掉每一个默认凭据。

默认密码,和「首次运行时生成但从没轮换过」的 token,是同一个问题。合格:你的部署里没有任何一个凭据是随软件一起发过来的。

8. 上 TLS。

任何东西只要经过你控制不了的网络,就应该走 HTTPS。前面架个反向代理是常规答案——Caddy 几乎零配置就能做到。合格:线路上不存在明文凭据或会话 token。

工具与权限

9. 把 Agent 能做的事列出来。

列出这个 Agent 拥有的每一个工具:shell、读文件、写文件、HTTP、数据库访问、第三方服务的凭据。然后假设此刻有个不受信任的人正在给它发消息。合格:你最近真的读过这份清单,而且上面没有让你意外的东西。

10. 限定工作区范围。

有文件访问权的 Agent 应该被关在一个目录里,而不是指向家目录或者 /。合格:这个 Agent 读不到你的 SSH 密钥、浏览器配置,或者另一个项目的 .env

11. 删掉你没在用的工具。

每一个工具都是攻击面,而没在用的工具是纯粹的负资产。合格:工具清单和你实际拿这个 Agent 做的事对得上。

12. 用非 root 用户跑它。

如果 Agent 能执行命令,那么它所运行的那个用户就是这些命令能力的天花板。合格:一个专用的非特权用户,最好再套个容器。

密钥

13. 别把密钥放在会漏的地方。

检查这几个地方有没有 API 密钥:提交进版本库的配置文件、shell 历史、容器镜像、提示词文本,以及日志输出。日志是最容易被漏掉的那个——一条记录完整请求体的调试日志,会把你的密钥一起记下来。

git log -p | grep -iE 'sk-|api[_-]?key|token' | head

合格:密钥只存在于一个地方,那个地方不在版本控制里,并且没有任何东西会把它打印出来。

14. 用作用域受限的独立密钥。

每个部署一把专用密钥,意味着你可以吊销其中一把而不搞坏其它所有东西,也能从服务商那边的用量看出是哪个部署在干什么。合格:这个 Agent 的密钥没有和你其它项目共用。

成本,它也是一项安全属性

一个暴露的 Agent 最常见的后果就是有人在花你的钱,所以这些控制手段属于这里。

在服务商那里设一个硬性消费上限。 这是唯一一个能在你自己这边出错时依然生效的限制。两分钟就能设好,它给最坏情况封了顶。

对异常消费设告警。 花费陡增往往是「有人在未经授权地使用」最早可观测到的症状,而且经常早于你注意到其它任何异常。

不止做一次

上面每一条都是一次性的时点检查,而且每一条都可能被悄悄撤销:一次配置还原、一次用旧镜像重建容器、一次「为了让手机能连上」而做的改动。检查本身不难,难的是记得重复做——而记性是个很差的控制手段。

这个「重复」正是 GambaOS 的安全体检在自动化的事:网关绑定、鉴权方式、渠道开放策略、工作区范围,跑完给分,每条发现都链到能改它的那个页面。默认部署第一次跑通常落在五十几分。

不管你最后自动化与否,上面这份清单都值得先手工走一遍。前三条大约五分钟,而意外通常就出在那里。

上线时第一时间拿到 GambaOS

这篇文章里说的那个面板很快开放下载。留个邮箱,第一批进来。

上线时发一封邮件,随时可以退订。