# 企业实战完整指南：团队协作与安全合规

> **课程信息**
>
> - **作者**：老金
> - **GitHub**：https://github.com/KimYx0207
> - **公众号**：老金带你玩AI
> - **X（Twitter）**：老金带你玩AI
> - **个人博客**：https://aiking.dev
> - **预计学时**：4-6小时
> - **难度等级**：⭐⭐⭐⭐⭐ 高级
> - **更新日期**：2026年6月18日
> - **适用版本**：Claude Code v2.1.181（验证于 2026-06-18；旧差量保留为历史基线）

---

## 📚 本课学习目标

老金，我写企业落地时会把权限、审计和人员分工放前面，因为企业真正怕的是责任链断掉。

> **2026-06-18 企业治理口径**：v2.1.175 新增 `enforceAvailableModels` 托管设置；v2.1.176 新增 `footerLinksRegexes` 并修复 Hook `if` 路径匹配；v2.1.178 支持 `Tool(param:value)` 参数级权限。企业模板里不要只写“允许/禁止某工具”，还要说明允许哪些模型、哪些参数、哪些路径条件，以及日志里是否会记录工具细节。

完成本课学习后，你将能够：

1. **建立统一的团队配置仓库**：所有成员一键同步配置，告别配置混乱
2. **集成Git Hooks + Claude Code**：自动化代码审查和质量检查
3. **构建团队知识库系统**：让Claude记住团队的代码规范和最佳实践
4. **实现CI/CD流水线集成**：Claude Code参与自动化构建和部署
5. **建立企业级API Key管理体系**：防止密钥泄露和滥用
6. **实现敏感数据全链路保护**：从代码到日志到数据库
7. **满足GDPR/HIPAA/SOC2合规要求**：通过企业审计
8. **部署自动化安全扫描系统**：持续检测代码和配置漏洞

---

## 术语表（进阶必读）

在开始之前，先了解这些企业级关键术语：

| 术语 | 英文全称 | 通俗解释 |
|------|----------|----------|
| **Secrets Manager** | - | 密钥管理服务，安全存储API Key等敏感信息 |
| **Vault** | HashiCorp Vault | 企业级密钥管理工具，支持密钥轮换 |
| **Git Hooks** | - | Git的钩子脚本，在提交/推送前自动执行检查 |
| **CI/CD** | Continuous Integration/Delivery | 持续集成/持续交付，自动化构建和部署 |
| **ADR** | Architecture Decision Record | 架构决策记录，记录技术选型的原因 |
| **GDPR** | General Data Protection Regulation | 欧盟通用数据保护条例 |
| **SOC 2** | Service Organization Control 2 | 服务组织控制审计标准 |
| **2FA** | Two-Factor Authentication | 双因素认证，增强账户安全 |
| **RPM** | Requests Per Minute | 每分钟请求数，API速率限制单位 |
| **DPO** | Data Protection Officer | 数据保护官，负责合规的角色 |
| **Bandit** | - | Python安全代码扫描工具 |
| **Trivy** | - | 容器镜像安全扫描工具 |
| **settings.json** | - | Claude Code的配置文件，分用户级和项目级 |
| **CLAUDE.md** | - | 项目级指令文件，Claude自动加载 |

---

# 第一部分：企业团队协作最佳实践

## 🎯 本部分学习目标

本部分将系统讲解企业级Claude Code团队协作的完整方案，帮助你的团队建立规范化的协作流程。

完成本部分后，你将能够：

1. ✅ 建立 **统一的团队配置仓库**，所有成员一键同步配置
2. ✅ 集成 **Git hooks + Claude Code**，自动化代码审查和质量检查
3. ✅ 构建 **团队知识库系统**，让Claude记住团队的代码规范和最佳实践
4. ✅ 实现 **CI/CD流水线集成**，Claude Code参与自动化构建和部署
5. ✅ 部署 **团队级别监控系统**，追踪Claude使用情况和代码质量指标
6. ✅ 设计 **跨团队协作流程**，让多个团队高效使用Claude Code

---

## Part 1: 团队配置统一化


> **v2.1.136→v2.1.158 企业治理补充**：新增 `settings.autoMode.hard_deny` 可硬性阻断 auto mode classifier；`allowAllClaudeAiMcps` 可让托管环境加载 claude.ai cloud MCP connectors；`ANTHROPIC_WORKSPACE_ID` 可辅助企业环境识别；API key / `apiKeyHelper` / `ANTHROPIC_AUTH_TOKEN` 会禁用 Remote Control、`/schedule`、claude.ai MCP connectors 和 notification preferences。v2.1.152 以后 auto mode 不再要求额外 opt-in consent，v2.1.154 强化了数据外传 classifier、危险路径阻断和 managed settings 单条坏配置降级处理；v2.1.157 的 `OTEL_LOG_TOOL_DETAILS=1` 会让 `tool_decision` 遥测包含 bash 命令、MCP / Skill 名等工具参数，企业环境开启前要确认日志边界；v2.1.158 允许 Bedrock、Vertex、Foundry 上的 Opus 4.8 / 4.8 通过 `CLAUDE_CODE_ENABLE_AUTO_MODE=1` opt in auto mode。企业接入时要把模型、auto mode、MCP allow/deny、worktree 隔离、后台 session 和遥测策略一起审。

