安全体系
云雀 Agent 采用 纵深防御 安全架构,从输入到输出的每一环节都有安全屏障。
安全架构概览
请求 → [认证] → [RBAC] → [输入护栏] → [审批] → [执行] → [输出护栏] → [审计] → 响应安全护栏 (Guardrails)
输入护栏
| 护栏 | 功能 |
|---|---|
| PII 脱敏 | 自动检测并遮掩个人身份信息 (邮箱、手机号、身份证、信用卡等) |
| 注入检测 | 检测 prompt 注入 (角色覆盖、系统提示泄露、越狱尝试) |
| 内容审核 | 过滤有害、违法或不当内容 |
输出护栏
| 护栏 | 功能 |
|---|---|
| PII 脱敏 | 确保回复中不泄露 PII |
| 出口守卫 | 敏感数据外传检测 |
| 审计记录 | 每条回复记录到 Merkle 审计链 |
信任分系统 (Trust Score)
基于行为的渐进式权限模型,Agent 通过积累信任获得更多能力:
| 分数范围 | 权限等级 | 能力 |
|---|---|---|
| 0 – 29 | ReadOnly | 文件读取、联网搜索 |
| 30 – 59 | Write | 文件创建、编辑 |
| 60 – 79 | Network | HTTP 请求、API 调用 |
| 80 – 100 | Shell | 系统命令执行 |
信任分持久化在 Ledger KV 中,跨会话保持。
审计链 (Audit Trail)
不可篡改的 Merkle 链 记录每个 Agent 动作:
- 每条记录包含前一条的 SHA-256 哈希值
- 按日期分段的结构化审计文件
GET /v1/audit/verify— 验证整条链的完整性GET /v1/audit/events— 查询审计事件- 支持按时间范围、事件类型过滤
RBAC 权限控制
细粒度角色与权限管理:
- 内置角色:
owner、admin、user、viewer - 自定义角色: 创建具有特定权限集的角色
- 4 层继承: 全局 → 租户 → 用户 → 会话
- 中间件自动提取认证上下文中的角色和租户
审批系统 (Approval)
高风险操作需要明确审批:
| 特性 | 说明 |
|---|---|
| 风险分类 | 4 级自动分类: safe / caution / danger / critical |
| Shell Guard | 40+ 正则模式检测危险 Shell 语法 (rm -rf、sudo、curl|sh 等) |
| Tool Guard | 工具调用风险评估 |
| 决策选项 | allow_once / allow_always / deny_always |
| 持久化规则 | 支持会话/用户/全局作用域,规则存储在 Ledger KV |
| IM 集成 | 飞书卡片/Telegram 按钮直接审批 |
HTTP 安全
生产环境自动添加安全头:
Content-Security-PolicyStrict-Transport-SecurityX-Content-Type-Options: nosniffX-Frame-Options: DENY
首次运行安全
首次启动未设密码时,阻断所有 API 访问(仅放行 auth/setup/health),要求通过设置向导设定密码。
AccessToken 保护
E2B Desktop 等外部沙箱的 AccessToken 使用 json:"-" 标签,防止通过 API 响应泄露到前端。