智能体能够改变外部状态时,运维就变得重要起来。普通应用错误可能因此变成已发出的消息、被修改的数据库或被删除的文件。设计时应考虑错误输出、恶意检索内容、依赖服务不可用,以及疲惫的操作人员做出错误判断。

本文是一份审核清单,不是安全认证。我们没有为本文执行端到端部署、渗透测试或恢复演练。每项建议都需要在你自己的环境中实施和验证。没有可观察证据的勾选项,仍然只是一个假设。

明确每个工作进程能做什么

为每个工具写一份简短约定:接受什么输入、允许操作哪些目标、执行什么操作、最大范围是多少,以及是否需要批准。读取发票的工具不应顺便接受任意 SQL。即使文档摘要器和发布器运行在同一个项目中,摘要器也不应自动继承发布器的凭据。

授权应由应用或下游服务执行,而不是交给模型自行判断。有重大后果的操作需要明确批准,并把批准绑定到实际目标和具体内容。OWASP 的过度代理权限指引建议缩小工具能力范围,并让执行操作的系统核验授权。

网页、附件、邮件或工具结果中的指令,应被视为待分析的内容,不能据此授予新权限。在测试环境中准备一份文档,故意要求智能体向其他地方发送数据、更改付款目标或泄露密钥。记录权限边界是否真的生效,而不只是模型是否声称理解了规则。

限制故障影响范围

将交互请求与长任务分开,使操作人员可以停止一个工作进程,而不必关闭整个界面。给任务分配标识,并在发生外部副作用之前保存进度。超时后先检查外部操作是否已经发生,再决定是否重试。网络请求重试成功,仍可能造成重复的业务操作。

限制任务时长、排队数量、工具步骤、输出大小和并发执行。将不可信文档处理、浏览器活动与主数据库凭据隔离。设计紧急停止开关,使它能够阻止新的外部操作,同时保留理解既有操作所需的证据。测试时,确认它不依赖智能体的配合就能生效。

检查容器边界

只授予工作负载真正需要的权限,并审核每个宿主机挂载。访问 Docker 守护进程的能力很强,拥有这种能力的容器不能被当作无害的隔离工作进程。Docker 对此有专门的守护进程攻击面说明。Rootless 模式能够降低部分守护进程和运行时风险,但不能替代应用授权和安全的工具设计。

管理接口应保持私有。记录哪个服务需要接受互联网流量,以及原因。固定经过审核的应用发布版本,记录生产环境使用的镜像标识,并保留前一个可用版本。重启策略可以让崩溃的进程重新运行,但不能证明重启后的进程是安全或健康的。

为密钥设计完整生命周期

开发和生产环境使用不同凭据。在服务支持的情况下,把密钥限制到特定项目或服务,指定负责人,并写清撤销方式。密钥不应出现在源码仓库、镜像层、截图或客服沟通记录里。

Docker Compose 可以以挂载文件的方式,将密钥分别授予所需服务。与广泛暴露的环境变量相比,这能减少部分意外泄露,但仍然需要保护宿主机上的源文件和备份副本。使用 Compose secrets,并不代表每一份副本都已加密。请参考 Docker 的 Compose 密钥指南。

轮换前,找出所有使用该凭据的组件。轮换后,既要确认新凭据可用,也要确认旧凭据不再可用。配置文件已经修改,并不能证明长时间运行的工作进程已经重新加载了它。

保留有用证据,而不是倾倒全部内容

为每次操作记录任务标识、发起身份、工具名称、授权结果、目标引用、时间和结果。为关联请求保存关联标识。限制日志访问和保留期限,并审核可能意外记录请求内容的错误路径。OWASP 的日志指南建议排除或保护访问令牌、密码和敏感数据。

选择能够促成具体决定的告警:反复被拒绝的操作、异常出站目标、快速增长的任务数量、备份失败,以及不再减少的队列。每个告警都要有负责人和处理方式。不要让告警量大到所有人都习惯忽略它。

分别测试数据恢复与版本回退

版本回退恢复的是应用代码;数据恢复还原的是过去某一时刻的状态。这是两种不同流程,尤其是在数据库迁移之后,或者外部消息已经发出时。写清哪些变化可逆,哪些需要另一个补偿操作。

Vultr 自动备份覆盖实例的活动文件系统,不包含挂载的块存储,并与实例保存在同一个数据中心。请核对官方的备份范围说明,为范围之外的数据和故障场景准备额外副本。

用普通语言定义可接受的数据损失量和恢复时间。在隔离环境中恢复数据,确认应用能够读取,并在演练期间保持出站任务关闭。记录实际耗时、缺失依赖,以及谁有能力执行恢复。只有这些观察结果足以支持上线决定时,才应把清单标记为完成。