Complete Claude Code Guide: From Installation to Advanced Usage

Complete Claude Code Guide: From Installation to Advanced Usage

A comprehensive tutorial covering everything you need to know about Claude Code - from basic installation and setup to advanced features like MCP integration, automation, and security best practices.

课 4 2025-07-03 08:03

Claude 代码 segurança e práticas recomendadas指南

Claude Code 安全与最佳实践指南

当使用可以执行命令和修改文件的 AI 工具时,安全性至关重要。本综合指南涵盖了 Claude Code 的安全功能、最佳实践以及如何在各种环境中安全地使用它。

理解 Claude Code 的安全模型

Claude Code 实现了多层安全方法:

  1. 权限系统:对工具访问进行精细控制
  2. 环境隔离:可配置的工作区边界
  3. 审计追踪:全面的日志记录和监控
  4. 安全通信:加密的 API 通信
  5. 配置管理:安全的凭证处理

权限系统深入解析

权限级别

Claude Code 主要在三个权限级别上运行:

级别 描述 风险 用例
交互式 每次操作都需提示 开发工作
白名单 仅限预批准工具 自动化脚本
危险模式 跳过所有权限 严重 仅限于容器内

交互模式(推荐)

在交互模式下,Claude 会在每次潜在危险操作前请求权限:

# 安全默认模式:会提示权限请求
claude "帮助我调试这个应用程序"

当 Claude 提示时: - 仔细阅读权限请求 - 了解将使用哪些工具 - 考虑潜在影响 - 仅授予必要的权限

白名单模式

预先批准特定工具用于自动化工作流:

# 只允许安全工具
claude --allowedTools "Edit,View" "审查代码以发现安全问题"

# 允许特定命令范围
claude --allowedTools "Bash(git:*)" "分析 Git 仓库"

# 组合权限
claude --allowedTools "Edit,View,mcp__git__status,mcp__git__log" "代码审查会话"

危险模式 ⚠️

绝!对!不!要在生产系统或包含重要数据的系统上使用危险模式!

# 危险操作 - 仅在隔离容器中使用
claude --dangerously-skip-permissions

危险模式的安全用例: - ✅ 隔离的 Docker 容器 - ✅ 临时的虚拟机 - ✅ 沙盒环境 - ✅ 不包含重要数据的测试系统

绝!对!不!要在以下情况使用危险模式: - ❌ 生产系统 - ❌ 共享开发机器 - ❌ 包含敏感数据的系统 - ❌ 您的个人电脑

凭证和机密管理

API 密钥安全

您的 Anthropic API 密钥是需要保护的最关键凭证:

# ✅ 良好实践:环境变量
export ANTHROPIC_API_KEY="sk-your-key-here"

# ❌ 糟糕实践:在命令中硬编码
# claude --api-key "sk-your-key-here" "query"

# ✅ 良好实践:安全的文件权限
chmod 600 ~/.bashrc  # 确保只有您可以读取环境变量文件

配置文件安全

保护您的 Claude Code 配置:

# 设置适当的文件权限
chmod 600 ~/.claude.json

# 检查当前权限
ls -la ~/.claude.json

# 示例输出:-rw------- (只有文件所有者可以读/写)

环境变量最佳实践

# ✅ 对所有秘密信息使用环境变量
export GITHUB_TOKEN="您的令牌"
export DATABASE_URL="postgresql://user:pass@host/db"
export API_SECRET="您的秘密"

# ✅ 对不同上下文使用不同的环境变量
# 开发环境
export ANTHROPIC_API_KEY="sk-dev-key"
# 生产环境
export ANTHROPIC_API_KEY="sk-prod-key"

# ❌ 绝不在配置文件中硬编码秘密信息

安全配置实践

分层配置

使用 Claude Code 的配置层次结构来提高安全性:

# 1. 全局设置(最低优先级)
cat ~/.claude.json
{
  "allowedTools": ["View"],
  "disallowedTools": ["Bash"]
}

# 2. 项目设置(较高优先级)
cat ./settings.json
{
  "allowedTools": ["Edit", "View", "Bash(git:*)"],
  "systemPrompt": "您正在开发一个安全应用程序"
}

# 3. 命令行参数(最高优先级)
claude --allowedTools "View" "分析代码漏洞"

安全的 MCP 配置

在配置 MCP 服务器时,请遵循以下安全实践:

{
  "mcpServers": {
    "database": {
      "command": "postgres-mcp-server",
      "env": {
        "POSTGRES_URL": "${DATABASE_URL}",  // ✅ 环境变量
        "POSTGRES_SSL": "require"           // ✅ 强制 SSL
      }
    },
    "github": {
      "command": "github-mcp-server",
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}",  // ✅ 环境变量
        "GITHUB_ORG": "您的安全组织"     // ✅ 限制范围
      }
    }
  }
}