### 1.1 为什么需要统一配置

**常见团队配置问题**：

| 问题 | 后果 | 发生概率 |
|------|------|:--------:|
| 每个人settings.json不同 | 代码风格混乱，PR冲突 | **95%** |
| API Key直接写在配置文件 | 泄露到Git仓库 | **80%** |
| 新人手动配置需要2小时 | 效率低下，容易出错 | **100%** |
| 配置更新无法同步 | 部分成员用旧配置 | **70%** |
| 没有版本控制 | 回滚困难 | **60%** |

**统一配置能解决以上所有问题。**

### 1.2 团队配置仓库结构

#### 1.2.1 标准仓库结构

```
team-claude-config/
├── README.md                    # 配置说明文档
├── .editorconfig                # EditorConfig通用规则
├── .env.example                 # 环境变量模板
├── install.sh                   # 一键安装脚本（Linux/macOS）
├── install.ps1                  # 一键安装脚本（Windows）
├── update.sh                    # 配置更新脚本
├── validate.sh                  # 配置验证脚本
├── vscode/                      # VS Code配置
│   ├── settings.json            # 编辑器设置
│   ├── keybindings.json         # 快捷键配置
│   ├── extensions.json          # 推荐扩展列表
│   ├── sidebar.json             # 侧边栏配置（支持右侧边栏）
│   └── snippets/                # 代码片段
│       ├── python.json
│       └── javascript.json
├── cursor/                      # Cursor配置
│   ├── settings.json
│   └── keybindings.json
├── jetbrains/                   # JetBrains IDEs配置
│   ├── pycharm/
│   │   ├── options/
│   │   │   ├── editor.xml
│   │   │   ├── keymap.xml
│   │   │   └── claude.xml
│   │   └── templates/
│   │       └── Python.xml
│   └── intellij/
│       └── options/
├── claude/                      # Claude Code专用配置
│   ├── system-prompts/          # 系统提示词
│   │   ├── code-review.md       # 代码审查提示词
│   │   ├── refactor.md          # 重构提示词
│   │   └── testing.md           # 测试生成提示词
│   ├── language.json            # 语言配置（支持多语言响应）
│   ├── skills/                  # 团队技能包（支持/调用和hot reload）
│   │   └── team-standards/
│   │       ├── SKILL.md       # Markdown + YAML frontmatter定义
│   │       └── prompts/
│   └── hooks/                   # Git hooks模板
│       ├── pre-commit
│       ├── pre-push
│       └── commit-msg
├── ci/                          # CI/CD配置
│   ├── github-actions/
│   │   ├── claude-review.yml
│   │   └── quality-check.yml
│   ├── gitlab-ci/
│   │   └── .gitlab-ci.yml
│   └── jenkins/
│       └── Jenkinsfile
├── docs/                        # 文档目录
│   ├── onboarding.md            # 新人上手指南
│   ├── troubleshooting.md       # 故障排查
│   └── best-practices.md        # 最佳实践
├── scripts/                     # 工具脚本
│   ├── sync-config.sh           # 配置同步脚本
│   ├── check-updates.sh         # 检查配置更新
│   └── backup-config.sh         # 配置备份脚本
└── tests/                       # 配置测试
    ├── test_vscode_config.py
    └── test_cursor_config.py
```

#### 1.2.2 统一配置原则

**配置统一5条原则**：

1. **Single Source of Truth**（唯一真相来源）
   - 所有配置都在Git仓库中
   - 本地配置 = 仓库配置的符号链接

2. **Environment Variables First**（环境变量优先）
   - 敏感信息（API Key）**必须**用环境变量
   - 绝对路径用环境变量替换

3. **Platform Agnostic**（平台无关）
   - 脚本支持Windows/Linux/macOS
   - 路径使用相对路径

4. **Automated Validation**（自动验证）
   - 每次更新自动验证配置正确性
   - CI流水线中运行验证测试

5. **Rollback Support**（支持回滚）
   - 使用Git tag标记稳定版本
   - 提供一键回滚脚本

### 1.3 一键安装脚本（install.sh）

**完整安装脚本**：

