用 Varlock 让 Claude 管理环境变量,防泄密
解决安全痛点:防止敏感信息(如 API 密钥、密码)意外暴露给 AI 模型、写入日志或提交到 Git。通过 Varlock 构建的“默认安全”工作流,确保变量只在命令执行时可用,从不出现在上下文或输出中。
为什么需要这个技能
在使用 LLM 辅助开发时,直接 cat .env 或 echo $SECRET 极易导致密钥泄露到 Claude 的上下文、终端历史甚至 CI/CD 日志中。一旦泄露,攻击者可直接重放 API。
本项目 varlock 提供了一种 secure-by-default(默认安全)的管理方式。它允许 AI 验证环境、注入变量到命令,但严禁直接读取或打印敏感值。这对于需要处理生产配置、数据库凭证或第三方 API 密钥的场景至关重要。
适用场景
- 需要在 Claude Code 会话中操作包含敏感配置的生产环境项目。
- 执行依赖特定环境变量(如
DATABASE_URL)的 CI/CD 任务。 - 需要自动化的密钥轮换流程,且要求操作日志中不记录明文密钥。
- 在 Docker 容器中启动服务前,先验证且安全地注入环境变量。
核心工作流
1. 初始化与 Schema 定义
首先安装 CLI 并创建 .env.schema 文件。该文件仅描述变量类型、校验规则和敏感度,绝不包含实际值。
# 安装 Varlock CLI
curl -sSfL https://varlock.dev/install.sh | sh -s -- --force-no-brew
# 添加 PATH
export PATH="$HOME/.varlock/bin:$PATH"
# 初始化项目,从现有 .env 生成 schema(或手动创建)
varlock init
在 .env.schema 中定义每个变量。关键是用 @sensitive 标记需要隐藏的值。
# Global defaults
# @defaultSensitive=true @defaultRequired=infer
# Application
# @type=enum(development,staging,production) @sensitive=false
NODE_ENV=development
# @type=port @sensitive=false
PORT=3000
# Database - SENSITIVE
# @type=url @required
DATABASE_URL=
# @type=string @required @sensitive
DATABASE_PASSWORD=
# API Keys - SENSITIVE
# @type=string(startsWith=sk_) @required @sensitive
STRIPE_SECRET_KEY=
# @type=string(startsWith=pk_) @sensitive=false
STRIPE_PUBLISHABLE_KEY=
2. 安全验证与加载
运行时使用 varlock load 进行验证。它会检查文件存在性、变量是否符合 schema 类型定义以及敏感度要求,而不会输出敏感值。
# 验证环境并加载到安全上下文
varlock load
# 静默模式(成功时不输出任何内容)
varlock load --quiet
如果验证失败,它会指出哪个变量缺失或类型不匹配,但绝不会泄露尝试读取的值。
3. 安全执行命令
使用 varlock run 执行需要该环境的命令。变量会被注入到子进程的 shell 环境中,但不会打印到 stdout。
# 安全地运行 npm 任务
varlock run -- npm start
# 安全地运行测试
varlock run -- pytest
# 注入环境变量运行任意命令
varlock run -- curl https://api.example.com
4. 调试与查询
当需要“检查”环境变量时,必须使用 varlock 管道或 grep 过滤后的安全输出,严禁 echo $KEY。
# 安全查看变量状态(敏感值显示为掩码)
varlock load 2>&1 | grep "STRIPE_SECRET_KEY"
# 输出示例:✅ STRIPE_SECRET_KEY 🔐sensitive └ ▒▒▒▒▒
# 仅检查变量是否存在(安全)
cat .env.schema
# 检查变量名是否匹配正则(不输出值)
varlock load 2>&1 | grep -E "(CLERK|AUTH)"
下载和安装
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