初始上下文

产品/团队
Gumloop / AI Agent 平台
功能
Enterprise App Policies & Rules — 企业应用策略与规则
描述
面向企业管理员和安全角色的治理功能,允许组织用自然语言定义 AI 代理使用第三方应用的行为边界。核心设计理念:AI 代理不能凌驾于组织治理之上 — 规则在基础设施层强制执行,无论用户在 prompt 中写了什么
动机
企业客户在使用 AI 代理调用 Slack、Salesforce、Notion、Gmail 等第三方工具时,面临三类风险:(1) 敏感操作未受控,如删除生产数据;(2) OAuth 登录绕过企业域,数据泄露到个人账户;(3) 代理使用无关的第三方 workspace,与组织资产脱节。传统的 prompt 约束不可靠 — 用户可以绕过,代理可以遗忘
目标用户与痛点
企业管理员、CISO 团队、合规角色 — 需要确保 AI 代理在安全可控的范围内操作,防止数据泄露和未授权操作
平台范围
Web 端(Settings → Organization → App Policies)
关键成功指标
规则创建量、策略拦截率、审计日志覆盖率、误报率

1. 概览

背景

企业客户在使用 AI 代理调用 Slack、Salesforce、Notion、Gmail 等第三方工具时,面临三类风险:(1) 敏感操作未受控,如删除生产数据;(2) OAuth 登录绕过企业域,数据泄露到个人账户;(3) 代理使用无关的第三方 workspace,与组织资产脱节。传统的「prompt 约束」不可靠 — 用户可以绕过,代理可以遗忘。

Gumloop App Policies 在工具调用管线层植入检查点,将治理逻辑从 prompt 层下沉到执行引擎层。

目标

维度目标
安全性阻止代理执行高风险工具调用(删除、写入、外发),无法通过 prompt 绕过
合规性强制 OAuth 绑定企业邮箱域,锁定 SaaS workspace 到组织账户
可观测性标记可疑操作(tag),记录完整审计轨迹供管理员回溯
可管理性自然语言 → 可执行规则的 AI 构建器,降低规则编写门槛

2. 核心机制

2.1 三种策略类型

┌─────────────────────────────────────────────────────────────┐
│                  Enterprise App Policies                      │
│                                                              │
│  ┌──────────────┐  ┌──────────────────┐  ┌───────────────┐  │
│  │  App Rules   │  │ Domain           │  │  App Claims   │  │
│  │  应用规则     │  │ Restrictions     │  │  应用声明      │  │
│  │              │  │ 域限制            │  │               │  │
│  ├──────────────┤  ├──────────────────┤  ├───────────────┤  │
│  │block 或 tag  │  │强制 OAuth 使用    │  │锁定 provider   │  │
│  │工具调用,基于  │  │企业邮箱域         │  │workspace 到    │  │
│  │CEL条件表达式  │  │                   │  │组织            │  │
│  └──────────────┘  └──────────────────┘  └───────────────┘  │
│                                                              │
│  执行引擎: check_rules(tool_call) → before + after 双重检查   │
└─────────────────────────────────────────────────────────────┘
策略类型功能典型场景
App Rules(应用规则)在工具调用前/后执行 block 或 tag 操作阻止删除 Slack 消息、标记写入 Salesforce
Domain Restrictions(域限制)强制 OAuth 连接使用指定企业邮箱域仅允许 @acme.com 邮箱登录 Google Drive
App Claims(应用声明)锁定第三方 provider 的 workspace 到组织强制 Slack 使用 acme-corp workspace

2.2 规则执行引擎 — check_rules

每次工具调用触发两次 check_rules 评估 — 执行前和执行后:

           ┌──────────┐
           │Tool Call │
           │  发起     │
           └────┬─────┘
                │
          ┌─────▼──────────────────────┐
          │ check_rules(check_type=     │
          │   before)                   │
          │                            │
          │ Phase match → Target match  │
          │ → Scope match → Condition   │
          │ match → Action              │
          └─────┬──────────────────────┘
                │
         ┌──────┴──────┐
         │             │
     [block]       [pass/tag]
         │             │
    ┌────▼────┐   ┌────▼────┐
    │ 拒绝调用  │   │ 执行工具  │
    │ 返回通用  │   │ 调用     │
    │ 错误消息  │   └────┬────┘
    └─────────┘        │
                  ┌────▼──────────────────────┐
                  │ check_rules(check_type=     │
                  │   after)                    │
                  │ (条件可引用 output 变量)     │
                  └─────┬──────────────────────┘
                        │
                 ┌──────┴──────┐
                 │             │
             [block]       [tag/pass]
                 │             │
            ┌────▼────┐   ┌────▼────┐
            │ 回滚/阻止 │   │ 记录审计  │
            │ 返回结果  │   │ 日志/通过 │
            └─────────┘   └─────────┘