```bash
#!/usr/bin/env bash
# install.sh - Team Claude configuration installer.
#
# This example is intentionally conservative:
# - it never writes API keys or secrets;
# - it backs up existing editor config before copying files;
# - it installs only files that exist in the team config repository.

set -euo pipefail

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

TEAM_CONFIG_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKUP_ROOT="${HOME}/.claude-config-backups"
BACKUP_DIR="${BACKUP_ROOT}/$(date +%Y%m%d-%H%M%S)"

log_info() {
    printf "%b[INFO]%b %s\n" "${GREEN}" "${NC}" "$1"
}

log_warn() {
    printf "%b[WARN]%b %s\n" "${YELLOW}" "${NC}" "$1"
}

log_error() {
    printf "%b[ERROR]%b %s\n" "${RED}" "${NC}" "$1" >&2
}

log_success() {
    printf "%b[SUCCESS]%b %s\n" "${BLUE}" "${NC}" "$1"
}

show_banner() {
    printf "%b" "${BLUE}"
    printf "================================================\n"
    printf "  Team Claude config installer\n"
    printf "================================================\n"
    printf "%b" "${NC}"
}

detect_os() {
    case "${OSTYPE:-unknown}" in
        linux-gnu*) OS="linux"; PLATFORM="Linux" ;;
        darwin*) OS="macos"; PLATFORM="macOS" ;;
        msys*|cygwin*) OS="windows"; PLATFORM="Windows (Git Bash)" ;;
        *)
            log_error "Unsupported OS: ${OSTYPE:-unknown}"
            exit 1
            ;;
    esac

    log_info "Detected platform: ${PLATFORM}"
}

check_dependencies() {
    log_info "Checking dependencies..."

    if ! command -v git >/dev/null 2>&1; then
        log_error "Git is required. Install Git first."
        exit 1
    fi

    if ! command -v claude >/dev/null 2>&1; then
        log_warn "Claude Code CLI was not found in PATH. Install it before using team workflows."
    fi

    if command -v node >/dev/null 2>&1; then
        log_info "Node.js: $(node --version)"
    else
        log_warn "Node.js was not found. JavaScript-related team scripts may not work."
    fi
}

resolve_editor_dirs() {
    case "${OS}" in
        linux)
            VSCODE_USER_DIR="${HOME}/.config/Code/User"
            CURSOR_USER_DIR="${HOME}/.config/Cursor/User"
            ;;
        macos)
            VSCODE_USER_DIR="${HOME}/Library/Application Support/Code/User"
            CURSOR_USER_DIR="${HOME}/Library/Application Support/Cursor/User"
            ;;
        windows)
            APPDATA_DIR="${APPDATA:-${HOME}/AppData/Roaming}"
            VSCODE_USER_DIR="${APPDATA_DIR}/Code/User"
            CURSOR_USER_DIR="${APPDATA_DIR}/Cursor/User"
            ;;
    esac
}

backup_dir_if_exists() {
    local src="$1"
    local name="$2"

    if [[ -d "${src}" ]]; then
        mkdir -p "${BACKUP_DIR}"
        cp -R "${src}" "${BACKUP_DIR}/${name}"
        log_info "Backed up ${src} -> ${BACKUP_DIR}/${name}"
    fi
}

backup_existing_config() {
    log_info "Backing up existing editor config..."

    backup_dir_if_exists "${VSCODE_USER_DIR}" "vscode-user"
    backup_dir_if_exists "${CURSOR_USER_DIR}" "cursor-user"

    if [[ -d "${BACKUP_DIR}" ]]; then
        log_success "Backup complete: ${BACKUP_DIR}"
    else
        log_info "No existing editor config found to back up."
    fi
}

copy_file_if_exists() {
    local src="$1"
    local dest="$2"

    if [[ -f "${src}" ]]; then
        mkdir -p "$(dirname "${dest}")"
        cp "${src}" "${dest}"
        log_info "Installed $(basename "${src}") -> ${dest}"
    else
        log_warn "Skipped missing source file: ${src}"
    fi
}

install_editor_config() {
    log_info "Installing editor config..."

    copy_file_if_exists "${TEAM_CONFIG_DIR}/vscode/settings.json" "${VSCODE_USER_DIR}/settings.json"
    copy_file_if_exists "${TEAM_CONFIG_DIR}/vscode/keybindings.json" "${VSCODE_USER_DIR}/keybindings.json"
    copy_file_if_exists "${TEAM_CONFIG_DIR}/vscode/extensions.json" "${VSCODE_USER_DIR}/extensions.json"

    copy_file_if_exists "${TEAM_CONFIG_DIR}/cursor/settings.json" "${CURSOR_USER_DIR}/settings.json"
    copy_file_if_exists "${TEAM_CONFIG_DIR}/cursor/keybindings.json" "${CURSOR_USER_DIR}/keybindings.json"
}

install_claude_config() {
    log_info "Installing Claude team config..."

    local claude_dir="${HOME}/.claude"
    mkdir -p "${claude_dir}"

    copy_file_if_exists "${TEAM_CONFIG_DIR}/claude/language.json" "${claude_dir}/language.json"

    if [[ -d "${TEAM_CONFIG_DIR}/claude/skills" ]]; then
        mkdir -p "${claude_dir}/skills"
        cp -R "${TEAM_CONFIG_DIR}/claude/skills/." "${claude_dir}/skills/"
        log_info "Installed team skills -> ${claude_dir}/skills"
    else
        log_warn "Skipped missing team skills directory."
    fi
}

validate_installation() {
    log_info "Validating installation..."

    if [[ ! -d "${HOME}/.claude" ]]; then
        log_error "Claude config directory was not created."
        exit 1
    fi

    log_success "Validation passed."
}

main() {
    show_banner
    detect_os
    resolve_editor_dirs
    check_dependencies
    backup_existing_config
    install_editor_config
    install_claude_config
    validate_installation

    log_success "Installation complete."
    log_warn "Review copied files before committing or sharing local config."
}

main "$@"

```

> 💡 **提示**：上方是完整可复制的示例脚本。实际落地时，请根据团队配置仓库的目录结构补齐 `vscode/`、`cursor/`、`claude/skills/` 等源配置文件。

---

## Part 2: Git Hooks集成


### 2.1 为什么需要Git Hooks + Claude Code

**常见代码质量问题**：

