−25%

Windows 按年付费,截至 10 月 31 日。 查看套餐

EQVPS
开始使用

MCP 安全护栏:AI 智能体的安全权限

在把服务器令牌交给 AI 智能体之前,先弄清楚它能碰到什么。EQVPS 全部 45 个 MCP 工具按风险分级、服务器端强制执行的限制,以及我们自己会用的配置。

最后核实: 2026-10-04 · MCP 服务器 1.6.0 · 45 个工具(客户令牌)

MCP 令牌就是接上了 API 的账户密码。把它交给智能体,你就多了一个永不疲倦的用户:你让它读哪个页面它就读,它的上下文里最后一条指令说什么,它就做什么。大多数时候这正是你想要的。这一页讲的是剩下的那些时候。

下面的内容都在页面顶部的日期对线上服务器核实过:工具列表来自 https://mcp.eqvps.com/mcp 的 tools/list,限制来自 API 本身。如果你刚开始接触,先看连接 MCP 客户端和 API 令牌,再回来读。

威胁模型:实际会出什么问题

按我们遇到的频率排序,有三种情况:

  1. 智能体理解错了。 "把测试机清理一下"变成了重装另一台服务器。没有恶意,只是模型把指令里没说清的地方自己补上了。
  2. 提示注入。 智能体读到一段不是你写的文字(README、客服回复、抓取来的网页),这段文字让它去做某件事。如果智能体拿着全权限令牌,被注入的指令也就拥有全部权限。
  3. 令牌泄露。 它出现在 shell 历史、公开仓库、共享的 MCP 配置或某一行日志里。

MCP 服务器会检查令牌是否有效、服务器是否属于该账户(或已委派给它)。它不知道你本来想做什么。下面每一道护栏都只回答一个问题:如果指令是错的,最多能造成多大损失?

全部 MCP 工具,按风险分级

客户令牌可见 45 个工具(MCP 服务器 1.6.0)。经销商令牌(rk_…)看到的是另一套 30 个经销商工具,看不到这里的任何一个,所以这个端点总共有 75 个。你的客户端通过 tools/list 只会拿到属于自己的那一套。

本页按风险等级给工具分类。每个工具的参数和调用示例见参数参考;所有工具的一行说明(含 30 个经销商工具)见完整列表。

我们还没有提供 MCP 工具注解(readOnlyHint、destructiveHint),所以客户端无法自行分类。请按下面的分级手动设置审批。

第 0 级 — 公开,无需令牌(5)

工具作用
get_started一次返回完整流程:该调用哪些工具、按什么顺序
list_plans套餐、价格、系统镜像
sandbox_pricing沙箱价格
register_account创建新账户并返回其令牌
login邮箱 + 密码 → 令牌

第 1 级 — 读取账户,无副作用(15)

工具作用注意
whoami账户 id、姓名、邮箱
get_balance预付余额
list_vps运行中、开通中和已暂停的服务器
get_vps_status状态、配置、访问信息带 reveal: true 时会返回 root 密码
get_vps_metrics一段时间内的 CPU、内存、网络、磁盘
get_upgrade_options服务器无需重装即可切换的套餐
list_delegations你把访问权给了谁
list_delegated_to_me别人委派给你的服务器
list_tickets你的工单
get_ticket一张工单及其全部对话工单内容对智能体来说是不可信输入
list_sandboxes你的沙箱
get_sandbox一个沙箱及其用量
get_task后台任务的输出
download_file从沙箱读取一个小文件
get_download_url指向沙箱中某个文件的短期链接链接过期前,任何拿到链接的人都能下载

第 2 级 — 改变状态,不花钱(17)

