如何用 Hooks 保护 Claude Code 中的敏感密钥?

密钥保护 Hook

以下步骤将帮助您设置一个用于密钥保护的 Hook。

  1. 复制 Hook 脚本

    mkdir -p ~/.claude/hooks
    git clone https://github.com/karanb192/claude-code-hooks.git
    cp hook-scripts/pre-tool-use/protect-secrets.js ~/.claude/hooks/

  2. .claude/settings.json中添加配置

    {
    "hooks": {
    "PreToolUse": [
    {
    "matcher": "Read|Edit|Write|Bash",
    "hooks": [
    {
    "type": "command",
    "command": "node ~/.claude/hooks/protect-secrets.js"
    }
    ]
    }
    ]
    }
    }

  3. 重启 Claude Code 以激活该 Hook
    💡 提示 :可以结合多个 Hooks 使用,例如 block-dangerous-commandsprotect-secrets,以实现更全面的安全防护。

保护机密

此 Hook 可防止 Claude Code 读取、修改或窃取敏感文件,包括但不限于:

  • .env 文件

  • SSH 密钥(如 ~/.ssh/id_*

  • AWS 凭证(如 ~/.aws/credentials

  • Kubernetes 配置文件(如 ~/.kube/config

  • 匹配常见密钥模式的任意文件
    此外,它还会阻止可能泄露密钥的 Bash 命令,例如:

  • cat .env

  • echo $API_KEY

  • curl -d @.env (数据窃取)

  • printenv (环境信息导出)
    通过上述配置,您可以有效增强 Claude Code 的安全性,确保敏感信息不被未经授权地访问或篡改。

    {
    "hooks": {
    "PreToolUse": [{
    "matcher": "Read|Edit|Write|Bash",
    "hooks": [{
    "type": "command",
    "command": "node ~/.claude/hooks/protect-secrets.js"
    }]
    }]
    }
    }

根据"实际拦截功能"对以下内容进行分类整理:

1. 文件访问控制

当尝试读取、修改或写入下列敏感文件时,系统将直接拒绝访问:

  • 关键级别(默认包含高风险)
    • 环境配置文件:.env 及其变体如 .env.*, .envrc
    • SSH 相关密钥及认证文件:位于 ~/.ssh/ 目录下的 id_* 文件(例如 id_rsa, id_ed25519等),以及 authorized_keys
    • 云服务凭证:包括但不限于 ~/.aws/credentials, ~/.aws/config, ~/.kube/config
    • 各类证书与密钥:.pem, .key, .p12/.pfx 扩展名的文件
  • 高风险(当前 SAFETY_LEVEL 设置为 'high' 时启用)
    • 认证信息存储:credentials.json
    • 密码管理文件:扩展名为 .yaml, .json, 或 .tomlsecretscredentials 文件
    • 特定于 GCP, Azure, GCloud 的认证文件
    • Docker 配置文件:~/.docker/config.json(可能包含注册表认证信息)
    • 其他开发工具相关的认证文件:.netrc, .npmrc, .pypirc, .gem/credentials, .vault-token
    • Java 应用程序密钥库:*.keystore, *.jks
    • Web 服务器和数据库密码文件:.htpasswd, .pgpass, .my.cnf
  • 严格模式(尚未启用)
    • 数据库配置文件:database.json/yaml
    • 已知主机列表:.ssh/known_hosts
    • Git 客户端配置:.gitconfig
    • Curl 客户端配置:.curlrc

注释 :模板或示例环境变量文件如 .env.example, .sample, .template 等被加入白名单,默认允许访问。

2. Bash 命令拦截

对于可能引起数据泄露或系统破坏的行为,系统将阻止执行以下命令:

  • 直接查看敏感信息
    • 使用 cat, less, head, tail 查看 .env 文件
    • 读取私有密钥文件(如 id_rsa, .pem, .key
    • 显示 AWS 凭据
  • 环境变量暴露
    • 列出所有环境变量:printenv, env
    • 显示特定环境变量值:echo $TOKEN, printf $PASSWORD
    • 加载环境变量:source .env, . .env
    • 导出环境变量:export $(cat .env ...)
  • 数据外泄
    • 通过 curl 上传或 POST 敏感文件
    • 利用 wget --post-file 发送敏感信息
    • 使用 scprsync 将敏感文件传输到远程位置
    • 采用 nc < .env 方式进行 netcat 外传
  • 敏感文件操作
    • 复制或移动 .env 文件
    • 删除重要密钥文件,如 .env, id_rsa, .aws/credentials
    • 清空敏感文件内容:truncate
  • 进程环境读取
    • 访问 /proc/*/environ 获取进程环境变量
    • 使用 find ... -exec cat ...xargs cat ... 读取 .env 文件
  • 仅在严格模式下启用
    • 对关键词如 password, token, apikey 进行递归搜索
    • 对秘密信息执行 Base64 编码

3. 适用场景概述

本脚本旨在保护如下应用场景:

  1. 防止意外读取:避免 AI 或脚本无意中读取本地或项目中的敏感凭据。
  2. 防止误修改/删除:禁止对关键密钥文件进行未经授权的写入、移动或删除操作。
  3. 防止数据外泄 :阻止使用 curl, scp, wget, nc 等工具将敏感信息发送出去。
  4. 防止环境变量泄漏 :限制 env, printenv, echo $TOKEN 等命令的使用以避免泄露环境变量。
  5. 可追溯性 :任何触发规则的行为都将记录至 ~/.claude/hooks-logs/ 中,便于后续审计。

补充说明

增加对 .zshrc, .bashrc 等用户配置文件的安全检查与拦截。

相关推荐
Cosolar3 小时前
Claude Code Skills 源码深度解析:从元工具架构到 Agent 进化内核
llm·agent·ai编程
趙卋傑3 小时前
测试开发场景下常见的 MCP 服务
开发语言·python·测试工具·ai编程
程序辕日记3 小时前
SpringAI RAG 检索增强生成
ai编程
月亮给我抄代码3 小时前
Superpowers —— 让 AI 编程代理具备工程化开发能力
驱动开发·ai编程·codex·claude code·opencode·superpowers
gyx_这个杀手不太冷静3 小时前
大人工智能时代下前端界面全新开发模式的思考(一)
前端·人工智能·ai编程
财经资讯数据_灵砚智能4 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月11日
大数据·人工智能·python·信息可视化·自然语言处理·ai编程
组合缺一4 小时前
SolonCode CLI v2026.4.11 发布(中文驱动的编码智能体)
java·ai编程·agents·solon-ai·claudecode·opencode·soloncode
刀法如飞6 小时前
关于AI的三个核心问题——工具、认知与产业的再思考
人工智能·aigc·ai编程
超低空13 小时前
OpenClaw Windows 安装详细教程
人工智能·程序员·ai编程