凭证管理
Access Key 是 Agent 和机器访问 PuppyOne 的唯一凭证。管理好 Access Key 是保障 Context File System 安全的关键。
Access Key 格式
PuppyOne 根据 Connection 类型签发不同前缀的 Access Key:
| 前缀 | 类型 | 适用场景 |
|---|---|---|
sk_live_ | MCP 端点 / Agent API Key | MCP 客户端连接、Agent API 调用 |
cli_ | 文件系统 / OpenClaw 同步 Key | 本地文件夹双向同步 |
示例:
sk_live_a1b2c3d4e5f6... ← MCP 端点 Key
cli_x9y8z7w6v5u4... ← 文件系统同步 Key每个 Connection 有且只有一个 Access Key——一个 Connection,一个 Key。不同的 Agent 使用不同的 Connection,各自持有独立的 Key,权限互相隔离。
Access Key 生命周期
一个 Access Key 从创建到退役,经历以下阶段:
创建 Connection
│
▼
自动生成 Access Key
│
▼
Agent 使用 Key 访问 API ←──── 正常运行
│
▼
轮换(Regenerate)──→ 旧 Key 立即失效,签发新 Key
│
▼
删除 Connection ──→ Key 永久失效管理 Access Key
通过 Dashboard 管理
- 打开 Project → Connections
- 点击目标 Connection 进入详情页
- 在 Access Key 区域:
- 点击 Show Key 查看完整 Key
- 点击 Regenerate 生成新 Key(旧 Key 立即失效)
通过 CLI 管理
# 查看某个 Connection 的 Access Key
puppyone conn key <connection-id>
# 轮换 Access Key(旧 Key 立即失效)
puppyone conn key <connection-id> --regenerate轮换后,CLI 会显示新的 Access Key。请立即更新使用该 Key 的所有客户端配置。
Key 轮换最佳实践
定期轮换 Access Key 可以降低泄漏风险。推荐流程:
安全轮换步骤
1. 生成新 Key
puppyone conn key <id> --regenerate
2. 更新所有客户端配置
将新 Key 写入环境变量 / 配置文件
3. 验证新 Key 正常工作
确认 Agent 能正常访问 API
4. 确认旧 Key 已无处使用
旧 Key 在 regenerate 时已立即失效注意:PuppyOne 的
--regenerate操作是原子性的——执行的瞬间旧 Key 失效、新 Key 生效。因此在轮换期间,使用旧 Key 的请求会立即被拒绝。建议在低流量时段执行轮换。
安全规范
不要硬编码 Key
# 不推荐:Key 硬编码在代码中
api_key = "sk_live_a1b2c3d4e5f6..."
# 推荐:从环境变量读取
import os
api_key = os.environ["PUPPYONE_ACCESS_KEY"]// 不推荐
const apiKey = "sk_live_a1b2c3d4e5f6...";
// 推荐
const apiKey = process.env.PUPPYONE_ACCESS_KEY;不要共享 Key
# 不推荐:多个 Agent 共用一个 Key
客服 Agent ──┐
研发 Agent ──┼── sk_live_shared_xxx
销售 Agent ──┘
# 推荐:每个 Agent 独立的 Connection 和 Key
客服 Agent ── sk_live_support_xxx
研发 Agent ── sk_live_dev_yyy
销售 Agent ── sk_live_sales_zzz共享 Key 的问题:
- 无法区分是哪个 Agent 发起的请求
- 无法为不同 Agent 设置不同的权限
- 一个 Agent 泄漏 Key 会影响所有 Agent
不要提交到版本控制
将 Access Key 加入 .gitignore,或使用 .env 文件管理:
# .env 文件
PUPPYONE_ACCESS_KEY=sk_live_a1b2c3d4e5f6...# .gitignore
.envKey 失效时会发生什么
当一个 Access Key 被轮换(regenerate)或 Connection 被删除时:
- 立即生效:所有使用该 Key 的请求立即被拒绝
- 返回 401:API 返回认证失败错误
- 不可恢复:旧 Key 无法恢复,必须使用新 Key
{
"error": "invalid_access_key",
"message": "The provided access key is invalid or has been revoked."
}正在运行的 Agent 会在下一次 API 调用时收到认证失败。如果你的 Agent 框架支持重试机制,确保它不会无限重试失败的认证请求。
故障排查
Access Key 无效
Error: Invalid access key检查清单:
- Key 是否完整复制(没有截断或多余空格)
- Key 是否已被轮换(regenerate 后旧 Key 立即失效)
- Connection 是否已被删除
权限不足
Error: Permission denied这不是 Key 的问题,而是 FLS 权限配置的问题。检查:
- 该 Connection 的 Tool 权限是否包含所需操作
- 该 Connection 的路径权限是否包含目标路径
- 参考 FLS 权限控制
确认当前身份
# 人类用户:检查 JWT 身份
puppyone auth whoami
# Agent / Connection:查看 Key 信息
puppyone conn info <connection-id>