[ PROMPT_NODE_27638 ]
secrets-management
[ SKILL_DOCUMENTATION ]
# 密钥管理
使用 Vault、AWS Secrets Manager 等工具为 CI/CD 工作流提供安全的密钥管理实践。
## 目的
在 CI/CD 工作流中实现安全的密钥管理,避免硬编码敏感信息。
## 使用此技能的场景
- 存储 API 密钥和凭据
- 管理数据库密码
- 处理 TLS 证书
- 自动轮换密钥
- 实现最小权限访问
## 不使用此技能的场景
- 您计划在源代码管理中硬编码密钥
- 您无法保护对密钥后端的访问
- 您仅需要本地开发值而无需共享
## 指令
1. 识别密钥类型、所有者和轮换要求。
2. 选择密钥后端和访问模型。
3. 以最小权限集成 CI/CD 或运行时检索。
4. 验证轮换和审计日志。
## 安全性
- 永远不要将密钥提交到源代码管理中。
- 限制访问并记录密钥使用情况以供审计。
## 密钥管理工具
### HashiCorp Vault
- 集中式密钥管理
- 动态密钥生成
- 密钥轮换
- 审计日志
- 细粒度访问控制
### AWS Secrets Manager
- AWS 原生解决方案
- 自动轮换
- 与 RDS 集成
- CloudFormation 支持
### Azure Key Vault
- Azure 原生解决方案
- 基于 HSM 的密钥
- 证书管理
- RBAC 集成
### Google Secret Manager
- GCP 原生解决方案
- 版本控制
- IAM 集成
## HashiCorp Vault 集成
### 设置 Vault
bash
# 启动 Vault 开发服务器
vault server -dev
# 设置环境变量
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='root'
# 启用密钥引擎
vault secrets enable -path=secret kv-v2
# 存储密钥
vault kv put secret/database/config username=admin password=secret
### GitHub Actions 与 Vault 集成
yaml
name: Deploy with Vault Secrets
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Import Secrets from Vault
uses: hashicorp/vault-action@v2
with:
url: https://vault.example.com:8200
token: ${{ secrets.VAULT_TOKEN }}
secrets: |
secret/data/database username | DB_USERNAME ;
secret/data/database password | DB_PASSWORD ;
secret/data/api key | API_KEY
- name: Use secrets
run: |
echo "Connecting to database as $DB_USERNAME"
# Use $DB_PASSWORD, $API_KEY
### GitLab CI 与 Vault 集成
yaml
deploy:
image: vault:latest
before_script:
- export