工具作用注意
power_vpsstart / stop / rebootstop 就是 stop:服务会停掉
set_hostname修改服务器名称改的正是 confirm 比对的那个值
undo_cancel撤销已安排在周期末的取消
refresh_token发新令牌,旧令牌立即作废之后记得更新静态配置
set_password账户还没有密码时设置密码持有令牌的人可能抢在你前面设置
topup_balance充值账单 + 加密货币付款链接付款需要钱包
pay_invoice未付账单的付款链接同上
accept_delegation接受委派邀请
revoke_delegation结束委派
create_ticket / reply_ticket / close_ticket工单智能体会以你的名义给客服写信
run_code / exec_command在沙箱里运行代码只在沙箱里,不在你的 VPS 上
kill_task停止沙箱中的后台任务
upload_file / get_upload_url把文件放进沙箱

第 3 级 — 花钱、销毁数据或授予访问权限(8)

工具作用服务器端检查
order_vps下单购买服务器,从余额付款余额不足 → 生成未付账单,不扣款
change_plan不重装更换套餐,差价从余额扣除confirm: true;余额不足 → 402
create_sandbox启动计费沙箱余额为零 → 402
reinstall_vps清空磁盘并安装新系统confirm = 准确主机名或 DELETE;每分钟 4 次
reset_password新 root 密码,旧密码失效confirm = 主机名或 DELETE;每分钟 6 次
cancel_serviceend_of_period(默认,可撤销)或 immediate(立即销毁服务器)immediate 需要 confirm = 主机名
kill_sandbox删除沙箱及其文件无
delegate_service授予他人某台服务器的操作员权限仅限所有者;对方需接受

工具集变更记录

日期服务器版本变更对风险的影响
2026-10-031.6.0新增 refresh_token;令牌默认有效期 1 年第 2 级
2026-10-031.5.0undo_cancel、get_upgrade_options、change_planchange_plan 会花余额 → 第 3 级
2026-10-031.1.013 个沙箱工具create_sandbox 花钱、kill_sandbox 销毁数据 → 第 3 级

当前运行的版本是公开的:curl -s https://mcp.eqvps.com/healthz。版本一变,这张表也会跟着更新。

余额就是花费上限

EQVPS 采用预付费。没有绑定的银行卡、没有信用额度、不能透支:智能体最多只能花掉余额里现有的钱。会花钱的工具有三个:order_vps、change_plan 和 create_sandbox。你现有服务器的续费也从同一笔余额里扣。

智能体可以发起付款请求,但付不了款。topup_balance 和 pay_invoice 返回的是加密货币付款链接,背后没有钱包,链接什么也做不了。也没有提现接口:余额里的钱只能在你的账户里购买服务,转不出去。立即取消产生的退款同样退回余额。

有一个提醒,而且很重要。如果为了限制智能体把余额压得很低,你自己服务器的续费就会开始失败,服务器会进入宽限期。我们的经验法则是:保留一个续费周期所需的金额,再加上智能体当前任务的预算。智能体预算指南详细讲了怎么算。另外,如果你给智能体配了一个有钱的独立钱包,那个钱包就成了第二个上限,同样需要盯着。

最小权限:(目前)没有只读令牌

直说:每个客户令牌的权限都和控制台里的账户一样。令牌的名称和有效期可以设置,权限范围(scope)不能。

目前能做到的最窄权限是委派。给智能体开一个余额为零的独立账户,再把一台服务器委派给它:

delegate_service  { "service_id": "EQ-XXXX", "email": "agent@yourdomain.com", "expires_days": 30 }

用 REST 也一样:

curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/services/EQ-XXXX/delegations" \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"email":"agent@yourdomain.com","expires_days":30}'

邀请必须在用该邮箱登录的状态下接受(accept_delegation),expires_days 可设为 1 到 365。带截图的分步说明:委派访问权限和文档中的访问权限。

被委派账户可以被委派账户不能
查看这一台服务器的状态、指标和历史查看你的其他服务器、余额或账单
开机、关机、重启取消、续费或更换套餐
设置主机名和反向 DNS购买附加服务或 IP
重置 root 密码打开网页控制台
重装系统把服务器再委派给别人

注意左列最后两行。被委派者花不了你的钱,但能把这台服务器清空。凡是智能体能重装的服务器,都请开启备份。

令牌卫生

