密钥管理 secrets-management

企业级密钥管理技能,提供跨平台(HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、GCP Secret Manager、Kubernetes)的密钥全生命周期管理。支持密钥存储、访问控制、自动轮换、策略配置和动态凭据生成。适用于DevOps、云原生应用、微服务架构的安全密钥管理需求。关键词:密钥管理、企业安全、云安全、DevOps安全、密钥轮换、访问控制、HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、Kubernetes密钥

身份认证 0 次安装 0 次浏览 更新于 2/25/2026

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
  • 审计跟踪:完整的操作日志记录

最佳实践

安全

  1. 永不硬编码密钥 - 始终使用密钥管理器
  2. 最小权限 - 最小访问权限
  3. 审计日志 - 启用并监控访问日志
  4. 轮换 - 实施自动轮换
  5. 加密 - 静态和传输中加密

架构

  1. 集中管理 - 单一事实来源
  2. 动态密钥 - 尽可能使用短期凭据
  3. 密钥版本控制 - 跟踪密钥历史
  4. 访问策略 - 基于角色的访问控制
  5. 紧急访问 - 应急程序

应用程序集成

# 带有密钥注入的 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 需要解封 使用阈值密钥解封

约束

  • 永不记录或显示密钥值
  • 始终使用安全通道传输
  • 在授予访问权限前验证权限
  • 记录所有策略更改
  • 定期测试轮换程序