权限、审批和密钥安全
权限、审批和密钥安全
Agent 的核心安全原则是:长期密钥进入密钥保管器,Agent 只获得完成当前任务所需的短期能力,高危操作必须由用户审批。
权限如何生效
Heicode 会把你的授权整理成 resource grant。
一个授权通常包含:
- 用户。
- 组织。
- 任务。
- Agent 角色。
- 资源。
- 权限范围。
- 路径范围。
- 环境。
- 有效期。
- secret_ref。
- 审计信息。
用户不需要手写这些字段,但需要确认摘要是否正确。
最小权限原则
每个 Agent 只应获得完成当前任务所需的权限。
示例:
| Agent | 应有权限 | 不应有权限 |
|---|---|---|
| Product | 读写需求文档 | 写生产代码 |
| Frontend | 写前端路径 | 访问生产数据库 |
| Backend | 写 API 路径 | 删除云资源 |
| Reviewer | 读代码和测试结果 | 修改生产环境 |
| Ops | 部署相关资源 | 直接访问所有密钥 |
高危操作
以下操作默认需要审批:
- 生产部署。
- 生产数据库读写。
- 访问生产密钥。
- 创建、删除或扩缩云资源。
- 合并到主分支。
- 批量删除文件。
- 外部发送敏感数据。
- 大额模型预算消耗。
审批时你会看到什么
审批弹窗会展示:
- 操作类型。
- 请求 Agent。
- 目标资源。
- 风险等级。
- 短期凭证 TTL。
目标环境、预计影响、预算影响、是否可回滚等信息,视具体审批场景可能提供,不是每次审批都保证展示这些字段。
批准是什么意思
批准只代表允许本次操作。
批准后:
- 平台派生短期凭证。
- 凭证只在 TTL 内有效。
- 操作会写入审计。
- Agent 不会得到长期密钥。
拒绝是什么意思
拒绝后:
- 高危操作不会执行。
- 任务可能进入 blocked。
- Agent 可以提供替代方案。
- 你可以调整资源或权限后重新发起。
密钥保管器
密钥保管器用于保存长期凭证。
包括:
- Git token。
- SSH key。
- 云 access key。
- 数据库密码。
- 部署凭证。
- 模型服务商 API key。
密钥不应出现在:
- Git。
- Markdown。
- 前端响应。
- 截图。
- 普通日志。
- Agent 记忆。
- 聊天内容。
secret_ref
Heicode 数据库只保存密钥引用,不保存明文密钥。
示例格式:
azkv://<vault>/secrets/users-<UserId>-bindings-<scope>-resources-<Id>这不是明文密钥。它只是让后端在审批和权限满足时找到对应凭证。
凭证生命周期
- 长期凭证进入密钥保管器。
- 子 Agent 只拿短期凭证。
- 短期凭证到期后失效。
- 任务停止后应撤销不再需要的凭证。
- 资源授权删除后,新任务不能继续使用该凭证。
账户停用后的密钥处理
- 资源授权删除、账户停用、组织关闭或订阅终止后,可用凭证立即停止用于新任务。
- 生产密钥库中的可恢复原始密钥材料在停用后 30 天内删除或不可恢复化。
- 加密备份或灾备副本的保留策略以平台安全条款为准。
- 法律要求、安全事件调查、反欺诈、账务争议或企业协议另有约定时,按对应要求处理。
用户安全建议
- 不要共享账号。
- 不要在聊天里粘贴密钥。
- 不要把 .env 提交到 Git。
- 不确定的资源先只读。
- 生产操作必须看清审批内容。
- 成员离职后立即撤销权限。
- 发现密钥疑似泄漏时立即轮换。