匹配逻辑(五步顺序评估)

  1. Phase matchcheck_type 匹配当前阶段(before/after)
  2. Target match — 规则目标匹配当前调用方(org/user/agent)
  3. Scope match — 规则作用域匹配当前工具名称(空 = 该 app 下全部工具)
  4. Condition match — CEL 表达式计算为 true
  5. Action — 执行 tag(记录并继续)或 block(立即终止)

零命中 = 正常放行。评估错误 → 拒绝调用(失败封闭)。

2.3 两层作用域

   ┌─────────────────────────────────────┐
   │         Organization-Level           │
   │  Settings → Org → App Policies       │
   │  作用于:所有用户、所有代理            │
   │  UI:统计卡片 + 执行活动直方图         │
   │       + 按 Server 分组规则列表         │
   └──────────────┬──────────────────────┘
                  │
   ┌──────────────▼──────────────────────┐
   │           Agent-Level                │
   │  代理配置面板 Rules 标签页             │
   │  或通过代理聊天创建(需 App Rules      │
   │  Creation 能力开启)                   │
   │  作用于:仅该代理的工具调用            │
   └─────────────────────────────────────┘
属性Organization-LevelAgent-Level
管理入口Settings → Organization → App PoliciesAgent 配置面板 / 代理聊天
适用对象所有用户、所有代理特定代理
用户可见性仅 Admin/Security 角色Agent 创建者 + Admin
被阻止时的用户消息「此操作已被组织的安全策略限制」「此操作已被为此代理配置的规则限制」
管理员可见性完整上下文(Activity 标签页 + Audit Logs)同上

关键约束:Agent 级规则不能覆盖或放宽 Org 级阻止。只能叠加额外限制(「只能更严格,从不会更宽松」)。没有任何 allow-override 机制。

2.4 AI 规则构建器

降低自然语言治理规则的编写门槛:

   自然语言输入          结构化规则           模拟验证
  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
  │ "阻止代理删除  │ →  │ JSON:         │ →  │ 对近30天实际   │
  │  Slack消息或   │    │ check_type=   │    │ 工具调用回放   │
  │  写入超过100条" │    │ before,       │    │ 标记误报/漏报  │
  │              │    │ action=block,  │    │              │
  │              │    │ tool_names=[   │    │ 结果:        │
  │              │    │  slack_send_   │    │ 3次命中 ✅    │
  │              │    │  message,      │    │ 0次误报 ✅    │
  │              │    │  slack_delete_ │    │              │
  │              │    │  message],     │    │              │
  │              │    │ condition=...  │    │              │
  └──────────────┘    └──────────────┘    └──────────────┘

流程:管理员用自然语言描述意图 → AI 构建器生成结构化规则 JSON(含 CEL 条件表达式)→ 对近期真实工具调用做回放模拟 → 展示命中次数和误报数 → 管理员确认后激活。

2.5 失败封闭设计(Fail-Closed)

check_rules 评估过程中任何错误(CEL 表达式异常、匹配引擎故障、规则数据损坏)统一视为 block。代理端看不到具体原因 — 仅收到通用被拒消息。管理员在 Audit Logs 中查看完整错误上下文。

2.6 重叠规则叠加逻辑

Org Rule A: block tool_X                     → baseline
Agent Rule B: block tool_X, tool_Y           → additive
Agent Rule C: tag tool_Z                     → additional

最终效果:tool_X = block, tool_Y = block, tool_Z = tag

所有匹配规则取 最严格合集。只要任一规则的 action 为 block,调用即被拒绝。没有优先级 — 全部生效。

3. 功能需求

模块 A:App Rules(应用规则)

ID需求来源
AR-01管理员可创建规则,指定 check_type(before/after)、action(block/tag)、tool_names(可选)、CEL 条件表达式文档
AR-02before 规则可引用变量:argstool_nameserver_id文档
AR-03after 规则额外可引用 output 变量(工具调用结果)文档
AR-04tool_names 为空 = 该 app 下所有工具均被规则覆盖文档
AR-05block 的代理 → 用户端显示通用错误消息,不泄露具体规则文档
AR-06tag 的调用 → 继续执行,事件记入 Activity 和 Audit Logs文档
AR-07Agent 级规则可由代理在聊天中提议,用户显式 Accept/Reject 后生效文档

模块 B:Domain Restrictions(域限制)

