一、面试题目
请讲解 AI Agent Skill 层面的安全体系设计,重点防范:注入攻击、越权访问、数据泄露、恶意代码执行,以及沙箱隔离实现方案。
二、知识储备
1. 整体安全思路
Skill 是直接对接业务、可执行逻辑的单元,安全核心原则:
输入严格校验、权限前置拦截、运行环境隔离、数据最小化、操作可审计。
2. 注入攻击防护(Prompt 注入 / SQL 注入)
风险
- 用户恶意 Prompt 篡改 Skill 执行逻辑,越权执行、跳过校验
- 参数带入数据库查询,导致 SQL 注入
- 模型输出恶意指令,操控下游工具
防护手段
- 强参数校验:JSON Schema 严格校验类型、格式、长度、枚举,非法直接拦截
- Prompt 隔离:用户输入与系统指令严格隔离,不拼接原始用户文本直接执行
- 参数化查询:数据库全部使用预编译语句,禁止字符串拼接
- 白名单约束:Skill、工具、指令只能白名单内执行
- 敏感指令屏蔽:删除、批量操作、高危操作关键词拦截
3. 越权访问防护(水平越权、垂直越权)
风险
- 水平越权:查别人订单、操作他人数据
- 垂直越权:普通用户调用赔付、后台管理类 Skill
防护手段
- 三层权限强制校验
- 租户级:
tenant_id全局过滤 - 用户级:
user_id绑定本人数据 - 功能级:高危 Skill(退款、赔付)单独鉴权
- 租户级:
- 数据自动过滤:所有查询自动带上租户+用户条件,不依赖上层判断
- 高危操作二次审批:大额赔付、资金类操作人工复核
- 最小权限原则:Skill 只开放必要工具权限
4. 数据泄露防护
风险
日志打印手机号、身份证、订单隐私;上下文留存敏感信息;跨租户数据透出。
防护手段
- 敏感信息脱敏:手机号、身份证、地址日志脱敏
- 上下文裁剪:执行后自动清理敏感字段
- 传输加密:工具调用 HTTPS、内网加密传输
- 多租户数据物理/逻辑隔离,检索强制加租户过滤
- 禁止返回原始隐私数据,只返回业务结果
5. 恶意代码防护
风险
自定义 Skill 中写入恶意脚本、死循环、挖矿、批量删除数据、拒绝服务。
防护手段
- 禁止自定义代码执行:Skill 只允许配置化/编排,不开放原生代码
- 静态安全扫描:上架前扫描循环依赖、死循环、高危操作
- 超时熔断:最长执行时间限制,防止死循环卡死服务
- 资源配额:CPU、内存、IO 用量限制
6. 沙箱隔离(核心隔离手段)
目标
让每个 Skill 运行在独立沙箱,互不影响、防止逃逸、防止横向攻击。
实现方案
- 轻量沙箱(企业级首选)
- 进程级隔离:每个 Skill 独立进程
- 容器沙箱:K8s 容器隔离,资源限制
- 逻辑沙箱
- 权限沙箱:Skill 只能调用授权工具
- 网络沙箱:禁止访问外部未知接口
- 运行时隔离
- 独立上下文、独立存储、独立连接池
- 禁止跨 Skill 内存访问
三、代码/架构伪代码
class SecureBaseSkill: def __init__(self): self.sandbox = Sandbox() # 沙箱实例 self.auth = AuthService() def run(self, ctx): # 1. 注入防护:参数强校验 self.validate_schema(ctx.params) # 2. 越权校验 self.auth.check(ctx.user_id, ctx.tenant_id) # 3. 沙箱内执行 with self.sandbox.limit(cpu=0.5, memory="256M", timeout=5): result = self.execute(ctx) # 4. 脱敏返回 return self.desensitize(result)四、破局之道(面试升华)
Skill 安全体系核心是四层防御:
输入层防注入、权限层防越权、数据层防泄露、运行层用沙箱隔离恶意代码。
通过前置校验、最小权限、沙箱隔离、全链路审计,让 Skill 既能灵活编排业务,又杜绝资损、越权、泄露等重大风险,是企业级 Agent 平台上线的硬性要求。
30 秒口述精简版
注入通过Schema强校验+参数化查询防护;越权采用租户+用户+功能三层鉴权;数据泄露做脱敏+上下文裁剪;恶意代码通过静态扫描+超时熔断;最终通过沙箱隔离实现运行环境安全。