用途
该技能用于在 CI/CD 流水线中实施安全的密钥管理,避免将 API 密钥、数据库密码、TLS 证书等敏感信息硬编码到源码或配置中。适用于需要存储 API 密钥与凭据、管理数据库密码、处理 TLS 证书、自动轮换密钥以及实施最小权限访问的场景。不适用于计划将密钥硬编码到源码控制、无法保护密钥后端访问、或仅需本地开发值且无需共享的情况。
主要能力
- 支持多种密钥后端:HashiCorp Vault(集中管理、动态密钥生成、轮换、审计日志、细粒度访问控制)、AWS Secrets Manager(AWS 原生、自动轮换、与 RDS 集成、CloudFormation 支持)、Azure Key Vault(Azure 原生、HSM 支持密钥、证书管理、RBAC 集成)、Google Secret Manager(GCP 原生、版本控制、IAM 集成)。
- 提供 CI/CD 集成示例:GitHub Actions 使用 hashicorp/vault-action 导入 Vault 密钥,GitLab CI 使用 vault 镜像获取密钥,AWS Secrets Manager 在 GitHub Actions 中检索密钥,Terraform 读取 AWS Secrets Manager 密钥。
- 支持平台原生方案:GitHub Secrets(组织/仓库密钥、环境密钥)、GitLab CI/CD 变量(项目变量、受保护与掩码变量、文件类型)。
- 提供密钥轮换方案:AWS 自动轮换 Lambda 示例、手动轮换流程。
- 提供 External Secrets Operator 的 Kubernetes 集成示例,将 Vault 密钥同步为 Kubernetes Secret。
- 提供密钥扫描方案:TruffleHog 预提交钩子、CI/CD 密钥扫描。
使用方式
- 识别密钥类型、所有者与轮换要求。
- 选择密钥后端与访问模型。
- 以最小权限集成 CI/CD 或运行时检索。
- 验证轮换与审计日志。
具体集成示例包括:Vault 开发服务器启动与密钥存储命令、GitHub Actions 与 GitLab CI 的 Vault 集成 YAML、AWS Secrets Manager 的创建与检索命令、Terraform 数据源读取、GitHub Secrets 与 GitLab CI/CD 变量的使用、AWS 自动轮换 Lambda 代码、External Secrets Operator 的 SecretStore 与 ExternalSecret 清单、TruffleHog 预提交钩子与 CI 扫描配置。
适用场景
- 在 CI/CD 流水线中安全地存储和检索 API 密钥、数据库密码、TLS 证书。
- 需要自动轮换密钥并保留审计日志。
- 需要实施最小权限访问控制。
- 需要将密钥后端与 GitHub Actions、GitLab CI、Terraform、Kubernetes 等平台集成。
- 需要扫描代码库以防止密钥泄露。
限制
- 不适用于计划将密钥硬编码到源码控制的情况。
- 不适用于无法保护密钥后端访问的情况。
- 不适用于仅需本地开发值且无需共享的情况。
- 安全要求:绝不将密钥提交到源码控制;限制访问并记录密钥使用以供审计。
最佳实践
绝不将密钥提交到 Git;每个环境使用不同密钥;定期轮换密钥;实施最小权限访问;启用审计日志;使用密钥扫描工具(GitGuardian、TruffleHog);在日志中掩码密钥;静态加密密钥;尽可能使用短期令牌;记录密钥需求。
相关技能
github-actions-templates(GitHub Actions 集成)、gitlab-ci-patterns(GitLab CI 集成)、deployment-pipeline-design(流水线架构)。