68 lines
4.0 KiB
Markdown
68 lines
4.0 KiB
Markdown
# 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`。
|