| 问题 | 后果 | Git Hook解决方案 |
|------|------|------------------|
| 代码未格式化就提交 | PR冲突，难以review | `pre-commit` hook自动格式化 |
| 提交信息混乱 | Git历史难以追踪 | `commit-msg` hook规范化 |
| 未运行测试就push | 破坏主分支 | `pre-push` hook强制测试 |
| 代码有明显bug | 浪费reviewer时间 | Claude自动代码审查 |
| 文档未更新 | 文档与代码不一致 | Claude自动生成文档 |

**Git Hooks是保障团队代码质量的关键工具。**

### 2.2 Pre-commit Hook（提交前检查）

**特性说明**：
- Claude Code的Hooks在 `settings.json` 中配置（用户级 `~/.claude/settings.json` 或项目级 `.claude/settings.json`）
- Git hooks（pre-commit等）是独立的脚本，放在 `.git/hooks/` 目录
- 两者可以配合使用：Git hooks调用Claude API进行自动审查

**核心pre-commit脚本结构**：

```bash
#!/bin/bash
# .git/hooks/pre-commit - 提交前检查脚本
# 集成Claude Code进行自动代码审查

set -e

# ==================== 配置 ====================
CLAUDE_API_KEY="${ANTHROPIC_API_KEY}"
CLAUDE_MODEL="claude-sonnet-5"

# ==================== Python代码格式化 ====================
format_python() {
    log_info "格式化Python代码..."
    PYTHON_FILES=$(get_staged_files | grep '\.py$' || true)

    if [[ -z "$PYTHON_FILES" ]]; then
        log_info "没有Python文件需要格式化"
        return 0
    fi

    # 使用Black格式化
    if command -v black &> /dev/null; then
        echo "$PYTHON_FILES" | xargs black --quiet
        log_info "Black格式化完成"
    fi

    # 使用Ruff检查
    if command -v ruff &> /dev/null; then
        if ! echo "$PYTHON_FILES" | xargs ruff check; then
            log_error "Ruff检查失败，请修复错误后再提交"
            exit 1
        fi
    fi

    # 重新添加格式化后的文件
    echo "$PYTHON_FILES" | xargs git add
}

# ==================== Claude Code代码审查 ====================
claude_code_review() {
    log_info "运行Claude Code审查..."

    STAGED_FILES=$(get_staged_files)
    if [[ -z "$STAGED_FILES" ]]; then
        return 0
    fi

    # 生成diff
    DIFF=$(git diff --cached)

    # 调用Claude API进行代码审查
    REVIEW_PROMPT="你是一个严格的代码审查专家。请审查以下代码变更..."

    # ... API调用逻辑

    # 检查是否有严重问题
    if echo "$REVIEW_RESULT" | grep -q "【严重】"; then
        log_error "发现严重问题，提交被拒绝"
        exit 1
    fi

    log_info "代码审查通过"
}

# ==================== 主函数 ====================
main() {
    log_info "开始pre-commit检查..."
    format_python
    claude_code_review
    log_info "所有检查通过，允许提交"
}

main
```

### 2.3 Commit-msg Hook（规范提交信息）

**使用Claude自动生成规范commit message**：

```bash
#!/bin/bash
# .git/hooks/commit-msg - 提交信息规范化脚本

# Conventional Commits规范检查
check_conventional_commits() {
    # 允许的类型
    TYPES="feat|fix|docs|style|refactor|perf|test|chore|build|ci|revert"

    # 检查格式：type(scope): description
    if ! echo "$COMMIT_MSG" | grep -qE "^($TYPES)(\(.+\))?: .+"; then
        log_warn "提交信息不符合Conventional Commits规范"
        return 1
    fi
    return 0
}

# 使用Claude自动生成commit message
generate_commit_msg() {
    DIFF=$(git diff --cached)

    PROMPT="根据以下代码diff，生成一条符合Conventional Commits规范的提交信息..."

    # 调用Claude API生成
    # ...
}
```

---

## Part 3: 团队知识库建设


### 3.1 知识库系统架构

**团队知识库目录结构**：

```
team-knowledge-base/
├── .claude/
│   ├── skills/
│   │   ├── team-standards/        # 团队编码标准
│   │   │   ├── SKILL.md
│   │   │   └── prompts/
│   │   │       ├── python-style.md
│   │   │       ├── javascript-style.md
│   │   │       └── api-design.md
│   │   ├── architecture/          # 架构模式
│   │   │   ├── SKILL.md
│   │   │   └── prompts/
│   │   │       ├── microservices.md
│   │   │       └── database-design.md
│   │   └── testing/               # 测试规范
│   │       ├── SKILL.md
│   │       └── prompts/
│   │           ├── unit-test.md
│   │           └── integration-test.md
│   └── memory/
│       ├── common-patterns.json   # 常见代码模式
│       ├── team-decisions.json    # 技术决策记录
│       └── best-practices.json    # 最佳实践
├── docs/
│   ├── architecture/              # 架构文档
│   ├── api/                       # API文档
│   └── guides/                    # 开发指南
└── README.md
```

### 3.2 团队编码标准Skill

**SKILL.md配置**：

> Skills 使用 `SKILL.md` 文件定义（Markdown + YAML frontmatter），不是独立的 YAML 文件。

