Skip to content

第 16 章 · 企业级配置与管理

本章目标:掌握 Claude Code 在企业环境中的集中管控手段——托管设置、身份认证、审计与合规,让团队安全地规模化使用。

16.1 设置层级体系

Claude Code 的配置遵循"就近优先、企业可覆盖"的层级模型:

text
1. 企业托管策略   Enterprise managed-policy     (最高优先级,IT 部门控制)
2. 命令行参数     CLI arguments
3. 项目共享       .claude/settings.json         (随仓库提交)
4. 项目本地       .claude/settings.local.json   (gitignore)
5. 用户全局       ~/.claude/settings.json       (最低优先级)

为什么分层

项目级配置保证团队一致性;用户级保留个性化空间;企业策略在最顶层兜底——即使开发者误配了危险选项,托管策略也能强制覆盖。

16.2 托管设置文件

IT 管理员通过系统级路径下发 managed-settings.json

bash
# macOS 路径
sudo mkdir -p "/Library/Application Support/ClaudeCode"
cat <<'EOF' | sudo tee "/Library/Application Support/ClaudeCode/managed-settings.json"
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git status)",
      "Read(src/**)"
    ],
    "deny": [
      "Bash(rm -rf /*)",
      "Bash(curl * | sh)",
      "Write(**/.env*)"
    ]
  },
  "env": {
    "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}
EOF

Windows 对应注册表或 C:\ProgramData\ClaudeCode\ 目录;Linux 使用 /etc/claude-code/

关键管控字段:

字段作用
permissions.allow/deny强制允许或禁止的工具调用模式
env注入环境变量(如禁用遥测)
apiKeyHelper指定密钥获取脚本,避免明文存储

16.3 身份认证与企业接入

API 密钥管理

生产环境不要把密钥写进 shell 配置文件。推荐两种方式:

bash
# 方式一:密钥助手脚本(密钥由 Vault/SSM 等动态提供)
{
  "apiKeyHelper": "/usr/local/bin/get-anthropic-key.sh"
}

# 方式二:环境变量注入(CI/CD 中最常见)
export ANTHROPIC_API_KEY="sk-ant-api03-..."

云厂商网关

企业若已有 AWS 或 GCP 合约,可以让 Claude Code 直接走云渠道计费:

bash
# AWS Bedrock 接入
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1

# Google Vertex AI 接入
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION=us-east5

这样流量走企业已有的云账单与网络出口,无需单独的 Anthropic API 密钥。

16.4 SSO 与访问控制

Claude Code 支持通过 Anthropic Console 配置 SAML/OIDC 单点登录。启用后:

  1. 用户首次运行 claude 会跳转到企业 IdP 登录;
  2. 登录态绑定到组织账号而非个人邮箱;
  3. 管理员可在 Console 后台随时吊销某个成员的访问权。

配合网络层的出站白名单,可以实现"只有公司设备 + 公司账号才能使用"的双重约束。

16.5 审计日志与合规

本地会话数据

所有对话记录保存在 ~/.claude/projects/<path>/ 下,格式为 JSONL。合规团队可以定期归档:

bash
#!/usr/bin/env bash
# audit-export.sh — 导出本周所有 Claude Code 会话
WEEK=$(date -v-mon +%Y-%m-%d)
OUT="/audit/claude-code/${WEEK}"
mkdir -p "$OUT"

for dir in ~/.claude/projects/*/; do
  project=$(basename "$dir")
  cp "$dir"*.jsonl "$OUT/${project}/" 2>/dev/null
done

echo "导出完成:$(find "$OUT" -name '*.jsonl' | wc -l) 个会话"

禁用非必要流量

对数据出境敏感的组织可以关闭遥测与错误上报:

json
{
  "env": {
    "DISABLE_TELEMETRY": "1",
    "DISABLE_ERROR_REPORTING": "1",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}

合规要点

  • 确认 Anthropic Commercial Terms 下数据不被用于模型训练;
  • 敏感代码库建议搭配 deny 规则阻止读取 .env、证书等文件;
  • 金融/医疗行业应评估是否需要走 Bedrock/Vertex 以满足数据驻留要求。

本章小结

  • 五层设置体系:企业托管 > CLI 参数 > 项目共享 > 项目本地 > 用户全局;
  • managed-settings.json 由 IT 统一下发,permissions.deny 是安全兜底的关键;
  • 企业可通过 Bedrock/Vertex 网关接入,复用云合约与合规边界;
  • 审计依赖本地 JSONL 会话文件的定期归档,配合 DISABLE_TELEMETRY 收紧数据面。

🧪 随堂测验

点击你认为正确的选项。答错时会展示正确答案与原因解析。

1. Claude Code 的设置优先级从高到低排列正确的是?

2. 企业希望 Claude Code 流量走 AWS 已有合约计费,应设置哪个环境变量?

3. 关于 apiKeyHelper 字段的说法正确的是?

4. 以下哪个环境变量组合能最大程度减少非必要网络请求?

🛠️ 动手实践

  1. 在你的机器上创建一个 managed-settings.json,禁止执行 rm -rf 并强制关闭遥测,验证其优先级高于用户级设置。
  2. 编写一个 apiKeyHelper 脚本,从环境变量或模拟 Vault 中返回密钥,确认 claude 能正常启动。
  3. 写一个审计脚本,统计过去 7 天所有会话的总 token 用量并输出 CSV 报告。

下一章:成本控制与用量管理