Claude 代码 segurança e práticas recomendadas指南
Claude Code 安全与最佳实践指南
当使用可以执行命令和修改文件的 AI 工具时,安全性至关重要。本综合指南涵盖了 Claude Code 的安全功能、最佳实践以及如何在各种环境中安全地使用它。
理解 Claude Code 的安全模型
Claude Code 实现了多层安全方法:
- 权限系统:对工具访问进行精细控制
- 环境隔离:可配置的工作区边界
- 审计追踪:全面的日志记录和监控
- 安全通信:加密的 API 通信
- 配置管理:安全的凭证处理
权限系统深入解析
权限级别
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 密钥被泄露:
- 在 Anthropic 控制台立即吊销密钥
- 生成新的 API 密钥
- 更新环境变量
- 审查最近的 API 使用情况以查找未经授权的活动
- 审计 Claude Code 会话以查找可疑活动
# 检查最近的会话
claude sessions list
# 导出可疑会话进行分析
claude sessions export suspicious-session-id > incident-analysis.json
# 清除所有会话
claude sessions clear --all
未经授权的文件访问
如果 Claude Code 访问了敏感文件:
- 立即停止当前会话
- 审查会话日志以了解访问了哪些内容
- 更改任何暴露的凭证
- 审计文件权限
- 实施更严格的
allowedTools
策略
# 停止当前会话
claude /exit
# 审查发生了什么
tail -100 claude-session.log
# 实施更严格的权限
claude config set allowedTools '["View"]'
MCP 服务器被入侵
如果 MCP 服务器被入侵:
- 禁用受影响的 MCP 服务器
- 审查服务器日志
- 将服务器更新到最新版本
- 轮换服务器使用的任何凭证
- 以最小权限重新启用
# 禁用 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 "修复系统配置" # 通常不必要且危险
安全反模式
- 全面权限:不加考虑地授予所有工具访问权限。
- 凭证暴露:将秘密信息放在命令行参数中。
- 权限提升:不必要地使用
sudo
运行 Claude Code。 - 生产环境实验:在生产环境中进行测试。
- 忽略警告:不阅读安全提示就直接忽略。
高级安全配置
企业安全
对于企业环境:
# 集中式配置管理
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 将成为您开发工具箱中强大而安全的补充。