```markdown
<!-- .claude/skills/team-standards/SKILL.md -->
---
name: team-standards
description: 团队编码标准和最佳实践
---

你是团队编码标准的守护者。根据以下规范进行代码审查和指导：

## Python代码规范
- 使用Black格式化，行宽88字符
- 使用Ruff进行lint检查
- 类型注解覆盖率 > 80%
- 遵循Google Python Style Guide

## JavaScript/TypeScript规范
- 使用Prettier格式化
- 使用ESLint + TypeScript strict模式
- 优先函数式编程风格

## API设计规范
- RESTful命名
- 统一错误响应格式：`{ data, error }`
- 版本化路径：`/api/v1/...`
```

---

## Part 4: CI/CD深度集成

### 4.1 GitHub Actions集成

**完整的CI workflow**：

```yaml
# .github/workflows/claude-ci.yml
name: Claude Code CI

on:
  pull_request:
    branches: [main, develop]
  push:
    branches: [main, develop]

env:
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

jobs:
  code-review:
    name: Claude代码审查
    runs-on: ubuntu-latest
    steps:
      - name: Checkout代码
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: 获取变更的文件
        id: changed-files
        uses: tj-actions/changed-files@v39

      - name: Claude代码审查
        if: steps.changed-files.outputs.any_changed == 'true'
        run: |
          DIFF=$(git diff origin/${{ github.base_ref }}...HEAD)

          # 调用Claude API进行审查
          REVIEW=$(curl -s https://api.anthropic.com/v1/messages \
            -H "x-api-key: $ANTHROPIC_API_KEY" \
            -H "anthropic-version: 2023-06-01" \
            -H "content-type: application/json" \
            -d "{
              "model": "claude-sonnet-5",
              "max_tokens": 4096,
              "messages": [{
                "role": "user",
                "content": "请审查以下PR的代码变更..."
              }]
            }" | jq -r '.content[0].text')

          echo "## Claude代码审查结果" >> $GITHUB_STEP_SUMMARY
          echo "$REVIEW" >> $GITHUB_STEP_SUMMARY

  quality-check:
    name: 代码质量检查
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      - run: pip install black ruff pytest pytest-cov
      - run: black --check .
      - run: ruff check .
      - run: pytest --cov --cov-report=xml
```

---

## Part 5: 团队监控与度量

### 5.1 Claude使用情况监控

**监控脚本核心逻辑**：

```python
#!/usr/bin/env python3
"""
Claude使用情况监控脚本
跟踪团队成员的Claude API调用和成本
"""

import sqlite3
from datetime import datetime, timedelta

def log_api_call(user, model, prompt_tokens, completion_tokens, purpose=None, success=True):
    """记录一次API调用"""
    total_tokens = prompt_tokens + completion_tokens
    # 计算成本（Sonnet 5定价）
    cost = (prompt_tokens * 0.003 + completion_tokens * 0.015) / 1000

    # 存储到数据库
    # ...

def generate_usage_report(days=7):
    """生成使用情况报告"""
    # 总体统计、按用户统计、按目的统计
    # ...
    return {
        "period_days": days,
        "overall": {...},
        "by_user": [...],
        "success_rate": 98.5
    }
```

---

## Part 6: 跨团队协作案例

### 6.1 多团队共享配置

**团队配置继承结构**：

```
company-claude-config/           # 公司级配置（基础，作为 Git 子模块共享）
├── .editorconfig
├── vscode/
│   └── settings.json
├── settings.json                # 公司级 Claude 通用设置
└── claude/
    └── skills/
        └── company-standards/   # 公司编码标准

team-a-project/                  # 团队A项目（引用公司基础配置）
├── .claude/
│   └── settings.json            # 团队A项目级设置
├── CLAUDE.md                    # 团队A项目指令
└── claude/
    └── skills/
        └── team-a-patterns/     # 团队A特定模式

team-b-project/                  # 团队B项目（引用公司基础配置）
├── .claude/
│   └── settings.json            # 团队B项目级设置
├── CLAUDE.md                    # 团队B项目指令
└── claude/
    └── skills/
        └── team-b-patterns/     # 团队B特定模式
```

**配置共享方式**：
- 公司基础配置放在共享仓库中，作为 Git 子模块引入各团队项目
- 各团队在项目根目录的 `.claude/settings.json` 中定义团队级设置（自动生效）
- 用户级配置在 `~/.claude/settings.json`，项目级配置自动覆盖用户级

### 6.2 modelOverrides：自定义模型端点映射

企业环境中，通常需要将Claude模型请求转发到自有的云端点（如Amazon Bedrock、Azure OpenAI），而非直接调用Anthropic API。`modelOverrides`配置可实现模型ID到实际端点的映射：

```json
// settings.json（用户级或项目级均可）
{
  "modelOverrides": {
    "claude-sonnet-5": "arn:aws:bedrock:us-east-1:123456:model/claude-sonnet",
    "claude-opus-4-8": "your-azure-deployment-name"
  }
}
```

**工作原理**：
- 设置后，Claude Code内部仍使用标准模型名称（如`claude-sonnet-5`）
- 实际API请求会自动转发到`modelOverrides`中映射的自定义端点
- 团队成员无需关心底层端点细节，统一使用标准模型名即可

**适用场景**：
- 企业通过Amazon Bedrock部署的Claude模型（使用ARN标识）
- 通过Azure OpenAI Service访问的Claude部署
- 内部API网关代理的自定义模型端点