网络安全

配置 Claude Code 以实现安全的网络访问:

# 公司代理设置
export HTTP_PROXY="http://proxy.company.com:8080"
export HTTPS_PROXY="https://proxy.company.com:8443"
export NO_PROXY="localhost,127.0.0.1,*.公司.com"

# 自定义 API 端点(如果使用私有部署)
export ANTHROPIC_BASE_URL="https://your-private-endpoint.com"

# SSL 验证(在企业环境中)
export NODE_TLS_REJECT_UNAUTHORIZED=1  # 保持 SSL 验证开启

工作区安全

目录隔离

控制 Claude Code 可以访问的目录:

# ✅ 限制到特定目录
claude --add-dir ./src ./tests "审查应用程序代码"

# ✅ 项目特定的工作区
cd /path/to/project
claude "只在此项目上工作"

# ❌ 避免在敏感目录中操作
# cd /etc && claude "帮助配置系统"  # 绝!对!不!要这样做

文件权限模式

# ✅ 良好实践:特定工具权限
claude --allowedTools "Edit(*.py),View(*.py)" "处理 Python 文件"

# ✅ 良好实践:范围受限的 Bash 访问
claude --allowedTools "Bash(git:*),Bash(npm:test)" "开发工作流"

# ❌ 避免:广泛的 Bash 权限
# claude --allowedTools "Bash" "帮助开发"

监控和审计

日志记录最佳实践

启用全面的日志记录以进行安全监控:

# 启用详细日志记录
claude --verbose "开始开发会话"

# 记录到文件以供审计
claude --verbose "开发会话" 2>&1 | tee claude-session.log

# 监控 API 调用
export ANTHROPIC_LOG_LEVEL=debug
claude "分析应用程序安全"

会话跟踪

跟踪和管理 Claude Code 会话:

# 列出所有会话
claude sessions list

# 审查会话历史
claude sessions export session-id > session-audit.json

# 清理旧会话
claude sessions clear --before "30 days ago"

成本监控

监控 API 使用情况以检测异常活动:

# 检查当前会话成本
claude /cost

# 监控令牌使用量
claude /status

# 设置成本警报(在生产环境中)
export MAX_SESSION_COST=10.00  # 示例成本限制

安全开发工作流

代码审查工作流

安全的代码审查方法:

# ✅ 安全:仅审查,不修改
claude --allowedTools "View,mcp__git__*" "审查最新提交以发现安全问题"

# ✅ 安全:受限的编辑权限
claude --allowedTools "Edit(*.md),View" "更新文档"

# ⚠️ 注意:完全编辑权限
claude --allowedTools "Edit,View" "实施安全修复"

数据库操作

安全的数据库交互:

# ✅ 安全:只读数据库访问
claude --allowedTools "mcp__postgres__query" "分析用户数据趋势"

# ⚠️ 注意:有限的写入权限
claude --allowedTools "mcp__postgres__query,mcp__postgres__insert" "添加测试数据"

# ❌ 危险:完全数据库访问
# claude --allowedTools "mcp__postgres__*" "修复数据库问题"

基础设施管理

安全的基础设施操作:

# ✅ 安全:仅状态检查
claude --allowedTools "View,Bash(kubectl:get)" "检查集群状态"

# ⚠️ 注意:有限的部署访问
claude --allowedTools "Bash(kubectl:apply),Bash(kubectl:rollout)" "部署应用程序"

# ❌ 绝不:完全基础设施访问
# claude --allowedTools "Bash" "修复生产问题"

特定环境安全

开发环境

# 开发环境可放宽权限
claude --allowedTools "Edit,View,Bash(git:*),Bash(npm:*)" \
  --add-dir ./src ./test ./docs \
  "开发会话"

# 项目内存用于上下文
claude /memory set "开发环境 - 乐于助人但谨慎行事"

预演环境(Staging Environment)

# 预演环境更严格
claude --allowedTools "View,Bash(git:status),Bash(git:log)" \
  "分析预演部署"

# 只读数据库访问
claude --allowedTools "mcp__postgres__query" \
  "检查预演数据完整性"

生产环境

# 生产环境最小权限
claude --allowedTools "View" \
  "分析生产日志以查找错误"

# 生产环境不允许编辑文件
claude --disallowedTools "Edit,Bash" \
  "生产分析会话"

安全事件响应

API 密钥泄露

