权限、安全与治理
OceanWay 企业角色、细粒度授权、数据外发、Secret、审批、审计和生命周期治理
权限、安全与治理
跨产品互通会放大效率,也会放大误操作和数据泄漏风险。OceanWay 的治理目标是:每一次读取、生成、外发、发布和扣款,都能证明“谁以什么身份、在什么组织、基于什么授权、使用了哪些数据和工具”。
授权模型
采用 RBAC 作为易理解的职责基线,再以 Scope、资源 Grant、环境策略、数据分类和预算约束收敛实际权限。
有效权限 =
主体角色
∩ Organization / Workspace / Project Scope
∩ 资源 Grant
∩ Agent Capability
∩ MCP Tool Grant
∩ 数据与环境策略
∩ 当前预算
∩ 临时审批任意一层拒绝,操作就终止。上层角色只允许授权自己拥有的范围,不能制造权限放大。
角色基线
本节 Organization、Workspace 与 Project 角色属于企业客户授权域,不代表 OceanWay 内部后台权限。企业 Owner 或 Organization Admin 不能因此进入 admin.oceanway.tech。
Organization 角色
| 角色 | 主要职责 | 明确不自动获得 |
|---|---|---|
| Organization Owner | 所有权交接、组织关闭、最高治理责任 | MCP Token 原文 |
| Organization Admin | 成员、Workspace、产品与组织配置 | 完整财务合同和客户内容 |
| Security Admin | 身份、角色、策略、凭据撤销与审计 | 凭据原文、付款方式修改 |
| Billing Admin | 充值、订阅、账单、发票、预算与合同 | 企业内容读取权限 |
| Platform Admin | Workspace、Project、产品开通和公共资源 | 组织所有权与付款方式 |
| Agent Admin | Agent 发布、版本和能力审批 | 绕过安全策略 |
| MCP Admin | Connector、组织 Connection 与 Tool Grant | 查看 Secret 原文 |
| Developer | Developer App、受限 Service Account 和 Key | 企业财务与全局发布 |
| Auditor | 安全、操作与账务只读 | 任何写操作 |
Workspace / Project 角色
- Workspace Admin:管理该 Workspace 成员、资源和策略。
- Project Manager:负责人、计划、预算申请和交付状态。
- Editor:编辑业务对象和资产。
- Runner:可以执行已批准 Agent/Canvas,不一定可以编辑定义。
- Viewer:只读已授权资源。
- Guest:只访问明确指定的 Workspace 或 Project。
财务权限与内容管理权限必须分离。Service Account 永远不能成为 Organization Owner、Billing Admin 或邀请成员。
OceanWay Workforce 角色
内部管理员使用独立 Workforce Principal 和职责权限:
| 角色 | 主要职责 | 明确不自动获得 |
|---|---|---|
| Business / Support Operator | 经营、用户支持与脱敏排障 | 客户内容、Secret、生产命令和账务修改 |
| Model / Supply Operator | Offering、Deployment、Channel/Supply 与 Provider | 用户钱包、客户内容和企业成员管理 |
| Platform SRE / On-call | Alert、Incident、队列、Worker 与最小缓解 | Secret 明文、任意退款和内容读取 |
| Asset Operator | 原结果取回、媒体校验和落盘修复 | Provider Credential 与钱包调整 |
| Billing Reconciler | Reservation、Settlement、Release、Refund 对账 | Prompt、媒体原件和 Provider Secret |
| Security Administrator | Workforce、策略、授权、撤权和访问审查 | 付款操作、客户内容和凭据明文 |
| Auditor | 只读审计、变更、Incident 与账务证据 | 任何写操作 |
Incident Commander 负责协调,不自动获得上述角色权限;永久全权限管理员只作为受控 Break-glass。完整工作区与命令映射见管理员平台与运维控制面。
Capability 与资源授权
权限不只描述“能否进入页面”,还需要表达动作:
resource.read
resource.create
resource.revise
resource.share
resource.publish
resource.delete
agent.inspect
agent.deploy
agent.run
mcp.connection.manage
mcp.tool.invoke
billing.view
billing.spend
budget.manage
audit.read“可以运行 Agent”与“可以查看或编辑 Agent 内部定义”分开;“可以使用 Asset”与“可以下载原件、分享或发布”分开。
数据分类与外发
每个 Asset、Canvas、Prompt、Knowledge Source 和业务对象拥有数据分类:
| 分类 | 示例 | 默认外发策略 |
|---|---|---|
| Public | 已公开案例、公开商品图 | 可发送到已批准 Provider |
| Internal | 普通项目素材、内部 Prompt | 仅组织批准的 Provider |
| Confidential | 未发布 Campaign、客户资料 | 指定区域、模型与 MCP,完整审计 |
| Restricted | 密钥、身份证明、受监管数据 | 默认禁止进入模型 Prompt 或外部 MCP |
模型 Deployment 和 MCP Connector 同时声明数据处理地区、保留政策、训练政策、子处理方和允许分类。Run 在预占前执行数据外发策略;不满足时明确拒绝,不能为追求成功率静默换到更宽松渠道。
Secret 与凭据
需要由平台代为使用的 Secret 包括 Provider Credential、MCP OAuth Token/Key、支付证书、Webhook Secret 和对象存储凭据。长期客户 DeveloperCredential 单独处理:它是客户提交给 Public API Edge 的认证材料,OceanWay 不保存其可逆 Secret。
不变量:
- 需要代用的 Secret 只保存在各自信任边界内的服务端 Vault 或加密存储,不进入共享通用密钥库;
- 浏览器列表不返回明文;
- 不进入 Prompt、Canvas 节点、Asset Metadata、领域事件或普通日志;
- Agent Run 只获得受限调用能力,不获得 Secret;
- 支持负责人、用途、创建时间、到期、轮换、撤销与最后使用审计;
- 删除成员或 Connector 时触发撤权和必要轮换;
- 管理员可以撤销凭据,但不能因此读取原文。
DeveloperCredential 的完整 Secret 只在创建或轮换响应中显示一次。此后 Developer Access Domain 仅保存校验 Hash、前缀、尾号、状态与必要安全元数据,任何用户或管理员都不能再次取回或恢复原文;该 Secret 不进入 Vault、Text/Media Gateway 或 Provider,遗失时只能轮换。
当前 Media Gateway 以 Poller/Reconciler 为恢复基线。Provider 支持回调且未来启用时,由 Media Gateway 内部 Callback Handler 使用与客户 Webhook、Provider 出站 Key 完全独立的 Callback Secret 或公钥,对原始 Body 验签、去重并持久化收据。该工作负载身份只能读取最小验签配置和写入内部收据;它不是独立产品服务,也不能读取 Developer Key、用户 Session、Membership、客户组、用户资产或账本。
Developer Key 在 OceanWay API Edge 终止;Media Gateway 只验证 OceanWay Workload Principal 使用的短期 Workload Credential。Provider Credential Version 是网关内部供应凭据,不能与客户 Developer Key 混为一类。详细边界见调度、执行与模型网关池。
高风险审批
以下动作默认进入审批或需要企业预先授权的工作流:
- 对外发布商品、作品、邮件或广告;
- 删除、退款、调价、采购和支付;
- 大规模数据导出;
- 使用 Confidential/Restricted 客户资产;
- 超过预算阈值的大额消费;
- 首次使用新的外部 MCP;
- 修改生产环境;
- Agent 创建或调用其他 Agent;
- 将 FDE 客户资产发布成公开案例。
- 暂停生产 Deployment、排空 Supply 或变更生产路由;
- 人工绑定上游任务、补录执行结果或处置未知提交;
- 释放、结算、退款或平台承担成本;
- 获取 Case-scoped 客户内容调试权限。
Approval 绑定 Run Step、请求内容哈希、有效期、审批人和条件。修改输入、目标、金额或工具版本后,原审批失效。审批人不能批准自己没有权限执行的操作。
审计链
审计不能只记录“Agent 做了某事”,而要按入口保存业务 Actor、执行 Principal、认证证据和服务 Hop。三种客户入口的起点不同:
客户网页:Customer User Actor → Membership → Customer Session
正式 API:Service Account Actor / Execution Principal → DeveloperCredential ID
Playground:Customer User Actor → Membership → Playground Execution Grant ID → Service Account Execution Principal
以上入口
→ Agent Revision(如有)
→ Agent Run / Run Step / Execution Attempt
→ Caller Workload Principal 与短期 Workload Credential(仅当前服务 Hop)
→ Model Deployment / MCP Connection / 外部账户(按实际调用)
→ 最终动作与账务事实正式 API 的单次调用不假定存在可识别的真人发起人。Service Account 的创建人、负责人、审批人和历史 Membership 作为治理元数据另行关联,不能冒充该请求的业务 Actor;Playground 才保留本次 Customer User Actor,并通过 Grant 委托目标 Service Account 执行。
requestId、traceId、correlationId/operationId 与稳定领域 ID 共同关联:
- 登录、上下文切换与权限判断;
- 资源读取、版本、分享、复制与删除;
- Agent、模型、MCP 调用和实际 Deployment;
- 人工审批及拒绝原因;
- 预算预占、Meter Event、结算和退款;
DeveloperCredential签发、一次性展示完成、轮换和撤销;审计事件不记录 Secret;- 成员加入、角色变化、停用和离职;
- FDE 访问、交付、验收与案例发布。
审计主体包括客户真人、Workforce、Service Account、Worker 和自动策略。审计日志追加写入,普通业务管理员与运维人员不可修改或删除。敏感 Prompt 和文件默认记录资源 ID、哈希、分类与必要摘要,不复制完整内容或 Secret。
内部运维命令与职责分离
内部后台查询和处置使用不同权限边界:
Workforce Role
∩ Duty Scope
∩ Environment
∩ JIT Grant
∩ Incident / Reconciliation Case Scope
∩ Approval Policy所有写操作必须通过 Admin Command Gateway 和唯一拥有数据的 Domain Command Service,携带幂等键、理由、目标 Revision、影响预览和可选 Incident/Case。禁止提供任意 SQL、直接编辑状态、直接改 Ledger 或绕过网关状态机的“强制成功”。生产路由与财务处置按策略执行提议与批准职责分离。
租户隔离
隔离必须覆盖:
- PostgreSQL 查询条件与 Repository;
- 对象存储
storageKey、签名和删除; - 搜索索引与结果再授权;
- 缓存 Key 与失效范围;
- Run 队列、公平调度和并发;
- SSE/Webhook 订阅;
- 账本、预算、日志与导出;
- 备份、恢复和管理员支持访问。
任何缺少 Organization/Workspace 范围的业务记录都属于架构缺陷,而不是前端隐藏即可解决的问题。
企业身份安全
阶段化能力:
- 首期:邮箱/密码或既有登录、MFA、邀请制 Membership、Session 撤销。
- 企业版:OIDC/SAML SSO、域名验证、强制 MFA、登录策略。
- 受管企业:SCIM Provision/Deprovision、Managed Identity、条件访问。
- 高级治理:数据驻留、DLP、BYOK/BYOC 与客户自有审计出口。
父域 Cookie 只作为三个客户站点的早期方案。长期使用集中 IdP 和各 Host 自有 Session;admin.oceanway.tech 使用独立 Workforce Client、Audience 和 Host-only Session,不接收客户父域 Session。新增低信任子域不得自动获得任何高权限 Session。
管理支持与 Break-glass
OceanWay 支持人员默认无权查看客户内容。确需排障时:
- 客户管理员或内部双人审批;
- 明确 Organization、Workspace、资源和时间窗;
- 只授予最小只读权限;
- 高敏内容继续遮蔽;
- 到期自动撤销;
- 全过程写入客户可见审计;
- 紧急 Break-glass 事后必须复核和通知。
该授权形成 SensitiveDebugGrant,必须绑定具体 Incident 或 Reconciliation Case、允许字段、资源范围、用途与到期时间。原始内容不能复制到普通日志、Alert、Incident Note、工单标题或团队聊天。
FDE 工程师访问客户环境同样使用限时授权,项目结束后回收账号、Service Account、Connection 与网络入口。
数据生命周期
删除、审计、账本和隐私权之间必须有清楚规则:
- 普通业务资源按引用图执行删除影响分析;
- 账本、订单、发票和必要审计按法定期限不可变保留;
- 用户注销不能删除企业拥有的资源;
- 不再需要的个人信息可去标识化,而保留稳定审计主体;
- Legal Hold 暂停相关删除并记录责任人和期限;
- 备份中的删除通过恢复后重放删除标记或到期策略处理;
- 公开案例撤回后停止公开访问,但保留授权、发布和撤回证据。
FDE 与案例治理
客户 Delivery Workspace 与公共案例必须是两套资源:
- 客户实时资产和 URL 不能直接用于公共页面;
- 案例发布创建独立、脱敏、固定版本的 CaseStudyRelease;
- 客户批准标题、素材、指标、使用期限和渠道;
- 指标保留来源与计算口径;
- 客户撤回时执行
case.withdrawn,不破坏原交付记录; - FDE 结束时明确 Agent、Prompt、Connector、代码和模型策略的知识产权归属。
十二条不可妥协的规则
- 登录身份、Membership、Service Account 和 Credential 分离。
- 权限、数据范围、工具和预算取交集。
- Agent 每次运行使用短期、限范围的 Run Principal。
- MCP 与模型凭据只存在服务端 Secret 边界。
- 企业余额不足绝不改扣个人钱包。
- 分享 Canvas 或 Agent 不自动分享凭据和底层资产。
- 高风险外部副作用可识别、可审批、可审计。
- 企业撤权覆盖 Session、Run、Key、Service Account 和 MCP。
- 每一笔扣款与外部动作都能追溯到真人或明确责任主体。
- 客户交付空间与公共案例物理和逻辑隔离。
- 企业客户管理员与 OceanWay Workforce 使用不同身份、Session 和授权边界。
- 内部运维只能通过幂等领域命令处置;客户内容调试必须 Case-scoped、限时且完整审计。