目标:讲清 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 本章核心带走
-
Policy 层是最高权限。 不可被用户覆盖。字段级合并中 policy > local > project > user。
-
Marketplace 管控:Seed-managed(只读预装)+ extraKnownMarketplaces(企业声明)+ blocked sources(来源封锁)。
-
Hook 管控:
disableAllHooks(全局关闭)+managedHooksOnly(只跑企业 hook)。企业用 hook 做安全基线。 -
Permission 管控:Policy deny > User allow。这是最终裁决者——curl、网络访问、MCP 都可以被封锁。
-
Gateway = 企业审计中枢。 JWT + Postgres + OIDC。集中化日志、spend 追踪、身份管理。不是本地 transcript 能比的。