如果您的 API 密钥被泄露:

  1. 在 Anthropic 控制台立即吊销密钥
  2. 生成新的 API 密钥
  3. 更新环境变量
  4. 审查最近的 API 使用情况以查找未经授权的活动
  5. 审计 Claude Code 会话以查找可疑活动
# 检查最近的会话
claude sessions list

# 导出可疑会话进行分析
claude sessions export suspicious-session-id > incident-analysis.json

# 清除所有会话
claude sessions clear --all

未经授权的文件访问

如果 Claude Code 访问了敏感文件:

  1. 立即停止当前会话
  2. 审查会话日志以了解访问了哪些内容
  3. 更改任何暴露的凭证
  4. 审计文件权限
  5. 实施更严格的 allowedTools 策略
# 停止当前会话
claude /exit

# 审查发生了什么
tail -100 claude-session.log

# 实施更严格的权限
claude config set allowedTools '["View"]'

MCP 服务器被入侵

如果 MCP 服务器被入侵:

  1. 禁用受影响的 MCP 服务器
  2. 审查服务器日志
  3. 将服务器更新到最新版本
  4. 轮换服务器使用的任何凭证
  5. 以最小权限重新启用
# 禁用 MCP 服务器
claude mcp remove compromised-server

# 检查服务器状态
claude mcp status

# 审查配置
claude config get mcpServers

安全检查清单

日常使用检查清单

  • 对每个任务使用特定、最小的权限
  • 避免在重要系统上使用危险模式
  • 将 API 密钥安全地保存在环境变量中
  • 在授予权限前仔细阅读权限提示
  • 监控会话成本和使用情况
  • 使用项目特定配置

每周安全审查

  • 审计会话历史记录
  • 审查并清理旧会话
  • 检查 Claude Code 更新
  • 审查 MCP 服务器配置
  • 验证配置文件的文件权限
  • 监控 API 密钥使用模式

每月安全维护

  • 轮换 API 密钥
  • 将 MCP 服务器更新到最新版本
  • 审查并更新 allowedTools 配置
  • 审计项目内存文件
  • 清理未使用的 MCP 服务器
  • 审查公司安全策略合规性

常见安全陷阱

绝!对!不!要这样做

# ❌ 绝不要在生产环境中使用危险模式
claude --dangerously-skip-permissions "修复生产错误"

# ❌ 绝不要硬编码秘密信息
claude --env "API_KEY=secret123" "部署应用程序"

# ❌ 绝不要授予过于宽泛的权限
claude --allowedTools "Bash" "帮助做任何事情"

# ❌ 绝不要忽略权限提示
# 始终阅读并理解 Claude 想要做什么

# ❌ 绝不要在不必要的情况下使用提升的权限运行 Claude Code
sudo claude "修复系统配置"  # 通常不必要且危险

安全反模式

  1. 全面权限:不加考虑地授予所有工具访问权限。
  2. 凭证暴露:将秘密信息放在命令行参数中。
  3. 权限提升:不必要地使用 sudo 运行 Claude Code。
  4. 生产环境实验:在生产环境中进行测试。
  5. 忽略警告:不阅读安全提示就直接忽略。

高级安全配置

企业安全

对于企业环境:

# 集中式配置管理
export CLAUDE_CONFIG_URL="https://internal.company.com/claude-config"

# 审计日志记录
export CLAUDE_AUDIT_LOG="/var/log/claude/audit.log"

# 网络限制
export ANTHROPIC_BASE_URL="https://proxy.company.com/anthropic"

# 合规模式
export CLAUDE_COMPLIANCE_MODE="SOC2"

容器安全

对于容器化 Claude Code:

# 用于安全 Claude Code 容器的 Dockerfile
FROM node:18-alpine

# 创建非 root 用户
RUN addgroup -g 1001 claude && adduser -D -u 1001 -G claude claude

# 安装 Claude Code
RUN npm install -g @anthropic-ai/claude-code

# 切换到非 root 用户
USER claude

# 设置安全工作目录
WORKDIR /workspace

# 默认为安全模式
CMD ["claude", "--allowedTools", "View"]

总结

Claude Code 的安全性在于平衡功能与安全。从最小权限开始,根据需要逐步扩展访问权限。始终考虑授予权限的潜在影响,绝不要在包含重要数据的系统上使用危险模式。

请记住: - 默认采用限制性权限 - 对秘密信息使用环境变量 - 定期监控和审计 - 保持配置最新 - 遵循最小权限原则

通过遵循这些安全实践,您可以安全地利用 Claude Code 的强大功能,同时保护您的系统和数据免受潜在风险。

安全资源

保持安全意识,Claude Code 将成为您开发工具箱中强大而安全的补充。