Gumloop 的凭据体系经历了三个阶段的演进:Phase 1 仅支持 Personal Apps(每个用户独立配置 OAuth/API Key);Phase 2 (v7.2.0) 引入 Team Apps(共享 OAuth 连接,如 marketing@company.com 的 Gmail 账户),但仅限预定义的服务连接;Phase 3 (v9.10.0) Team Level Secrets 填补最后一块空白——团队管理员现在可存储任意变量和密钥(不限于预定义 OAuth 服务),且这些凭据自动对团队所有成员可用。
| 场景 | Team Secrets 之前 | Team Secrets 之后 |
|---|---|---|
| 共享 API Key | 每个成员在 Personal Apps 中重复配置同一个 Key | 管理员配置一次,全团队自动可用 |
| 新人入职 | 需要半天时间逐个收集所有共享凭据 | 加入团队即可使用,零配置 |
| Key 轮换 | 通知所有成员手动更新,无法强制,有人遗漏 | 一个位置更新,全员立即生效 |
| 安全审计 | 无法追踪谁用哪个凭据做了什么 | 使用事件可审计追踪 |
| 凭据泄露 | 一个成员泄露密钥,所有副本都需回收 | 单点撤销,影响范围可控 |
Team Level Secrets 的核心设计是作用域绑定 (Scope Binding)——凭据与特定团队绑定,仅在团队范围内可用:
凭据存储层级: ┌──────────────────────────────────────────────────┐ │ Organization (组织) │ │ ├── Team A │ │ │ ├── Secret: OPENAI_API_KEY 仅 Team A 可访问 │ │ │ ├── Secret: GITHUB_TOKEN 仅 Team A 可访问 │ │ │ └── Variable: DEFAULT_MODEL 仅 Team A 可访问 │ │ ├── Team B │ │ │ ├── Secret: AWS_ACCESS_KEY 仅 Team B 可访问 │ │ │ └── Secret: DATABASE_URL 仅 Team B 可访问 │ │ └── Personal │ │ ├── Secret: MY_OPENAI_KEY (User 1) 仅 U1 可访问│ │ └── Secret: MY_OPENAI_KEY (User 2) 仅 U2 可访问│ └──────────────────────────────────────────────────┘
团队凭据在 Agent 运行时和 Workflow 执行时被安全注入:
┌──────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Team Secrets │────>│ 凭据解析器 │────>│ Agent / Workflow │
│ Store │ │ (Credential │ │ Runtime │
│ │ │ Resolver) │ │ │
│ OPENAI_KEY │ │ │ │ $TEAM_OPENAI_KEY │
│ GITHUB_TOKEN │ │ 作用域检查 → │ │ 在代码节点中可用 │
└──────────────┘ │ 解密 → 注入 │ └─────────────────┘
└──────────────────┘
推断的注入方式:(1) 代码节点变量注入——通过模板语法引用(如 ${{team.secrets.OPENAI_API_KEY}})或环境变量;(2) Agent 凭据选择器——团队凭据作为第三选项出现在下拉菜单中(继 Personal Default、Team App 之后);(3) Workflow 节点注入——在需要凭据的节点下拉菜单中出现。
| 操作 | Admin | Manager | Team Admin | Team Member | Security |
|---|---|---|---|---|---|
| 创建团队凭据 | ✓ | ✓ | ✓ | ✗ | ✗ |
| 查看凭据列表(名称/元数据) | ✓ | ✓ | ✓ | ✓ | ✓ |
| 查看凭据值 | ✓ | ✓ | ✓ | ✗ | ✓ |
| 编辑/更新凭据值 | ✓ | ✓ | ✓ | ✗ | ✗ |
| 使用团队凭据(在 Agent/Workflow 中) | ✓ | ✓ | ✓ | ✓ | ✓ |
| 查看凭据使用审计日志 | ✓ | ✗ | ✗ | ✗ | ✓ |
关键设计决策:(1) 查看凭据值与使用凭据权限分离——Team Member 可使用但不看到原始值 (2) 凭据值在注入时解密,Agent 日志中自动遮蔽 (3) Security 角色有只读审计权但不能修改。
| 集成点 | 现有体系 | Team Level Secrets 扩展 |
|---|---|---|
| 凭据体系 | Personal Apps + Team Apps | 新增 Team Secrets(任意键值对) |
| 角色体系 | Composable Roles (v8.7.0) | Manager 的 credentials:* 覆盖 Team Secrets |
| 分享权限 | Owner/Editor/Viewer/Use Only | Team Secrets 继承团队分享层级 |
| 应用策略 | App Policies (v8.6.0) | 推断:可限制哪些 Agent 可访问特定 Secret |
| 审计日志 | Audit Logs (v9.2.0) | 新增:凭据创建/修改/使用/删除事件 |
| Incognito Mode | 对话不留存 (v9.6.0) | 推断:Incognito 会话中凭据注入可能受限 |
| Subagents | 子 Agent 凭据继承 (v9.0.0) | 推断:子 Agent 自动继承父 Agent 的 Team Secret |
| ID | 需求 | 优先级 |
|---|---|---|
| TS-01 | 团队管理员可在 Team Settings 中创建新的 Team Secret/Variable | P0 |
| TS-02 | 创建凭据时需指定:名称(唯一)、值、类型(Secret/Variable)、描述(可选) | P0 |
| TS-03 | Secret 类型凭据的值在创建后不可再次查看(仅可覆盖更新) | P0 |
| TS-04 | Variable 类型凭据的值可在编辑时查看 | P1 |
| TS-05 | 支持创建时的可见性控制:所有成员 / 仅管理员 / 指定角色 | P1 |
| TS-06 | 凭据名称在团队内唯一,不允许重名 | P1 |
| ID | 需求 | 优先级 |
|---|---|---|
| TS-10 | 团队凭据创建后自动绑定到当前团队 | P0 |
| TS-11 | 凭据仅在所属团队的 Agent/Workflow 中可用 | P0 |
| TS-12 | 支持多团队场景——同一名称的凭据可在不同团队有不同值 | P1 |
| TS-13 | 团队删除/解散时,团队凭据自动失效并标记待清理 | P1 |
| ID | 需求 | 优先级 |
|---|---|---|
| TS-20 | 团队成员在 Agent/Workflow 的凭据选择器中看到团队凭据 | P0 |
| TS-21 | 成员使用团队凭据时,凭据值自动注入到运行时(自动解密) | P0 |
| TS-22 | 成员使用凭据时无需看到凭据原始值 | P0 |
| TS-23 | 凭据值在 Agent 日志和对话记录中自动遮蔽 | P0 |
| TS-24 | 成员更换团队时,对原团队凭据的访问自动撤销 | P1 |
| ID | 需求 | 优先级 |
|---|---|---|
| TS-30 | 管理员可更新团队凭据的值(覆盖写入) | P0 |
| TS-31 | 凭据值更新后,所有引用该凭据的 Agent/Workflow 立即使用新值 | P0 |
| TS-32 | 凭据更新时提供备注(可选),记录轮换原因 | P1 |
| TS-33 | 管理员可删除团队凭据 | P0 |
| TS-34 | 删除团队凭据时,提示受影响的 Agent/Workflow 数量 | P1 |
| ID | 需求 | 优先级 |
|---|---|---|
| TS-40 | 凭据的创建、更新、删除事件记录在审计日志中 | P1 |
| TS-41 | 凭据的使用事件可追踪(Agent/Workflow、成员、时间) | P1 |
| TS-42 | 凭据使用量统计(调用频次、失败率)可在 Analytics 中查看 | P2 |
| ID | 需求 | 优先级 |
|---|---|---|
| TS-50 | 自定义代码节点可通过特定语法引用团队凭据 | P1 |
| TS-51 | 代码节点中引用的凭据在执行时安全注入,不暴露在代码文本中 | P0 |
| TS-52 | 代码节点日志中自动检测并遮蔽凭据值(防止误打印泄漏) | P1 |
用户画像: 张伟,28 岁,刚加入一家 SaaS 创业公司的后端开发团队。团队使用 Gumloop Agent 进行代码审查、部署监控和数据分析。
作为新团队成员,我希望加入团队后能自动获得所有共享凭据(OpenAI API Key、GitHub Token、AWS Access Key)的访问权限,无需逐个向老成员索要并手动配置。
Before(Team Secrets 之前):
After(Team Secrets 之后):
验收标准:
用户画像: 李婷,34 岁,工程团队 Tech Lead 兼 Team Admin。团队使用一个共享的 OpenAI API Key。按安全策略需每月轮换。
作为团队管理员,当我需要轮换共享 API Key 时,希望在一个地方更新凭据值后,所有团队成员的 Agent 和 Workflow 自动使用新 Key,无需通知任何人手动操作。
Before(Team Secrets 之前):
After(Team Secrets 之后):
用户画像: 王浩,41 岁,公司信息安全负责人。正在季度 SOC 2 审计,需确认所有外部 API 凭据的使用情况。
作为安全负责人,我希望能够查看每个团队凭据的使用记录:哪些 Agent 使用了它、哪些成员在什么时候发起了调用。
验收标准:
| 竞品 | 产品类型 | 作用域 | 注入方式 | AI Agent 原生 | Gumloop 差异 |
|---|---|---|---|---|---|
| GitHub Actions Secrets | CI/CD 平台 | Repo/Org 级 | Workflow 环境变量 | ✗ | Agent 运行时动态注入,非构建时静态注入 |
| Vercel Env Vars | 部署平台 | Project/Env 级 | 构建/运行时 env | ✗ | 与 Agent 权限模型联动,非简单环境分离开关 |
| 1Password Teams | 密码管理器 | Vault 级 | 客户端/CLI 拉取 | ✗ | 凭据在 Agent 决策回路中,非手动拉取 |
| AWS Secrets Manager | 云密钥管理 | 账户级 | SDK/API 拉取 | ✗ | 支持自动轮换(Lambda),Gumloop 暂不支持 |
| 漏斗阶段 | 事件名称 | 触发条件 | 指标/KPI | 优先级 |
|---|---|---|---|---|
| 采用 | team_secret_created | 管理员创建团队凭据 | 创建数/日、创建团队数/周 | P0 |
| 采用 | team_secret_first_use | 团队中首次有成员使用团队凭据 | 首次使用时间 (TTFV) | P0 |
| 使用 | team_secret_accessed | 成员在 Agent/Workflow 中使用 | 使用次数/日、使用成员数/周 | P0 |
| 使用 | team_secret_injected | 凭据值在运行时被解密注入 | 注入次数/日、按凭据名分布 | P1 |
| 管理 | team_secret_rotated | 管理员更新凭据值 | 轮换次数/月、平均轮换间隔 | P1 |
| 管理 | team_secret_deleted | 管理员删除团队凭据 | 删除次数/月 | P1 |
| 质量 | team_secret_injection_failure | 凭据注入失败 | 失败率、按错误类型分布 | P0 |
| 留存 | team_secret_repeat_team | 团队 30 天内持续使用 | 30 天留存率 | P1 |
| 扩展 | team_secret_count_per_team | 每团队凭据数量统计 | 分布直方图 | P2 |
| 阶段 | 时间线 | 里程碑 | 状态 |
|---|---|---|---|
| Phase 1 — 基础能力 | v9.10.0 | 团队凭据创建、共享、轮换 | 已发布 |
| Phase 2 — 审计与控制 | v10.x | 凭据使用审计日志、凭据级权限控制(Agent 级别) | 规划中 |
| Phase 3 — 自动化 | v10.x | 凭据轮换提醒、条件访问控制(IP/时间/Agent 类型) | 规划中 |
| Phase 4 — 外部集成 | v11.x | 外部 Vault 集成(HashiCorp Vault、AWS Secrets Manager)、凭据健康扫描 | 探索中 |
由 Claude spec-generate 系统生成 · 来源:Gumloop Credentials 帮助文档 + Gumloop Changelog v9.10.0 · 部分机制基于现有文档的合理推断