一个智能体一个令牌,并且起好名字。 在 控制台 → 设置 → 面向代理的 API 令牌 中创建,或者:

curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/auth/tokens" \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"backup-agent","expires_in_days":90}'

令牌只显示一次。有效期 1 到 1825 天,不填则为 365 天。给智能体用的话,我们会选 90 天。

把它存在只有你能读的文件里,不要放进仓库、不要写进提示词,也不要放在到处复制的 shell 变量里:

mkdir -p ~/.config/eqvps && chmod 700 ~/.config/eqvps
( umask 077; read -rsp 'EQVPS token: ' T; echo; printf 'EQVPS_TOKEN=%s\n' "$T" > ~/.config/eqvps/agent.env )
ls -l ~/.config/eqvps/agent.env   # 应为 -rw-------

然后在智能体的服务里用 EnvironmentFile=(systemd)或 set -a; . ~/.config/eqvps/agent.env; set +a 加载。

到期前轮换。 refresh_token 工具或 POST /auth/tokens/{id}/refresh 会签发一个同名的新令牌,并立即作废旧令牌。如果令牌是写死在 MCP 客户端配置里的,轮换后马上更新配置,否则下一次会话会收到 401。

检查谁在用什么: GET /auth/tokens 会列出每个令牌的名称、到期时间和 last_used_at。出现你不认识的令牌,或者在你关掉智能体之后仍被使用的令牌,就是警报。

令牌泄露时

按这个顺序处理:

  1. 撤销它。 控制台 → 设置 → 面向代理的 API 令牌 → 撤销,或 curl -s -X DELETE -H "Authorization: Bearer $EQVPS_TOKEN" https://api.eqvps.com/api/v1/eqvps/auth/tokens/<id>。从下一个请求起即失效。
  2. 查找新令牌,凡不是你创建的,一并撤销。
  3. 评估波及范围: 每台服务器的服务历史、账单和余额,以及 list_delegations 里有没有你没授予过的访问权。
  4. 更换 root 密码,凡是这个令牌能看到的服务器都要换。带 reveal: true 的 get_vps_status 会交出 root 密码,所以令牌泄露就等于 root 密码泄露。顺便检查一下 ~/.ssh/authorized_keys。
  5. 关上密码这扇门。 如果你的账户从来没设过密码,持有令牌的人可能已经用 set_password 设了一个。用邮件验证码登录,然后修改密码。

第 5 步的预防不花一分钱:现在就自己设置账户密码,之后任何人再调用 set_password 都只会得到 409。

人工确认

服务器端强制执行的内容:

  • reinstall_vps、reset_password 和 type: immediate 的 cancel_service 要求 confirm 等于准确的主机名(重装和重置密码也可以用 DELETE)。
  • change_plan 要求 confirm: true。
  • 默认取消方式是 end_of_period:服务器运行到已付周期结束,undo_cancel 可以撤销。
  • 每个账户的频率限制:重装每分钟 4 次,重置密码每分钟 6 次,电源操作每分钟 20 次,下单每分钟 20 次。足以防止陷入循环的智能体把同一件事做五十遍,但挡不住一次错误调用。

要清楚 confirm 是什么。它能防止智能体凭一句"清理一下"就动手。它挡不住攻击者,因为主机名只需一次 get_vps_status 调用就能拿到。真正的审批在你的 MCP 客户端里。多数客户端都能在每次调用工具前询问:第 0、1 级放行,第 3 级一律询问。在支持按工具设置权限的客户端里,例如 Claude Code 的 settings.json(服务器以 eqvps 名称注册):

{
  "permissions": {
    "ask": ["mcp__eqvps__order_vps", "mcp__eqvps__change_plan", "mcp__eqvps__create_sandbox", "mcp__eqvps__reset_password", "mcp__eqvps__delegate_service"],
    "deny": ["mcp__eqvps__reinstall_vps", "mcp__eqvps__cancel_service", "mcp__eqvps__kill_sandbox"]
  }
}

再在智能体的指令里加一行。它本身算不上安全措施,但能减少"理解错了"的情况(保留英文即可,模型理解起来一样):