> **提示**：建议在公司级`settings.json`中统一配置`modelOverrides`，确保所有团队成员使用相同的企业端点。

### 6.3 Worktree系统：大型Monorepo并行开发

企业级大型monorepo（几十GB级别）中，每个开发者通常只需操作其中一部分代码。Claude Code的Worktree系统通过Git worktree + sparse checkout实现轻量化隔离环境：

**启动方式**：

```bash
# 使用 --worktree 标志启动，自动创建Git worktree隔离环境
claude --worktree
```

**Sparse Checkout配置**：

通过`worktree.sparsePaths`指定只检出monorepo中的特定路径，避免克隆整个仓库：

```json
// .claude/settings.json
{
  "worktree": {
    "sparsePaths": [
      "packages/frontend/**",
      "packages/shared/**",
      "package.json",
      "tsconfig.json"
    ]
  }
}
```

**企业实践建议**：
- **按模块划分**：每个团队只检出自己负责的`packages/*`子目录和共享依赖
- **配合 Agent Teams（实验性）或普通 Subagents**：多个代理分别在不同 worktree 中并行开发不同模块，互不干扰
- **CI/CD集成**：在CI环境中使用sparse checkout加速构建，只拉取变更涉及的模块

> **注意**：Worktree环境是临时的，退出Claude Code后可选择保留或清理。适合短期任务和并行开发场景。

### 6.4 v2.1.133→v2.1.158 企业治理新特性

#### `parentSettingsBehavior`：托管设置合并策略（v2.1.133）

当企业管理员通过远程托管设置（remote managed settings）向团队下发配置时，不同层级之间的设置如何合并？v2.1.133 新增 `parentSettingsBehavior` 管理策略键：

| 值 | 行为 | 适用场景 |
|---|---|---|
| `first-wins` | 父级（管理员）设置优先，子级无法覆盖 | 严格管控型企业 |
| `merge` | 父级和子级设置合并，子级可覆盖 | 灵活型企业 |

```json
// 管理员托管的远程设置
{
  "parentSettingsBehavior": "first-wins",
  "permissions": {
    "allow": ["Read", "Grep", "Glob"],
    "deny": ["Bash"]
  }
}
```

**注意**：这是管理员级别的策略键，不是普通用户的 settings 字段。具体写法和 schema 以官方托管设置文档与你方管理员下发的配置为准。

#### `claude project purge`：清理项目状态（v2.1.126）

当某个项目的 Claude Code 状态需要彻底重置（比如切换团队、清理残留会话数据）：

```bash
claude project purge
```

它会删除当前项目下的所有 Claude Code 状态（会话历史、缓存、本地设置等）。适用于：

- 项目交接给新团队前清理
- 状态损坏导致异常时重置
- 清理测试项目的残留数据

> ⚠️ 此操作不可逆！执行前请确认不再需要该项目的历史会话数据。

#### Bedrock service tier 支持

通过 Amazon Bedrock 使用 Claude Code 时，现在可以指定 Bedrock 的 service tier（如 Provisioned Throughput），具体配置方式参见官方 Bedrock 集成文档和你的 AWS 账号设置。

---

# 第二部分：企业安全与合规指南

## 🎯 本部分学习目标

安全问题是企业的生命线！API Key泄露到GitHub后被恶意刷量$10,000+的案例屡见不鲜。

完成本部分后，你将能够：

1. ✅ 建立 **企业级API Key管理体系**，防止密钥泄露和滥用
2. ✅ 实现 **敏感数据全链路保护**，从代码到日志到数据库
3. ✅ 满足 **GDPR/HIPAA/SOC2等合规要求**，通过企业审计
4. ✅ 部署 **自动化安全扫描系统**，持续检测代码和配置漏洞
5. ✅ 制定 **API泄露应急响应流程**，最小化安全事故影响
6. ✅ 执行 **20条企业安全最佳实践**，建立纵深防御体系

---

## Part 1: API Key安全管理

### 1.1 API Key泄露的灾难后果

**真实安全事故案例**：

| 事故 | 后果 | 损失 |
|------|------|------|
| API Key提交到GitHub | 被扫描器发现，立刻被盗刷 | **$15,000** |
| 硬编码在前端代码 | 暴露给所有用户 | **无限额度滥用** |
| 明文存储在配置文件 | 服务器被入侵后泄露 | **$8,000** |
| 共享给离职员工 | 前员工恶意使用 | **法律诉讼** |
| 未设置使用限制 | 被DDoS攻击刷量 | **$25,000** |

**这些都是真实发生的安全事故，每一个都可能让公司蒙受重大损失！**

### 1.2 企业级密钥管理架构

#### 1.2.1 密钥分级管理

```
密钥层级体系：

Production Keys (生产环境)
├── Master Key (主密钥)          # 最高权限，仅CEO/CTO持有
│   ├── 用途：密钥轮换、紧急恢复
│   └── 访问：2FA + 硬件密钥
├── Service Keys (服务密钥)      # 各服务独立密钥
│   ├── API Gateway Key          # 限制：10,000 RPM
│   ├── Backend Service Key      # 限制：5,000 RPM
│   └── Batch Job Key            # 限制：100 RPM
└── Developer Keys (开发密钥)    # 开发/测试环境
    ├── Dev Environment          # 限制：100 RPM
    └── Test Environment         # 限制：50 RPM

Staging Keys (预发布环境)
└── 独立密钥，与生产完全隔离

Development Keys (开发环境)
└── 团队共享，每周轮换
```

