10 KiB
10 KiB
06 — 管理安全
GB/T 22239-2019 第三级「安全管理」控制点映射。
1. 维度说明
管理安全覆盖「安全管理制度的运行」,AgentKit 自身已实现:
- 已实现:密钥轮换 runbook(U5,10 个 secret slot)、 break-glass 告警流程(U4 R1b)、审计日志记录、应急隔离(销户 + session 撤销)。
- P0 补齐项:变更管理流程文档化(CI/CD 流水线规范)。
- P1 参考:定期安全评估流程。
- 待评估:应急响应预案演练(依赖客户安全团队协同)。
2. GB/T 22239-2019 三级要求(简要)
| 控制点 ID | 要求摘要 |
|---|---|
| MGT-01 | 密钥管理:密钥生成/存储/分发/轮换/销毁 |
| MGT-02 | 变更管理:变更审批/测试/回滚/审计 |
| MGT-03 | 应急响应:应急事件处置流程,隔离/恢复 |
| MGT-04 | 安全审计与评估:定期安全评估,漏洞管理 |
| MGT-05 | 配置管理:基线配置,配置变更审计 |
| MGT-06 | 应急通道(break-glass):高权限应急通道,审计追溯 |
| MGT-07 | 密钥泄露响应:泄露检测/隔离/轮换/通报 |
3. AgentKit 实现映射
3.1 密钥管理(MGT-01)— 已实现
10 个 secret slot + 轮换 runbook
docs/deployment/key-rotation-runbook.md
| # | Slot 名称 | 用途 | 轮换周期 | 归属 |
|---|---|---|---|---|
| 1 | JWT 签名密钥 | access(15m)/refresh(7d) token HS256 签名 | 90 天 | 安全团队 |
| 2 | API Key | 服务间 / SCIM / agentkit pair 鉴权 |
180 天 | 平台运维 |
| 3 | DB 凭据 | 应用层 PG 连接 DSN | 90 天 | DBA |
| 4 | IDP 签名证书 | OIDC/SAML IdP 签名证书 PEM(多 IDP 热轮换) | 365 天 | 身份团队 |
| 5 | 第三方 API Key | LLM provider API Key(JSON map) | 90 天 | LLM 运维 |
| 6 | TLS 服务器证书 | Ingress TLS 终止证书 + 私钥 | 365 天 | 平台运维 |
| 7 | mTLS 客户端证书 | 下游服务(KMS/HSM)mTLS | 180 天 | 安全团队 |
| 8 | KMS/HSM PKCS#11 PIN | 硬件安全模块访问 PIN | 365 天 | HSM 运维 |
| 9 | OTel exporter token | OTLP collector 鉴权 bearer | 90 天 | 可观测性团队 |
| 10 | Redis-PG 密码 | Redis requirepass + PG 服务密码 | 90 天 | DBA |
通用轮换原则
- 零停机:新密钥生效后再淘汰旧密钥,避免单点切换失败。
- 审计先行:轮换前记录当前密钥指纹(hash8),轮换后校验变更。
- 回滚预案:保留旧密钥值至少一个轮换周期,便于快速回滚。
- 权限最小化:轮换操作仅限归属角色,操作全程审计日志。
- 后端无关:适用于 Sealed Secrets 与 External Secrets 两种后端。
密钥存储
- 禁止明文 Kubernetes Secret + Git 提交(KTD-4 / R2a)。
- 后端二选一:Sealed Secrets(Bitnami)或 External Secrets Operator (指向 Vault / AWS SM / GCP SM / Azure KV)。
- 渲染到统一
<release>-secretsSecret,通过env.valueFrom.secretKeyRef注入 Pod。
详见 values.yaml
secrets 段。
热证书轮换(SAML)
SAML IDP 签名证书支持热轮换(不重启即时生效):
src/agentkit/server/auth/idp_registry.py
update_certificate 方法。OIDC 通过 server_metadata_url 自动发现
(authlib 缓存 TTL),无需显式热轮换。
3.2 break-glass 应急通道(MGT-06 / MGT-07)— 已实现
break-glass deprovisioning
src/agentkit/server/routes/auth.py
deprovision_user 端点支持 break_glass: true 标记:
class DeprovisionRequest:
reason: str | None = None
break_glass: bool = False # 高权限账户 break-glass 标记
break_glass=True 时审计记录 source=break_glass
(audit.py
SOURCE_BREAKGLASS),用于事后追溯应急操作。
应急流程
- 隔离:admin 通过 deprovision 端点强制销户
(
break_glass=True+reason说明) - 撤销:自动撤销该用户全部活跃 session
- 审计:记录 actor/target/reason/source=break_glass/timestamp
- 告警:OTel span event
audit.deprovision接入审计通道 - 通报:由安全团队人工通报(AgentKit 不自动通报,避免误报)
密钥泄露响应
key-rotation-runbook.md §紧急轮换 「紧急轮换(泄露响应)」段落:
- 隔离:撤销泄露密钥(provider 控制台 / HSM / CA)
- 轮换:按对应 slot 步骤紧急轮换(不遵循「双密钥并行」原则, 直接切换到新密钥并废弃旧密钥)
- 审计:检索泄露密钥的使用日志,确认无异常调用
- 通报:通知安全团队 + 受影响用户
- 复盘:记录泄露原因,加固访问控制
3.3 变更管理(MGT-02 / MGT-05)— P0 补齐项
已实现
- Git 版本控制:所有代码 / 配置 / Helm Chart 纳入 Git, 变更可追溯。
- Helm Chart checksum:ConfigMap 变更触发 Pod rollout
(deployment.yaml
checksum/configannotation),配置变更自动生效。 - 配置同步:config_sync.py 支持配置版本管理 + 轮询同步。
- 审计记录:所有 RBAC 变更、deprovision 操作记录审计 (audit.py)。
P0 补齐项:CI/CD 流水线规范
当前状态:P0。CI/CD 流水线(GitHub Actions / Gitea Actions)规范 未文档化。
P0 补齐计划:
- 新增
docs/CI-CD-STANDARDS.md,包含:- 分支策略(feature 分支 → PR → main)
- 必须的 CI 检查(ruff + pytest + 镜像漏洞扫描 P0)
- 部署审批流程(Staging → Production)
- 回滚流程(Helm rollback)
- CI 集成镜像漏洞扫描(详见
03-host.md§3.1 P0 补齐项)。 - 部署变更审计:
kubectl rollout历史记录接入审计通道。
3.4 应急响应(MGT-03)— 待评估
当前状态:待评估。AgentKit 自身应急隔离能力已实现(销户 + session 撤销
- 密钥紧急轮换),但完整应急响应预案需与客户安全团队协同:
- 事件分级标准(P0/P1/P2)
- 响应时限(P0 事件 15min 内响应)
- 通报链路(AgentKit admin → 客户安全团队 → 测评机构)
- 恢复流程(密钥轮换 → 服务恢复 → 数据完整性校验)
建议:客户安全团队基于本套等保文档 + AgentKit 应急能力 (销户/密钥轮换/审计日志)构建完整预案,并在认证前完成至少一次 桌面演练。
3.5 安全审计与评估(MGT-04)— P1 参考
当前状态:P1。AgentKit 审计日志已记录,但定期评估流程未建立。
已实现
- 审计日志覆盖:RBAC 变更 / deprovision / 终端命令 / SCIM 操作 全部记录审计 (audit.py
- OTel 指标监控:U1 OTel 暴露应用指标,可观测性平台监控异常 (metrics.py)。
P1 补齐计划
- 定期漏洞扫描:每月对依赖执行
pip-audit/safety扫描。 - 代码安全评估:每次重大版本发布前进行 SAST 扫描 (如 Bandit / Semgrep)。
- 渗透测试:认证后每年至少一次渗透测试(客户侧组织)。
- 审计日志定期审查:admin 每季度审查审计日志异常模式 (非自动告警,依赖人工 review — P1 可引入 SIEM 自动告警)。
3.6 配置管理(MGT-05)— 已实现
- Helm values 标准化:所有可配置项集中在 values.yaml, 含注释说明。
- 配置优先级:CLI 参数 >
agentkit.yaml> 环境变量(${VAR:-default}).env> 硬编码默认值(AGENTS.md)。 - 配置版本管理:config_sync.py 支持配置版本 + 轮询同步。
- 密钥与配置分离:含密钥的段(llm/auth/telemetry)由 env 注入,
不进 ConfigMap;非密配置进 ConfigMap
(values.yaml
config段注释)。
4. 测评建议
- MGT-01 / MGT-06 / MGT-07:直接展示 key-rotation-runbook.md
- secret-inventory.md + audit.py break_glass 流程即可。
- MGT-02 / MGT-05:已实现部分展示 Helm Chart + config_sync, P0 补齐 CI/CD 规范文档。
- MGT-03:待评估,由客户安全团队基于本套文档构建完整预案。
- MGT-04:P1 参考,写入整改计划(依赖扫描 + 季度审计 review)。
5. 密钥管理边界(重要说明)
AgentKit 密钥管理的边界:
- 不持有 HSM/KMS 硬件:HSM/KMS 由客户运维,AgentKit 通过 PKCS#11 PIN 访问(slot 8)。
- 不签发证书:TLS / mTLS 证书由客户 CA / cert-manager 签发, AgentKit 仅消费。
- 不托管 LLM provider 密钥:DashScope/DeepSeek/OpenAI/Anthropic 的密钥在 provider 控制台生成,AgentKit 仅存储引用(slot 5)。
- 多实例密钥同步:进程内 IDP 注册表不持久化,多实例部署时
各进程独立加载
agentkit.yaml;证书热轮换需配合配置同步 (config_sync.py 轮询)或重启 (idp_registry.py ponytail 注释)。