Skip to content

AI 五档策略

每台服务器可以单独配 AI 访问策略,5 档由严到松。叠加全局总开关 + 危险黑名单 + sudo 强制审批构成纵深防御。

进入

主界面左侧导航 → AI 策略 或在每台 服务器编辑弹窗 → 策略 tab。

5 档对照

档位元工具只读工具改动工具适合
Disabled生产数据库、不希望 AI 触碰
Readonly✅ auto✅ auto❌ denied生产机查询专用
Approval✅ auto⚠️ 审批⚠️ 审批中等风险,每步要确认
Allowlist✅ auto命中正则 auto,否则审批同左安全关键 + 灵活
Trusted✅ auto✅ auto✅ auto开发机、沙箱

Trusted 也不是裸跑

即使 Trusted 档位,下列约束仍生效:

  • 全局总开关 disabled / armed_until 仍拒绝
  • 危险命令黑名单(rm -rf / mkfs / DROP DATABASE 等)仍永拦
  • 含 sudo 仍强制走审批
  • 敏感路径写入(/etc/shadow 等)仍永拦

工具分类

元工具

任何档位都放行:

  • list_servers / list_skills / list_runbooks
  • evaluate_skills / get_skill / recall_experience

只读工具

不改动远端状态:

  • system_info / disk_usage / service_status
  • port_check / tail_log
  • sftp_list / sftp_read
  • db_query(SELECT/WITH)
  • redis_scan / redis_get

改动工具

会改动远端状态:

  • ssh_exec / ssh_exec_script / ssh_exec_multi
  • sftp_write
  • db_execute / db_transaction
  • redis_set / redis_del / redis_exec
  • install_with_secret
  • run_runbook

Allowlist 模式

档位选 Allowlist 后可填正则白名单(多条):

^df\s.*
^free\s.*
^systemctl status .*
^docker ps.*

判定逻辑:

工具调用进来

命令对每条白名单正则尝试匹配

任一命中 → auto allow
未命中 → 走审批队列

适合:"我大概知道 AI 会问什么命令,定一组放行的 + 兜底审批"。

危险命令黑名单

无论档位多松,下列模式永远拦

Lethal 级(永不可绕)

模式含义
rm -rf /删根
mkfs.*格式化
dd of=/dev/*直接写硬盘
:(){ :|:& };:fork bomb
pg_resetwalPG 数据损毁
redis FLUSHALLRedis 清库
DROP DATABASEMySQL/PG 删库
docker system prune -a --volumesDocker 数据丢
kubeadm resetk8s 节点重置

Severe 级(走审批)

  • shutdown / reboot
  • systemctl poweroff
  • 1pctl uninstall / 1pctl reset
  • MySQL SHUTDOWN

自定义扩展

在 AI 策略页 → 危险黑名单 区域 → 编辑:

^rm\s+-rf\s+/data/
^sudo\s+chown.*\s+0\b

立即生效,无需重启。

sudo 强制审批

sudo 的命令:

  • 无视档位(即使 Trusted 也走审批)
  • 审批弹窗高亮 sudo 部分
  • 写审计 requires_approval: contains_sudo

设计原因:sudo 提权变相消除了"低权 AI 账号"的隔离价值,必须人工把关。

服务器侧 sudo 账号白名单

如果你的 AI 账号是低权账号,但配了几条 NOPASSWD sudo(例如 nginx -s reload),可以在服务器编辑弹窗 → sudo 账号白名单 配置:

nginx -s reload
systemctl restart php-fpm

命中白名单的 sudo 命令绕过强制审批(仍走档位策略)。

敏感路径写入永拦

下列路径 无视档位,AI 写入都拒:

  • /etc/shadow / /etc/passwd
  • /etc/sudoers / /etc/sudoers.d/*
  • ~/.ssh/authorized_keys / ~/.ssh/id_*
  • *.pem / *.key
  • .env 文件
  • /boot/*

sftp_write / ssh_exec(含 echo > / cat > heredoc 等模式)触发。

全局总开关

AI 策略 页顶部:

开关行为
Enabled按各服务器档位判定
Disabled所有 AI 工具调用直接拒(save for 元工具)
armed_until临时禁用到某时间戳;适合"我下班了,今晚禁 AI"

IP 白名单 (CIDR)

MCP 接入 签发 Token 时配:

  • 默认 127.0.0.1/32
  • 仅本机连
  • 可加 192.168.0.0/16 等私网段
  • 不允许公网 CIDR(防误开)

决策流程(再贴一遍)

工具调用 →
  全局开关 disabled? → denied
  armed_until 未到期? → denied
  Token 401 / IP 不在白名单? → denied
  服务器对 Token 不可见? → denied
  元工具? → auto allow
  命中危险黑名单? → blocked(含技能 dangerous_commands)
  含 sudo 且不在 sudo 白名单? → 审批队列
  按档位:
    Disabled → denied
    Readonly + 是只读 → auto allow
    Readonly + 是改动 → denied
    Approval → 审批
    Allowlist + 命中白名单 → auto allow
    Allowlist + 未命中 → 审批
    Trusted → auto allow
  执行 → 出口脱敏 → 写审计

配置实战

我有一台生产 MySQL

  • 服务器档位:Readonly
  • 只能跑 db_query(SELECT),AI 想 INSERT / UPDATE 直接拒
  • 适合"让 AI 查日志找问题"

我有一台开发机

  • 服务器档位:Trusted
  • AI 想干啥都行
  • rm -rf / 仍拦,sudo 仍审批
  • 适合快速实验

我有一台堡垒机连内网 K8s

  • 服务器档位:Allowlist
  • 白名单:^kubectl (get\|describe\|logs).* / ^helm list.*
  • 兜底审批,AI 想跑 kubectl delete 你能拦
  • 适合精细但常用

我害怕

  • 服务器档位:Approval
  • 每步都审批,全程在场
  • 适合"刚开始用 Reeve,先观察"

审计联动

所有决策(含 auto allow)都写 审计

  • decision 字段:auto / approved / denied / blocked
  • reason 字段:触发的策略 / 黑名单规则 / 技能正则
  • 可按 decision 过滤查看

故障排查

症状排查
AI 说"我没权限"检查档位是否 Disabled / Readonly
我想放行某命令但审批没弹档位可能是 Trusted;改 Approval
危险黑名单误命中调整正则;或加进 sudo 白名单
时间到了 armed_until 没恢复检查全局总开关 enabled

下一步

受控的远程运维助手 — 让 AI 安全地帮你管服务器