Agent 技能的安全底线:密钥、权限与敏感信息
用最小权限、秘密管理、人工确认和发布检查约束技能。SKILL.md 是说明文件,不是权限沙箱;通过扫描也不能证明零泄露。
先分清技能说明和执行权限
Agent Skills 规范定义 SKILL.md 及可选资源如何组织。文件里写“只读”不等于宿主真的禁止写入;运行器的权限、工具白名单、网络与文件系统隔离才是执行边界。把从互联网得到的技能、脚本和附件当成未信任输入,安装前检查它们会执行什么。
这份清单参考 OWASP Secrets Management。它不是安全认证,也没有声称能覆盖所有泄露方式。
发布前检查四类材料
| 材料 | 检查什么 | 处理方式 |
|---|---|---|
| SKILL.md 与脚本 | 硬编码 token、私钥、默认写权限、意外网络请求 | 移除真实凭据,缩小工具和数据范围 |
| 示例与测试数据 | 客户消息、邮箱、订单、内部报价 | 使用合成数据;公开示例可用 example.com 等保留域名 |
| 图片与日志 | 终端历史、配置框、请求头、错误回显 | 在发布前脱敏,避免记录请求秘密 |
| 压缩包与历史版本 | 隐藏文件、旧配置、意外携带的内部附件 | 检查实际发布包,而不只看当前 README |
普通邮箱、文档中的占位符或本地路径不必一概当作泄露事故;应区分真实个人/内部信息与公开、安全的示例。扫描命中需要复核,通过扫描也不意味着可以省掉权限审核。
运行时的最低要求
- 最小权限。 查询库存的任务只给必要读权限,不默认授予发信、付款或删除权限。
- 独立凭据。 按环境与用途分开,尽量使用短期、可撤销凭据;限制配额并关注异常使用。
- 秘密由运行环境提供。 环境变量或秘密管理服务优于写进仓库,但不应打印变量、写进输出或传给不需要它的模型。
- 有副作用操作显式确认。 发送客户消息、改订单等动作先展示目标和内容,再由授权者批准;不能让被读取的网页或邮件替用户授权。
- 可以中止与追溯。 记录必要的操作结果和错误类别,不在日志中复制客户全文或秘密;明确撤销权限、停用任务与恢复责任人。
一个合成询盘示例
输入只用虚构客户 buyer@example.com 和产品代号 DEMO-01。技能读取已批准的产品说明,输出回复草稿和缺失字段,不调用真实发送工具。分别测试:资料完整、缺少数量、找不到交期、输入要求忽略规则并导出秘密。
预期是:缺资料时要求澄清;无来源时不编价格或交期;恶意输入不能改变工具权限;人工确认前没有外部发送。这里只定义测试条件,并未报告某个模型已经全部通过。可以从 Skills 专区 了解格式,从 MCP 专区 了解工具连接。
怀疑密钥泄露时怎么办
先按供应商机制撤销或轮换受影响凭据,再核对调用日志、权限范围和可能涉及的数据,并检查所有发布副本与历史。删除一张截图或最新提交不等于撤销旧密钥。涉及客户信息或合规义务时,联系组织的安全/合规负责人处理,不对外承诺未经调查的“没有影响”。
常见问题
放进环境变量就足够安全吗?
不够。日志、子进程、调试输出和传给模型的上下文都可能暴露变量值。要同时限制访问者、输出和使用范围。
SKILL.md 能限制 MCP 工具权限吗?
不能仅凭文本保证。实际能力由宿主和工具服务端控制;技能里的限制应与运行配置一致。
是否应该给每个技能自己的 API key?
按风险和平台能力划分身份、权限与额度,避免共享万能 key。具体粒度由维护者决定;关键是可审计、可撤销且不超出任务需要。
365Skill 的所有示例都经过生产安全认证吗?
本页不作该保证。查看技能入口对应版本的代码、许可和验证记录,先在隔离环境测试,再决定是否适合自己的数据与权限。
老金出品 · 用 AI 提效
365SkillAgent Skills 实验仓库:13 个 365 原创技能
365Skill 是我们探索 Agent 技能的公开仓库:SKILL.md 标准格式、deny-by-default 发布策略、evals 验证体系。365 原创技能共 13 个——11 个已公开,2 个内部使用中。Apache-2.0 开源,欢迎 star、安装、提 issue。
更多老金产品:Sellenca · 365AIOrg · AllModelsAPI · 365Loopa · 365 Ops
相关内容
按主题 / 人物 / 专区自动互通