claudecode学习 第 22 章 · 企业特性

6 阅读3分钟

目标:讲清 Claude Code 的企业管控体系——四层作用域中的 Policy 层、三种管控机制(Marketplace 管控、Hook 管控、Permission 管控)、Seed-managed marketplace、企业 Gateway 审计架构。这是从个人工具到企业级部署的关键跨越。 受众:专业程序员。本机版本 2.1.220


22.1 四层作用域回顾

Ch06(配置体系)介绍了配置的三层。企业特性引入了第四层——Policy:

优先级从低到高:

  User settings     ← 你个人配的(~/.claude/settings.json)
       │
  Project settings  ← 项目级(.claude/settings.json),可 git 管理
       │
  Local settings    ← 本机覆盖(.claude/settings.local.json),不提交
       │
  Policy settings   ← 🔒 IT 安全部门推送,不可被用户覆盖

Policy 层的特殊之处:

  • 最高优先级。字段级合并——Policy 设了 deny,用户在 User/Project/Local 写 allow 也无效
  • 不是文件。不像 User settings 是 ~/.claude/settings.json。Policy 通过企业管理通道推送,用户接触不到

22.2 三种管控机制

机制一:Marketplace 管控

Seed-managed marketplace——IT 预装到只读目录:

"Marketplace 'X' is registered from the read-only seed directory 
 and will be re-registered on next startup."

用户只能:

  • claude plugin disable <plugin>@X——禁用具体插件
  • 不能删除 marketplace 本身——每次启动自动重新注册

extraKnownMarketplaces——企业声明的内部 marketplace:

// 企业 policy 配置(用户不可编辑)
{
  "extraKnownMarketplaces": {
    "mycorp-internal": {
      "source": {
        "source": "github",
        "repo": "mycorp/claude-plugins-internal"
      }
    }
  }
}

员工启动 Claude Code 时自动加载企业 marketplace。存在于 policy 层的 marketplace 不能被用户删除——用户只能 disable 其中的插件。

Policy-blocked sources——封锁特定来源:

{
  "blockedMarketplaceSources": ["github.com/evil-corp/*"]
}

机制二:Hook 管控

两个全局开关:

开关效果
disableAllHooks: true所有 hook(用户、项目、插件)全部关闭
managedHooksOnly: true只运行 policy 层定义的 hook,用户/项目/插件的都不运行

从二进制确认的加载逻辑(简化):

function getHooks(eventName, ..., permissionContext) {
  if (permissionContext?.managedHooksOnly) {
    let policy = getSettings("policySettings");
    if (policy?.disableAllHooks === true) return [];   // 全关
    return [...policy?.hooks?.[eventName] ?? []];       // 只用 policy 的
  }
  // 正常加载流程:合并 user + project + local + plugin hooks
}

设计意图:企业用 hook 做安全基线(强制 commit 前扫描、禁止推送敏感文件),同时用 managedHooksOnly 禁止用户绕过。

机制三:Permission 管控

Ch05(权限模型)的核心机制在企业场景的体现——Policy 层可以设置不可覆盖的 deny 规则:

{
  "permissions": {
    "deny": [
      "Bash(curl:*)",            // 禁止 curl
      "Bash(rm -rf:*)",          // 禁止强制删除
      "WebFetch(*)",             // 禁止所有网络请求
      "Bash(gh api:*)",          // 禁止 GitHub API 调用
      "mcp__*"                   // 禁止所有 MCP 工具
    ]
  }
}

Policy 的 deny > User 的 allow。 这是权限模型的最终裁决者。无论用户在 settings 中写了什么 allow 规则,policy deny 一定生效。


22.3 企业 Gateway 审计

二进制中有完整的 Gateway 模式代码——企业可以部署自己的 Claude Code Gateway:

Gateway 架构:
  ├─→ JWT 认证(session.jwt_secret)
  ├─→ Postgres 存储
  │     ├─→ 审计日志(audit_retention_days)
  │     ├─→ 消费记录(spend_retention_months)
  │     └─→ 身份记录(identity_retention_days)
  ├─→ OIDC 集成(okta/azure ad)
  ├─→ 速率限制 + 用量追踪
  └─→ 安全头(HSTS、CSP、frame control)

这不是用户侧的本地 .jsonl transcript——是企业级的集中化可观测平台。


22.4 完整管控矩阵

管控维度用户侧(Ch05/06)企业侧(Policy)
权限allow/deny 规则deny 规则不可覆盖
Marketplace自由添加/删除seed-managed(只读)+ blocked sources
Hooks自由创建/修改disableAll + managedHooksOnly
插件自由安装/卸载只能 disable,不能删除 policy marketplace
网络自由访问blocked sources + proxy enforcement
审计本地 transcript集中化 Gateway + Postgres

22.5 本章核心带走

  1. Policy 层是最高权限。 不可被用户覆盖。字段级合并中 policy > local > project > user。

  2. Marketplace 管控:Seed-managed(只读预装)+ extraKnownMarketplaces(企业声明)+ blocked sources(来源封锁)。

  3. Hook 管控disableAllHooks(全局关闭)+ managedHooksOnly(只跑企业 hook)。企业用 hook 做安全基线。

  4. Permission 管控:Policy deny > User allow。这是最终裁决者——curl、网络访问、MCP 都可以被封锁。

  5. Gateway = 企业审计中枢。 JWT + Postgres + OIDC。集中化日志、spend 追踪、身份管理。不是本地 transcript 能比的。