Env & Secrets Manager 是一个环境变量与密钥管理技能,属于工程领域,涉及安全、DevOps 与配置管理。其核心目标是管理本地开发与生产工作流中的环境变量卫生和密钥安全,强调实用审计、漂移感知和轮换准备。
用途 该技能用于在开发和生产流程中维护环境变量和密钥的安全实践。它帮助团队在提交涉及环境或配置文件的改动前进行检查,在安全审计和事件分类期间提供支持,为新贡献者建立安全的环境约定,并验证代码中是否存在明显的硬编码密钥。
主要能力
- .env 和 .env.example 生命周期指导。
- 针对仓库工作树的密钥泄露检测。
- 基于严重级别的疑似凭据发现。
- 轮换与遏制的操作指引。
- 可供 CI 检查集成的输出。
使用方式 快速开始: 扫描仓库中可能的密钥泄露: python3 scripts/env_auditor.py /path/to/repo 为 CI 管道输出 JSON: python3 scripts/env_auditor.py /path/to/repo --json
推荐工作流:
- 在仓库根目录运行 scripts/env_auditor.py。
- 优先处理严重和高危发现。
- 轮换真实凭据并移除暴露的值。
- 根据需要更新 .env.example 和 .gitignore。
- 添加或收紧 pre-commit/CI 密钥扫描门禁。
参考文档包括 references/validation-detection-rotation.md 和 references/secret-patterns.md。
适用场景
- 提交涉及环境/配置文件的改动前。
- 安全审计和事件分类期间。
- 新贡献者入职需要安全环境约定时。
- 验证没有明显硬编码密钥时。
限制与注意事项 常见陷阱包括:在 .env.example 中提交真实值;轮换一个系统但遗漏下游消费者;在调试或事件响应期间记录密钥;将疑似泄露视为低优先级而不验证。最佳实践建议:使用密钥管理器作为生产环境的真实来源;保持开发环境文件本地化并加入 gitignore;在合并前于 CI 中强制执行检测;凭据轮换后立即重新测试应用程序路径。
云密钥存储集成 生产应用程序不应从 .env 文件或烘焙到容器镜像中的环境变量读取密钥,而应使用专用密钥存储。提供者比较:HashiCorp Vault 适合多云/混合环境,具有动态密钥、策略引擎和可插拔后端;AWS Secrets Manager 适合 AWS 原生工作负载,具有原生 Lambda/ECS/EKS 集成和自动 RDS 轮换;Azure Key Vault 适合 Azure 原生工作负载,具有托管 HSM、Azure AD RBAC 和证书管理;GCP Secret Manager 适合 GCP 原生工作负载,具有基于 IAM 的访问、自动复制和版本控制。选择指导:单一云提供商使用云原生密钥管理器;多云或混合使用 HashiCorp Vault;Kubernetes 重度使用可结合 External Secrets Operator 与任何后端。
应用程序访问模式包括 SDK/API 拉取、边车注入、初始化容器和 CSI 驱动。
密钥轮换工作流 阶段 1:检测——在密钥存储元数据中跟踪密钥创建和到期日期,在到期前 30、14、7 天设置警报,使用 scripts/env_auditor.py 标记没有记录轮换日期的密钥。 阶段 2:轮换——生成新凭据,并行部署到所有消费者,验证每个消费者能使用新凭据认证,确认所有消费者健康后撤销旧凭据,更新元数据。 阶段 3:自动化——AWS Secrets Manager 使用基于 Lambda 的内置轮换;HashiCorp Vault 配置带 TTL 的动态密钥;Azure Key Vault 使用 Event Grid 通知触发轮换函数;GCP Secret Manager 使用 Pub/Sub 通知绑定 Cloud Functions。
紧急轮换清单:确认泄露后立即在提供者级别撤销受损凭据;生成并部署替换凭据到所有消费者;审计暴露窗口期间的访问日志;扫描 git 历史、CI 日志和制品注册表;提交事件报告;审查并收紧检测控制。
CI/CD 密钥注入 GitHub Actions:使用仓库或环境密钥通过 ${{ secrets.SECRET_NAME }};优先使用 OIDC 联合而非长期访问密钥;环境密钥配合必需审查者添加审批门禁;GitHub 自动在日志中屏蔽密钥,但避免 echo 或 toJSON()。 GitLab CI:将密钥存储为 CI/CD 变量并启用 masked 和 protected 标志;使用 HashiCorp Vault 集成进行动态密钥注入;将变量范围限定到特定环境。 通用模式:绝不在管道输出中回显或打印密钥值;尽可能使用短期令牌;限制 PR 访问;按与应用程序密钥相同的计划轮换 CI 密钥;定期审计管道日志。
Pre-Commit 密钥检测 gitleaks:安装 brew install gitleaks 或从 GitHub releases 下载;pre-commit 钩子 gitleaks git --pre-commit --staged;基线扫描 gitleaks detect --source . --report-path gitleaks-report.json;在 .gitleaksignore 中管理误报。 detect-secrets:生成基线 detect-secrets scan --all-files > .secrets.baseline;通过 pre-commit 框架配置钩子;支持自定义插件;审计工作流 detect-secrets audit .secrets.baseline 交互式标记真/假阳性。 误报管理:在版本控制中维护 .gitleaksignore 或 .secrets.baseline;在安全审计期间审查误报列表;优先收紧正则表达式而非广泛忽略文件。
审计日志 云原生审计跟踪:AWS CloudTrail 捕获每个 GetSecretValue、DescribeSecret、RotateSecret API 调用;Azure Activity Log + Diagnostic Logs 捕获 Key Vault 访问事件;GCP Cloud Audit Logs 捕获 Secret Manager 的数据访问日志;Vault Audit Backend 提供完整请求/响应日志。 警报策略:对来自未知 IP 范围或预期集合之外的服务账户的访问发出警报;对批量密钥读取发出警报;对部署窗口外且无 CI/CD 管道运行时的访问发出警报;将审计日志馈送到 SIEM;每季度审查审计日志。
交叉引用 该技能涵盖环境变量卫生和密钥检测。相关领域包括:Secrets Vault Manager(生产 vault 基础设施、HA 部署、灾难恢复)、Senior SecOps(安全运营视角、事件响应)、CI/CD Pipeline Builder(管道架构、密钥注入模式)、Infrastructure as Code(Terraform/Pulumi 密钥后端配置)、Container Orchestration(Kubernetes 密钥挂载、密封密钥)。