Never call reinstall_vps, reset_password, cancel_service (type=immediate), change_plan,
order_vps, create_sandbox, kill_sandbox or delegate_service unless the human has typed
the target server's hostname in this conversation for that specific action.

如果智能体是用邮件验证码登录,而不是持有长期令牌,请看智能体通过 MCP 登录。

审计:事后能看到什么

  • 令牌列表(GET /auth/tokens,或 设置 → 面向代理的 API 令牌):名称、创建时间、到期时间、last_used_at。这就是为什么要按智能体给令牌命名。
  • 服务历史(控制台,服务器页面):电源操作、重装、密码重置、套餐变更、付款,每条都有时间和操作方:您、支持或自动。它不会告诉你是哪个令牌或哪个被委派者操作的,只说明操作来自你这一方。
  • 账单和余额:每一笔扣款和退款。
  • list_delegations:谁有权访问什么,到什么时候为止。

服务历史里的这个空白,就是目前服务器端审计的真实边界。如果你需要知道哪个智能体做了什么,就在智能体一侧记录每次工具调用及其参数(去掉密钥)。

我们会用的配置

对于管理一台生产服务器的智能体:

  1. 为智能体单独开账户,余额为零,服务器以 expires_days: 90 委派。
  2. 你的所有者令牌留在自己手里,不出现在任何智能体配置中。
  3. 为这台服务器开启备份,因为被委派者可以重装。
  4. 在客户端里把第 3 级工具设为 "ask" 或 "deny"。
  5. 智能体的令牌放在权限为 600 的文件里,到期前刷新。

如果智能体需要下单买服务器或运行沙箱,委派就不够了,因为它需要余额。这时余额就是你的上限:按任务充值,给令牌起名,每周看一次 last_used_at。如果只读令牌会改变你部署智能体的方式,请通过支持告诉我们:正是这类反馈决定了我们接下来做什么。

常见问题

可以给 AI 智能体只读权限吗?

用令牌目前做不到:每个客户令牌的权限都和你在控制台里的账户相同。最接近的办法是委派:给智能体单独开一个没有余额的账户,把一台服务器委派给它。它能查看和操作这台服务器,但不能花钱、不能取消、不能打开控制台,也不能再转委派。它仍然可以重启、重置 root 密码和重装系统,所以请为这台服务器开启备份。

怎样限制智能体的花费?

靠预付余额。只有三个工具会花钱(order_vps、change_plan、create_sandbox),它们都从余额扣款;余额不足时返回 402 或一张未付账单。智能体可以生成充值或付款链接,但付款需要加密货币钱包,所以只能由人来付。没有绑定的银行卡,也不能透支。

什么能阻止智能体删掉我的服务器?

reinstall_vps、reset_password 和立即执行的 cancel_service 都要求 confirm 等于准确的主机名(重装和重置密码也可以填 DELETE)。默认的取消方式是 end_of_period:服务器继续运行,undo_cancel 可以撤销。被委派的账户完全无法取消服务。confirm 字段能拦住执行模糊指令的智能体,拦不住拿着你令牌的攻击者,所以还要在 MCP 客户端里把这些工具设成每次都询问。

Bearer 令牌泄露了怎么办?

立刻撤销(控制台 → 设置 → 面向代理的 API 令牌,或 DELETE /auth/tokens/{id})。然后检查令牌列表里有没有陌生令牌,查看每台服务器的服务历史、账单和 list_delegations,并更换该令牌能看到的服务器的 root 密码:带 reveal 的 get_vps_status 会返回 root 密码。

EQVPS 的 MCP 服务器有多少个工具?

截至 MCP 服务器 1.6.0(2026-10-04 核实),客户令牌可见 45 个:5 个公开工具,15 个只读工具,17 个改变状态但不花钱的工具,以及 8 个会花钱、销毁数据或授予访问权限的工具。经销商令牌看到的则是另一套 30 个经销商工具,同一端点上共 75 个。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。