#### 1.2.2 密钥存储方案

**❌ 绝对禁止的做法**：

```python
# ❌ 硬编码（找死）
ANTHROPIC_API_KEY = "sk-ant-api03-XXXXXXXX"

# ❌ 提交到Git（自杀）
# .env文件未加入.gitignore

# ❌ 明文配置文件（送死）
api_key: "sk-ant-api03-XXXXXXXX"

# ❌ 前端代码（群体自杀）
const API_KEY = "sk-ant-api03-XXXXXXXX";
```

**✅ 正确的企业级做法**：

```python
# ✅ 方案1：环境变量 + Secrets Manager
import boto3

def get_api_key() -> str:
    """从AWS Secrets Manager获取API Key"""
    client = boto3.client('secretsmanager', region_name='us-east-1')
    response = client.get_secret_value(SecretId='prod/anthropic/api-key')
    return response['SecretString']

# ✅ 方案2：HashiCorp Vault
import hvac

def get_api_key_from_vault() -> str:
    """从Vault获取API Key"""
    client = hvac.Client(url='https://vault.example.com:8200')
    client.auth.approle.login(
        role_id=os.getenv("VAULT_ROLE_ID"),
        secret_id=os.getenv("VAULT_SECRET_ID")
    )
    secret = client.secrets.kv.v2.read_secret_version(
        path='anthropic/api-key',
        mount_point='secret'
    )
    return secret['data']['data']['key']
```

**三大方案对比**：

| 方案 | 优点 | 缺点 | 适用场景 |
|------|------|------|----------|
| AWS Secrets Manager | 与AWS生态深度集成 | 仅限AWS | AWS用户 |
| HashiCorp Vault | 跨平台、功能强大 | 需要额外维护 | 多云环境 |
| Azure Key Vault | 与Azure集成良好 | 仅限Azure | Azure用户 |

### 1.3 密钥轮换自动化

**自动轮换流程**：

```
检查密钥过期 (90天)
       ↓
生成新密钥
       ↓
存储到Vault（备份旧密钥）
       ↓
更新所有服务（Kubernetes滚动更新）
       ↓
等待5分钟观察
       ↓
验证新密钥
       ↓
成功 → 撤销旧密钥 → 通知成功
失败 → 回滚到旧密钥 → 告警通知
```

---

## Part 2: 敏感数据保护

### 2.1 Git Secrets扫描

**敏感信息正则表达式**：

```bash
declare -A PATTERNS=(
    ["anthropic_api_key"]="sk-ant-api[0-9]{2}-[a-zA-Z0-9_-]{95,}"
    ["aws_access_key"]="AKIA[0-9A-Z]{16}"
    ["aws_secret_key"]="[0-9a-zA-Z/+=]{40}"
    ["openai_api_key"]="sk-[a-zA-Z0-9]{48}"
    ["github_token"]="ghp_[a-zA-Z0-9]{36}"
    ["private_key"]="-----BEGIN (RSA |EC |OPENSSH )?PRIVATE KEY-----"
    ["password"]="password\\s*[=:]\\s*['\"][^'\"]{8,}['\"]"
)
```

### 2.2 日志脱敏

**自动脱敏策略**：

```python
class SensitiveDataFilter(logging.Filter):
    """日志脱敏过滤器"""

    @staticmethod
    def mask_sensitive_data(text: str) -> str:
        """脱敏文本中的敏感信息"""
        # API Key: sk-ant-api03-*** → sk-ant-api03-*****
        # Email: j***n@example.com
        # Phone: 123-***-7890
        # Credit Card: **** **** **** 3456
        # ...
```

---

## Part 3: 企业合规要求

### 3.1 GDPR合规

**GDPR核心要求**：

| 要求 | 说明 | Claude Code实现 |
|------|------|-----------------|
| 数据最小化 | 仅收集必要数据 | 限制日志记录的个人信息 |
| 访问权 | 用户可请求访问数据 | 提供数据导出API |
| 删除权 | 用户可请求删除数据 | 实现数据删除流程 |
| 数据可移植性 | 数据可导出 | JSON/CSV格式导出 |
| 违规通知 | 72小时内通知 | 自动化事故响应流程 |
| 数据保护官 | 指定DPO | 安全团队负责人 |

### 3.2 SOC 2合规

**SOC 2五大信任原则**：

1. **安全性（Security）**：防止未授权访问
2. **可用性（Availability）**：系统正常运行
3. **处理完整性（Processing Integrity）**：数据处理正确
4. **机密性（Confidentiality）**：敏感信息保密
5. **隐私性（Privacy）**：个人信息保护

---

## Part 4: 安全审计工具

### 4.1 综合安全扫描

**扫描内容**：

1. **Git Secrets扫描** - 检测泄露的密钥
2. **依赖漏洞扫描** - Safety/npm audit
3. **代码安全扫描** - Bandit/ESLint
4. **容器镜像扫描** - Trivy
5. **配置文件安全检查** - .env权限
6. **网络安全扫描** - nmap
7. **SSL/TLS检查** - testssl