ID需求来源
DR-01管理员配置允许的邮箱域名列表(如 acme.com文档
DR-02用户 OAuth 连接第三方应用时,强制使用匹配域名的账户文档
DR-03非匹配域名的 OAuth 尝试被拒绝并给出明确提示推断

模块 C:App Claims(应用声明)

ID需求来源
AC-01管理员将特定 provider(Slack、Salesforce、Notion)锁定到指定组织 workspace文档
AC-02代理只能使用已声明的 workspace,无法切换到其他 workspace文档
AC-03App Claims 为 Org 级设定,不可在 Agent 级覆盖推断

模块 D:AI Rule Builder(AI 规则构建器)

ID需求来源
AB-01支持自然语言输入,自动生成结构化规则 JSON文档
AB-02生成规则后可对近期真实工具调用做模拟回放文档
AB-03模拟结果展示命中次数和潜在误报数文档
AB-04管理员审阅后手动激活规则推断

模块 E:执行活动与审计

ID需求来源
EA-01Org 级 App Policies 页面展示统计卡片和执行活动直方图文档
EA-02所有规则命中(block/tag)写入 Audit Logs,管理员可搜索和回溯文档
EA-03被 block 的代理只能看到通用消息,管理员可见规则详情和触发上下文文档

4. 用户场景

场景 1 — CISO 阻止代理删除 Slack 消息

角色:Acme Corp 安全管理员(CISO 团队)

目标:确保 AI 代理不能删除 Slack 消息,无论用户如何 prompt

流程:

  1. 管理员进入 Settings → Organization → App Policies → App Rules
  2. 在 AI Rule Builder 中输入:「阻止代理删除任何 Slack 消息」
  3. AI 生成规则:check_type=before, action=block, tool_names=["slack_delete_message"], condition=null
  4. 回放模拟显示:过去 30 天内有 2 次 slack_delete_message 调用,均命中 → 0 误报
  5. 管理员激活规则
  6. 某用户 prompt:「帮我删掉那条 Slack 消息」
  7. 代理在调用 slack_delete_message 前触发 check_rules(before) → 命中 → 返回:「此操作已被组织的安全策略限制」
  8. Audit Logs 记录完整上下文(用户、代理、时间、工具名、匹配的规则 ID)

场景 2 — 代理自我提议规则,用户批准

角色:Acme Corp 的某个 Agent 用户

目标:让代理在特定场景下自动标记(而非阻止)写入操作

流程:

  1. 用户与代理对话,讨论 Salesforce 数据写入的安全实践
  2. 代理(App Rules Creation 能力已开启)提议:「我建议创建一条规则:当我向 Salesforce 写入超过 50 条记录时,标记下来供你审查」
  3. 用户看到 Accept/Reject 卡片,点击 Accept
  4. 规则生效:后续代理调用 salesforce_bulk_insertargs.count > 50 时 → tag(非 block)
  5. 用户可在 Activity 标签页查看所有被标记的调用

5. 竞争分析

维度Gumloop App PoliciesOpenAI Enterprise PoliciesAnthropic MCP GovernanceAWS IAM for AI
治理层级工具调用管线(infra 层)API 使用限制MCP Server 权限资源级 IAM policy
执行点每次工具调用 before+afterAPI 调用前鉴权Server 连接时资源操作前
规则语言自然语言 → CEL预定义策略模板手动配置JSON policy document
代理绕过风险无(infra 强制)取决于集成深度取决于 client 实现IAM 标准保证
模拟验证AI 回放历史调用的命中率IAM Policy Simulator(人工)
Agent 自治Agent 可提议规则(需审批)
失败模式Fail-closedFail-closed取决于实现Default deny

Gumloop 差异化:(1) 执行点在工具调用层,而非 API 入口 — 粒度更细;(2) AI 辅助自然语言 → CEL 转换 + 模拟回放,降低配置门槛;(3) Agent 可自我提议约束,形成「代理治理代理」的闭环。

6. 未来演进方向

方向动机优先级推断
规则模板市场跨客户共享已验证的 CEL 规则库(如标准 SOC2 合规套装)
异常检测驱动的规则推荐从 Audit Logs 中自动发现异常 pattern,建议创建规则
临时豁免(Time-bound override)支持有时效的规则豁免,到期自动恢复,用于应急场景
规则影响分析修改/删除规则前,评估对历史工具调用的反向影响
跨 Provider 的通用条件表达式将 CEL 条件中的 tool_name/output 抽象为跨 app 的统一 schema
Agent 级规则信任等级Agent 自主提议的规则经过一定时间无违规后自动升级为 Org 级

源文档参考

gumloop-docs_app-policies.md — Enterprise App Policies & Rules 官方帮助文档存档(2026-05-30)

原 URL:App Policies Overview · App Rules

由 Claude spec-generate 系统生成 · 来源:Gumloop Enterprise App Policies 官方帮助文档