4.0 KiB
4.0 KiB
Fischer AgentKit — 密钥清单(Secret Inventory)
本文档列出 Helm Chart 涉及的全部 11 个 secret slot(KTD-4 / R2a), 每个 slot 含:名称、用途、来源、轮换周期、归属角色、对应环境变量。
密钥后端二选一:Sealed Secrets(
secrets.backend: sealed-secrets)或 External Secrets Operator(secrets.backend: external-secrets)。 禁止明文 Kubernetes Secret + Git 提交。
密钥清单总表
| # | Slot 名称 | Secret Key | 环境变量 | 用途 | 来源 | 轮换周期 | 归属 |
|---|---|---|---|---|---|---|---|
| 1 | JWT 签名密钥 | jwt-signing-key |
JWT_SIGNING_KEY |
JWT access(15m)/refresh(7d) token HS256 签名 | 运维生成(32+ 字节随机串) | 90 天 | 安全团队 |
| 2 | API Key | api-key |
API_KEY |
服务间调用 / SCIM bearer / agentkit pair 鉴权 |
运维生成 | 180 天 | 平台运维 |
| 3 | DB 凭据 | database-url |
DATABASE_URL |
应用层 PG 连接 DSN(含用户名+密码) | DBA 提供 | 90 天 | DBA |
| 4 | IDP 签名证书 | idp-signing-certs |
IDP_SIGNING_CERTS |
OIDC/SAML IdP 签名证书 PEM(JSON map,多 IDP 热轮换) | 各 IDP 管理员提供 | 365 天 | 身份团队 |
| 5 | 第三方 API Key | third-party-api-keys |
THIRD_PARTY_API_KEYS |
LLM provider API Key(JSON map,DashScope/DeepSeek/OpenAI/Anthropic) | 各 provider 控制台 | 90 天 | LLM 运维 |
| 6 | TLS 服务器证书 | tls-server-cert |
(Ingress TLS Secret) | Ingress TLS 终止证书 + 私钥 | 证书签发机构 / cert-manager | 365 天 | 平台运维 |
| 7 | mTLS 客户端证书 | mtls-client-cert |
MTLS_CLIENT_CERT |
与下游服务(KMS/HSM、内部 API)双向 TLS 客户端证书 | 内部 PKI | 180 天 | 安全团队 |
| 8 | KMS/HSM PKCS#11 PIN | kms-hsm-pin |
KMS_HSM_PIN |
硬件安全模块 PKCS#11 访问 PIN | HSM 管理员 | 365 天 | HSM 运维 |
| 9 | OTel exporter token | otel-exporter-token |
OTEL_EXPORTER_OTLP_HEADERS |
OTLP collector 鉴权(DEPLOY-5: 值格式 Authorization=Bearer <token>,非裸 Bearer) |
可观测性平台 | 90 天 | 可观测性团队 |
| 10 | Redis 密码 | redis-password |
REDIS_PASSWORD |
Redis requirepass(基础设施层,应用通过 env 消费) | DBA / 缓存运维 | 90 天 | DBA |
| 11 | PostgreSQL 密码 | postgres-password |
POSTGRES_PASSWORD(仅 PG StatefulSet) |
PostgreSQL POSTGRES_PASSWORD(DEPLOY-4: 应用不读此 env,通过 DATABASE_URL Slot 3 内嵌密码连接) | DBA | 90 天 | DBA |
风险等级
| Slot | 泄露影响 | 风险等级 |
|---|---|---|
| 1 JWT 签名密钥 | 任意伪造身份 token | 高 |
| 2 API Key | 服务间冒充 / SCIM 越权 | 高 |
| 3 DB 凭据 | 数据库全量读写 | 严重 |
| 4 IDP 签名证书 | SSO 信任链断裂(不能直接伪造,需配合 IdP 私钥) | 中 |
| 5 第三方 API Key | LLM 账单盗刷 / 数据外泄 | 高 |
| 6 TLS 服务器证书 | TLS 中间人 / 域名冒充 | 高 |
| 7 mTLS 客户端证书 | 内部 API 越权访问 | 高 |
| 8 KMS/HSM PIN | 密钥托管被解锁 / 加解密被滥用 | 严重 |
| 9 OTel token | 遥测数据投毒 / 窃取 | 中 |
| 10 Redis-PG 密码 | 缓存/数据库越权 | 严重 |
存储位置
所有 secret slot 渲染到统一 Kubernetes Secret(名 <release>-secrets),
由 SealedSecret 或 ExternalSecret 控制器自动创建 / 同步:
<release>-secrets (Secret)
├── jwt-signing-key
├── api-key
├── database-url
├── idp-signing-certs
├── third-party-api-keys
├── tls-server-cert
├── mtls-client-cert
├── kms-hsm-pin
├── otel-exporter-token
├── redis-password
└── postgres-password
deployment.yaml 通过 env.valueFrom.secretKeyRef 引用上述全部 key。
TLS 服务器证书(slot 6)额外被 Ingress 的 tls.secretName 引用
(需由 cert-manager 或运维单独创建为 kubernetes.io/tls 类型 Secret)。
轮换流程
详见 docs/deployment/key-rotation-runbook.md。