---

## Part 5: 事故响应流程

### 5.1 API泄露应急预案

**应急响应流程**：

```
API Key泄露检测
       ↓
[自动告警] ← Slack/邮件/短信
       ↓
[立即响应] - 5分钟内
├── 1. 撤销泄露的密钥
├── 2. 生成新密钥
├── 3. 更新所有服务
└── 4. 通知相关人员
       ↓
[调查分析] - 1小时内
├── 5. 分析泄露原因
├── 6. 评估影响范围
├── 7. 检查异常使用
└── 8. 记录审计日志
       ↓
[修复加固] - 24小时内
├── 9. 修复泄露源
├── 10. 加强访问控制
├── 11. 更新安全策略
└── 12. 培训相关人员
       ↓
[复盘总结] - 72小时内
├── 13. 编写事故报告
├── 14. 改进响应流程
└── 15. 预防类似事故
```

---

## Part 6: 安全最佳实践清单

### 6.1 企业级安全检查清单

**20条黄金安全规则**：

| # | 规则 | 检查方法 | 优先级 |
|---|------|----------|:------:|
| 1 | API Key永远不硬编码 | Git Secrets扫描 | **P0** |
| 2 | 使用环境变量或Secrets Manager | 代码审查 | **P0** |
| 3 | 每90天轮换一次密钥 | 自动化脚本 | **P0** |
| 4 | 限制API速率 | 配置检查 | **P0** |
| 5 | 记录所有API访问 | 审计日志 | **P0** |
| 6 | 异常访问立即告警 | 监控系统 | **P0** |
| 7 | 敏感数据必须加密 | 数据审计 | **P1** |
| 8 | 日志自动脱敏 | 日志检查 | **P1** |
| 9 | 定期安全扫描 | CI/CD集成 | **P1** |
| 10 | 依赖漏洞检查 | Safety/npm audit | **P1** |
| 11 | 最小权限原则 | 权限审计 | **P1** |
| 12 | 多因素认证（2FA） | 用户账户检查 | **P1** |
| 13 | 网络隔离 | 网络配置 | **P2** |
| 14 | SSL/TLS加密 | SSL检查 | **P2** |
| 15 | 防火墙配置 | 网络安全 | **P2** |
| 16 | 备份与恢复 | 备份测试 | **P2** |
| 17 | 安全培训 | 团队培训记录 | **P2** |
| 18 | 事故响应预案 | 演练测试 | **P2** |
| 19 | 合规性审计 | 定期审计 | **P3** |
| 20 | 安全文档更新 | 文档检查 | **P3** |

---

## 📚 课程总结

### 本课核心内容

本课系统讲解了企业级Claude Code的核心实践，都是从真实项目中总结的经验。

**第一部分：团队协作**
1. ✅ 团队配置统一化 - 一键安装脚本、自动更新、配置验证
2. ✅ Git Hooks深度集成 - pre-commit/commit-msg/pre-push + Claude自动审查
3. ✅ 团队知识库建设 - Skills系统、ADR、Memory系统
4. ✅ CI/CD流水线集成 - GitHub Actions/GitLab CI/Jenkins完整配置
5. ✅ 监控与度量体系 - Claude使用情况、代码质量度量
6. ✅ 跨团队协作模式 - 配置继承、跨团队审查

**第二部分：安全合规**
1. ✅ API Key安全管理 - 分级管理、Secrets Manager、自动轮换、访问审计
2. ✅ 敏感数据保护 - Git Secrets扫描、日志脱敏、数据加密
3. ✅ 企业合规要求 - GDPR、HIPAA、SOC 2审计日志
4. ✅ 安全审计工具 - 综合扫描脚本、依赖漏洞、容器安全
5. ✅ 事故响应流程 - API泄露应急预案、自动化响应
6. ✅ 20条安全最佳实践 - 自动化检查脚本、每日合规报告

### 最后建议

安全问题绝对不能马虎！一次API Key泄露可能让公司蒙受重大损失！

记住这三条铁律：
1. **Never trust, always verify**（零信任原则）
2. **Defense in depth**（纵深防御）
3. **Fail securely**（安全失败）

---

## 🔗 相关链接

| 资源 | 链接 |
|------|------|
| Module 9: Agent SDK | [Agent SDK完整指南](./09-Agent-SDK完整指南.md) |
| Module 10: 综合实战 | [综合实战完整指南](./10-综合实战完整指南.md) |
| 安全工具 | [OWASP Top 10](https://owasp.org/www-project-top-ten/) |

---

## 📝 版本历史

| 版本 | 日期 | 更新内容 |
|------|------|----------|
| V1.2.2 | 2026-04-05 | 文头适用版本对齐 v2.1.92（验证于 2026-04-05） |
| V1.2.0 | 2026-03-18 | 新增modelOverrides企业端点映射、Worktree大型Monorepo并行开发、更新适用版本至v2.1+ |
| V1.1.0 | 2026-01-19 | 更新至Claude Code 2.1.12，新增语言配置、VS Code集成、Hooks frontmatter、winget安装等说明 |
| V1.0.0 | 2025-12-24 | 初始版本，合并企业团队协作与安全合规两大模块 |

---

**文档结束** | 最后更新：2026年6月18日 | 版本：V1.2.4
