name: 密钥管理 description: 跨平台企业级密钥管理。使用 HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、GCP Secret Manager 和 Kubernetes 密钥管理密钥。配置轮换、策略和访问控制。 allowed-tools: Bash(*) 读取 写入 编辑 全局搜索 Grep WebFetch metadata: author: babysitter-sdk version: “1.0.0” category: 安全 backlog-id: SK-008
密钥管理
您是 密钥管理 - 一个专门用于跨多个平台进行企业级密钥管理的技能。此技能提供在整个生命周期内安全管理密钥的全面能力。
概述
此技能支持AI驱动的密钥管理,包括:
- HashiCorp Vault 操作和策略配置
- AWS Secrets Manager 集成
- Azure Key Vault 操作
- GCP Secret Manager 集成
- Kubernetes 密钥和密封密钥
- 密钥轮换自动化
- 访问策略配置
先决条件
- 访问密钥管理平台
- 适当的身份验证凭据
- CLI工具:vault、aws、az、gcloud、kubectl
能力
1. HashiCorp Vault
操作和策略管理:
# 登录并检查状态
vault status
vault login -method=oidc
# 密钥操作
vault kv put secret/myapp/config username=admin password=secret
vault kv get secret/myapp/config
vault kv get -format=json secret/myapp/config
# 启用密钥引擎
vault secrets enable -path=secret kv-v2
# 列出密钥
vault kv list secret/myapp/
# 删除密钥
vault kv delete secret/myapp/config
vault kv destroy -versions=1 secret/myapp/config
Vault 策略
# 应用程序访问策略
path "secret/data/myapp/*" {
capabilities = ["read", "list"]
}
path "secret/metadata/myapp/*" {
capabilities = ["list"]
}
# 管理员策略
path "secret/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
# 数据库凭据
path "database/creds/myapp" {
capabilities = ["read"]
}
AppRole 身份验证
# 启用 AppRole
vault auth enable approle
# 创建角色
vault write auth/approle/role/myapp \
token_policies="myapp-policy" \
token_ttl=1h \
token_max_ttl=4h
# 获取角色 ID
vault read auth/approle/role/myapp/role-id
# 生成密钥 ID
vault write -f auth/approle/role/myapp/secret-id
2. AWS Secrets Manager
# 创建密钥
aws secretsmanager create-secret \
--name myapp/production/db \
--secret-string '{"username":"admin","password":"secret"}'
# 获取密钥值
aws secretsmanager get-secret-value \
--secret-id myapp/production/db \
--query SecretString --output text
# 更新密钥
aws secretsmanager update-secret \
--secret-id myapp/production/db \
--secret-string '{"username":"admin","password":"newsecret"}'
# 启用轮换
aws secretsmanager rotate-secret \
--secret-id myapp/production/db \
--rotation-lambda-arn arn:aws:lambda:region:account:function:rotation
# 列出密钥
aws secretsmanager list-secrets --filter Key=name,Values=myapp
密钥访问的 IAM 策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": "arn:aws:secretsmanager:*:*:secret:myapp/*"
}
]
}
3. Azure Key Vault
# 创建保险库
az keyvault create \
--name myapp-vault \
--resource-group myapp-rg \
--location eastus
# 设置密钥
az keyvault secret set \
--vault-name myapp-vault \
--name db-password \
--value "secret"
# 获取密钥
az keyvault secret show \
--vault-name myapp-vault \
--name db-password \
--query value -o tsv
# 列出密钥
az keyvault secret list \
--vault-name myapp-vault
# 设置访问策略
az keyvault set-policy \
--name myapp-vault \
--spn $SERVICE_PRINCIPAL_ID \
--secret-permissions get list
4. GCP Secret Manager
# 创建密钥
gcloud secrets create db-password \
--replication-policy="automatic"
# 添加密钥版本
echo -n "secret" | gcloud secrets versions add db-password --data-file=-
# 访问密钥
gcloud secrets versions access latest --secret=db-password
# 授予访问权限
gcloud secrets add-iam-policy-binding db-password \
--member="serviceAccount:myapp@project.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
# 列出密钥
gcloud secrets list
5. Kubernetes 密钥
# 创建密钥
kubectl create secret generic myapp-secrets \
--from-literal=username=admin \
--from-literal=password=secret \
-n production
# 从文件创建
kubectl create secret generic tls-certs \
--from-file=tls.crt=./cert.pem \
--from-file=tls.key=./key.pem
# 查看密钥(base64编码)
kubectl get secret myapp-secrets -o yaml
# 解码密钥
kubectl get secret myapp-secrets -o jsonpath='{.data.password}' | base64 -d
密封密钥 (Bitnami)
# 安装 kubeseal
brew install kubeseal
# 密封密钥
kubeseal --format yaml < secret.yaml > sealed-secret.yaml
# 应用密封密钥
kubectl apply -f sealed-secret.yaml
外部密钥操作符
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: myapp-secret
spec:
refreshInterval: 1h
secretStoreRef:
name: vault-backend
kind: SecretStore
target:
name: myapp-secret
creationPolicy: Owner
data:
- secretKey: password
remoteRef:
key: secret/data/myapp/config
property: password
6. 密钥轮换
Vault 动态密钥
# 启用数据库密钥引擎
vault secrets enable database
# 配置 PostgreSQL 连接
vault write database/config/mydb \
plugin_name=postgresql-database-plugin \
allowed_roles="myapp" \
connection_url="postgresql://{{username}}:{{password}}@db:5432/mydb" \
username="vault_admin" \
password="admin_password"
# 为动态凭据创建角色
vault write database/roles/myapp \
db_name=mydb \
creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
default_ttl="1h" \
max_ttl="24h"
# 生成凭据
vault read database/creds/myapp
MCP 服务器集成
此技能可以利用以下 MCP 服务器:
| 服务器 | 描述 | 安装 |
|---|---|---|
| claude-vault-mcp | 带有 TOKEN 系统的 HashiCorp Vault | PyPI |
claude-vault-mcp 功能
- TOKEN 系统:AI 看到令牌化引用,而非实际密钥
- WebAuthn 批准:敏感操作的人机交互
- 密钥迁移:从 .env 文件迁移到 Vault
- 审计跟踪:完整的操作日志记录
最佳实践
安全
- 永不硬编码密钥 - 始终使用密钥管理器
- 最小权限 - 最小访问权限
- 审计日志 - 启用并监控访问日志
- 轮换 - 实施自动轮换
- 加密 - 静态和传输中加密
架构
- 集中管理 - 单一事实来源
- 动态密钥 - 尽可能使用短期凭据
- 密钥版本控制 - 跟踪密钥历史
- 访问策略 - 基于角色的访问控制
- 紧急访问 - 应急程序
应用程序集成
# 带有密钥注入的 Kubernetes pod
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
containers:
- name: app
image: myapp:latest
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: myapp-secrets
key: password
volumeMounts:
- name: secrets
mountPath: /etc/secrets
readOnly: true
volumes:
- name: secrets
secret:
secretName: myapp-secrets
流程集成
此技能与以下流程集成:
secrets-management.js- 初始密钥设置security-scanning.js- 密钥泄露检测kubernetes-setup.js- K8s 密钥配置
输出格式
执行操作时,提供结构化输出:
{
"operation": "create-secret",
"platform": "vault",
"status": "success",
"secret": {
"path": "secret/data/myapp/config",
"version": 1,
"created_time": "2026-01-24T10:00:00Z"
},
"policy": {
"name": "myapp-policy",
"applied": true
},
"artifacts": ["policy.hcl"]
}
错误处理
常见问题
| 错误 | 原因 | 解决方案 |
|---|---|---|
权限被拒绝 |
策略不足 | 审查并更新策略 |
未找到密钥 |
路径不正确 | 验证密钥路径 |
令牌已过期 |
身份验证超时 | 重新身份验证 |
保险库已密封 |
Vault 需要解封 | 使用阈值密钥解封 |
约束
- 永不记录或显示密钥值
- 始终使用安全通道传输
- 在授予访问权限前验证权限
- 记录所有策略更改
- 定期测试轮换程序