docs(compliance): U6 — 等保三级文档准备(6 维度 + 控制点清单)

U6 启动等保三级认证文档编写,按 GB/T 22239-2019 6 维度组织:

00-overview — 总览:认证目标、范围、AgentKit 架构摘要、各维度状态。
01-physical — 物理安全:客户机房部署假设。
02-network — 网络安全:Ingress TLS + NetworkPolicy + OTel mTLS。
03-host — 主机安全:非 root 容器 + distroless + 漏洞扫描。
04-application — 应用安全:SSO 多 IDP + RBAC 3 级 + 6 层终端安全 + OTel 审计。
05-data — 数据安全:PII 脱敏 + 国密 P1 参考 + PG 备份。
06-management — 管理安全:密钥轮换 runbook + break-glass 告警。

control-points.yaml — 控制点清单 + AgentKit 实现映射(已实现/P0/P1/待评估)。
This commit is contained in:
Chiguyong 2026-07-06 07:32:30 +08:00
parent af9cb9496c
commit de02ac8a92
8 changed files with 1816 additions and 0 deletions

View File

@ -0,0 +1,143 @@
# 等保三级认证文档 — 总览
## 1. 认证目标与范围
### 1.1 认证目标
本套文档用于 Fischer AgentKit以下简称 "AgentKit")通过 GB/T 22239-2019
《信息安全技术 网络安全等级保护基本要求》**第三级**(等保三级)测评准备。
目标:在政企 POC 采购关闭前完成认证 readiness使 AgentKit 作为应用系统
具备部署到等保三级信息系统的合规条件。
### 1.2 认证范围
AgentKit 作为一个**应用系统**纳入等保三级测评,覆盖:
- 应用软件本身FastAPI 后端 + Vue 前端 + Tauri 桌面客户端)
- 部署形态Kubernetes客户内网+ Redis + PostgreSQL含 pgvector
- 数据处理用户输入、LLM 调用、记忆存储、终端命令执行
**不在范围内**(由客户/平台侧负责):
- 物理机房环境(客户机房)
- K8s 宿主机操作系统内核加固
- 网络骨干设施(防火墙、入侵检测系统、堡垒机)
- PKI 证书签发机构CA
- HSM/KMS 硬件设备
AgentKit 文档中明确标注「依赖客户侧」与「AgentKit 实现」的边界,避免越界承诺。
### 1.3 文档结构
本套文档按 GB/T 22239-2019 三级要求 6 个维度组织:
| 文件 | 维度 | 主要内容 |
|------|------|----------|
| `00-overview.md` | — | 总览(本文档) |
| `01-physical.md` | 物理安全 | 部署假设(客户机房)、物理访问、环境监控、电力 |
| `02-network.md` | 网络安全 | 网络架构、边界防护Ingress TLS、访问控制NetworkPolicy、入侵防范、安全审计OTel |
| `03-host.md` | 主机安全 | 容器镜像安全、K8s node 基线、身份鉴别SA token、访问控制RBAC、安全审计、入侵防范 |
| `04-application.md` | 应用安全 | 身份鉴别SSO 多 IDP、访问控制RBAC 3 级 + 权限位、安全审计OTel + audit.py、通信完整性TLS + JWT、软件容错、资源控制 |
| `05-data.md` | 数据安全 | 数据完整性PG + pgvector、数据保密性PII 脱敏 + 国密 P1、备份恢复、剩余信息保护session revoke |
| `06-management.md` | 管理安全 | 密钥轮换 runbook、break-glass 告警、变更管理、应急响应、安全评估 |
| `control-points.yaml` | — | 控制点清单 + AgentKit 实现映射(已实现 / P0 / P1 / 待评估) |
## 2. AgentKit 架构摘要
### 2.1 技术栈
- **后端**Python 3.11+、FastAPI、Uvicorn、Pydantic v2、SQLAlchemy 2async
- **前端**Vue 3、TypeScript、Vite 5、Ant Design Vue 4、Pinia
- **桌面端**Tauri 2.xRust 外壳 + Python sidecar
- **基础设施**Redis总线/缓存/状态、PostgreSQL + pgvector情景记忆
- **可观测性**OpenTelemetryOTLP gRPC 导出U1 已强制依赖)
- **部署**Helm ChartK8s 内网部署U5
### 2.2 部署形态
```
客户内网 K8s 集群
├── Ingress (nginx, TLS 终止) ← 唯一对外入口
│ └── TLS 证书cert-manager 或手动)
├── AgentKit Pod (非 root, UID 1001)
│ ├── FastAPI serve (:8001) — API
│ └── FastAPI gui (:8002) — Web GUI
├── Redis (内部, requirepass)
├── PostgreSQL + pgvector (内部, 密码)
└── OTel Collector (内部, bearer token)
↑ OTLP gRPC (mTLS: 待评估)
```
密钥通过 Sealed Secrets 或 External Secrets Operator 注入(禁止明文
Kubernetes Secret + Git 提交KTD-4 / R2a。共 10 个 secret slot
每个含轮换周期90~365 天)。
### 2.3 关键安全子系统映射
| 子系统 | 模块 | 等保维度 |
|--------|------|----------|
| OTel 可观测性 | `src/agentkit/telemetry/` | 网络/主机/应用审计 |
| PII 脱敏 | `src/agentkit/llm/pii_filter.py` | 数据保密性 |
| SSO 多 IDP | `src/agentkit/server/auth/providers/`、`idp_registry.py` | 应用身份鉴别 |
| SCIM 2.0 | `src/agentkit/server/auth/scim/router.py` | 应用账户生命周期 |
| RBAC 审计 | `src/agentkit/server/auth/audit.py` | 应用安全审计 |
| 终端安全 6 层 | `src/agentkit/server/auth/terminal_security.py` | 应用访问控制 |
| RBAC 权限 | `src/agentkit/server/auth/permissions.py` | 应用访问控制 |
| JWT 会话 | `src/agentkit/server/auth/jwt_utils.py`、`denylist.py` | 应用身份鉴别 + 剩余信息保护 |
| 密码哈希 | `src/agentkit/server/auth/password.py` | 应用身份鉴别 |
| Helm 部署 | `deploy/helm/agentkit/` | 网络/主机/管理 |
| 密钥轮换 | `docs/deployment/key-rotation-runbook.md` | 管理安全 |
## 3. 各维度实现状态概览
下表汇总各维度控制点的实现状态。状态定义:
- **已实现**:代码/配置已落地,有对应文件可查
- **P0**:认证 readiness 必需,本次 POC 采购关闭前需补齐
- **P1**:下一阶段补齐,文档中标注为参考
- **待评估**:依赖客户侧或需进一步评估方案
| 维度 | 控制点数 | 已实现 | P0 | P1 | 待评估 |
|------|----------|--------|----|----|--------|
| 物理安全 | 6 | 0 | 0 | 0 | 6 |
| 网络安全 | 8 | 4 | 2 | 1 | 1 |
| 主机安全 | 7 | 4 | 2 | 0 | 1 |
| 应用安全 | 8 | 8 | 0 | 0 | 0 |
| 数据安全 | 8 | 6 | 1 | 1 | 0 |
| 管理安全 | 7 | 4 | 1 | 1 | 1 |
| **合计** | **44** | **26** | **6** | **3** | **9** |
> 应用安全是 AgentKit 自身责任范围,已全部实现。物理安全完全依赖客户机房,
> 故全部为「待评估」。网络/主机/数据/管理维度的 P0 项(共 6 个)是认证
> readiness 的关键补齐项,详见 `control-points.yaml`
>
> **P0 关键补齐项清单**
> - NET-03 NetworkPolicy 模板
> - NET-07 审计日志保留 180 天KTD-9
> - HST-03 容器日志标准化采集
> - HST-07 镜像漏洞扫描Trivy/CI 集成)
> - DAT-03 PostgreSQL 备份恢复 runbook
> - MGT-02 CI/CD 规范文档化
## 4. 与既有交付的引用关系
本套文档不重复实现细节,只映射到既有交付物:
| 既有交付 | 等保映射 | 引用文档 |
|----------|----------|----------|
| U1 OTeltelemetry/ | 应用/网络审计 | `02-network.md` §5、`04-application.md` §4 |
| U2 PII 脱敏pii_filter.py | 数据保密性 | `05-data.md` §2 |
| U3 DR-fixesbitable | 应用容错 | `04-application.md` §5 |
| U4 SSO/SCIM/Audit | 应用身份鉴别/审计 | `04-application.md` §1/§4、`06-management.md` §2 |
| U5 K8s Helm Chart | 网络/主机/管理 | `02-network.md`、`03-host.md`、`06-management.md` |
| R7a 终端安全 6 层 | 应用访问控制 | `04-application.md` §2 |
## 5. 文档使用说明
1. 测评机构按 `control-points.yaml` 逐条核对,每条含 `id` / `dimension` /
`title` / `requirement` / `implementation` / `status` / `references`
2. `references` 字段给出 AgentKit 代码文件绝对路径,使用 `file:///` 链接格式。
3. 状态为 P0 的控制点需在认证前补齐对应文件中标有「P0 补齐项」段落。
4. 状态为 P1 的控制点在文档中标注为「P1 参考」,不阻碍三级认证但需写入整改计划。
5. 状态为「待评估」的控制点依赖客户侧环境,需在客户机房测评时单独核对。

View File

@ -0,0 +1,99 @@
# 01 — 物理安全
> GB/T 22239-2019 第三级「物理和环境安全」控制点映射。
## 1. 维度说明
AgentKit 作为应用系统以容器形态部署在客户内网 Kubernetes 集群中,
**不拥有也不运维物理机房**。物理安全责任由客户机房运营方承担。
本维度文档的目的是:
1. 明确 AgentKit 部署对物理环境的**假设**(前置条件)。
2. 列出 AgentKit 自身在物理安全维度的**实现空缺**(全部为「待评估」)。
3. 在客户机房测评时,由客户方提供物理安全控制点证据,
AgentKit 侧仅提供「部署形态证明」Helm Chart / Pod 清单)。
## 2. GB/T 22239-2019 三级要求(简要)
| 控制点 ID | 要求摘要 |
|-----------|----------|
| PHY-01 | 物理访问控制:机房出入口配置电子门禁,记录进入人员和时间 |
| PHY-02 | 防盗窃和防破坏:主要设备设置防盗标识,机房设置监控系统 |
| PHY-03 | 防雷击:机房设置防雷保安器,接地电阻符合要求 |
| PHY-04 | 防火:机房设置火灾自动消防系统,检测报警器 |
| PHY-05 | 防水和防潮:机房安装水敏检测装置,防止水管安装 |
| PHY-06 | 防静电:机房采用防静电地板,设置静电消除器 |
## 3. AgentKit 实现映射
### 3.1 部署假设(前置条件)
AgentKit 容器化部署对物理环境的假设:
1. 客户机房满足 GB/T 22239-2019 三级物理安全全部要求。
2. K8s 宿主机位于受控机房内,物理访问由客户运营方管理。
3. 电力供应由机房提供(含 UPS / 后备发电机)。
4. 网络骨干防火墙、IDS、堡垒机由客户网络团队运维。
### 3.2 控制点状态
全部 6 个物理安全控制点状态均为 **待评估** —— 依赖客户机房测评时由客户方
提供证据。AgentKit 侧仅提供以下证明材料:
- 部署形态证明:[deploy/helm/agentkit/values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`podSecurityContext.runAsNonRoot: true``runAsUser: 1000`
- Pod 资源清单:[deploy/helm/agentkit/templates/deployment.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/deployment.yaml)
- 容器镜像基线:[Dockerfile](file:///Users/chiguyong/Code/Fischer-agentkit/Dockerfile)
(多阶段构建 + `USER appuser` 非 root 运行)
### 3.3 控制点详情
#### PHY-01 物理访问控制 — 待评估
- **要求**:机房出入口配置电子门禁,记录进入人员和时间。
- **AgentKit 实现**无物理访问控制责任。AgentKit 软件资产以镜像形式
存储在客户镜像仓库,物理访问由客户机房运营方控制。
- **客户侧需提供**:机房门禁系统记录、人员进出日志、访问审批流程。
#### PHY-02 防盗窃和防破坏 — 待评估
- **要求**:主要设备设置防盗标识,机房设置监控系统。
- **AgentKit 实现**无物理设备责任。K8s worker node 由客户运维。
- **客户侧需提供**:机房监控系统、设备资产清单。
#### PHY-03 防雷击 — 待评估
- **要求**:机房设置防雷保安器,接地电阻符合要求。
- **AgentKit 实现**:无防雷责任。
- **客户侧需提供**:防雷检测报告、接地电阻测试记录。
#### PHY-04 防火 — 待评估
- **要求**:机房设置火灾自动消防系统,检测报警器。
- **AgentKit 实现**:无消防责任。
- **客户侧需提供**:消防系统验收报告、定期检测记录。
#### PHY-05 防水和防潮 — 待评估
- **要求**:机房安装水敏检测装置,防止水管安装。
- **AgentKit 实现**:无防水责任。
- **客户侧需提供**:水敏检测装置部署记录、机房湿度监控。
#### PHY-06 防静电 — 待评估
- **要求**:机房采用防静电地板,设置静电消除器。
- **AgentKit 实现**:无防静电责任。
- **客户侧需提供**:防静电地板验收报告、静电消除器检测记录。
## 4. 测评建议
物理安全维度在 AgentKit 侧**无代码/配置可核对**,全部依赖客户机房测评。
建议在测评前与客户安全团队确认:
1. 客户机房是否已通过等保三级(或更高)测评。
2. 客户机房测评报告是否覆盖 AgentKit 部署区域。
3. 若客户机房未单独测评,需将 AgentKit 部署区域纳入本次测评范围。
AgentKit 侧提供的证明材料仅证明「软件部署形态合规」(非 root 容器、
资源受限、Helm Chart 标准化部署),不替代物理环境测评。

View File

@ -0,0 +1,197 @@
# 02 — 网络安全
> GB/T 22239-2019 第三级「网络和通信安全」控制点映射。
## 1. 维度说明
AgentKit 部署在客户内网 K8s 集群,网络安全的边界由 Ingress 控制,
内部东西向流量由 K8s 网络模型与待补齐的NetworkPolicy 控制。
AgentKit 自身实现:
- **已实现**Ingress TLS 终止、OTel 安全审计(日志/trace
Redis/PG 密码鉴权基础设施层、API 限流。
- **P0 补齐项**NetworkPolicy 模板(东西向流量隔离)、
审计日志保留策略180 天KTD-9
- **P1 参考**OTel exporter mTLS、网络入侵检测接入。
## 2. GB/T 22239-2019 三级要求(简要)
| 控制点 ID | 要求摘要 |
|-----------|----------|
| NET-01 | 网络架构:划分网络区域,避免单点故障 |
| NET-02 | 边界防护:边界实施访问控制和安全过滤 |
| NET-03 | 访问控制:网络层访问控制策略,最小权限 |
| NET-04 | 入侵防范:网络入侵检测,恶意流量检测 |
| NET-05 | 安全审计:网络审计日志,覆盖关键网络活动 |
| NET-06 | 恶意代码防范:网络边界恶意代码检测 |
| NET-07 | 安全审计日志保留:日志保留期满足合规要求 |
| NET-08 | 资源控制:会话与带宽限制,防止资源耗尽 |
## 3. AgentKit 实现映射
### 3.1 网络架构NET-01— 已实现
AgentKit K8s 部署采用单 Ingress 入口 + 内部 Service 架构:
```
外网/办公网 ── HTTPS ──> Ingress (nginx, TLS 终止)
AgentKit Service (ClusterIP)
AgentKit Pod (:8001 API, :8002 GUI)
┌─────────────┼─────────────┐
▼ ▼ ▼
Redis PostgreSQL OTel Collector
(ClusterIP) (ClusterIP) (ClusterIP)
```
- **Ingress 是唯一对外入口**[deploy/helm/agentkit/templates/ingress.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/ingress.yaml)
- **Service 类型为 ClusterIP**(不直接对外暴露):
[deploy/helm/agentkit/values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`service.type: ClusterIP`
- **API 与 GUI 走分离路径**`/api` → API Service`/` → GUI Service
### 3.2 边界防护NET-02— 已实现
Ingress 启用 TLS 终止,所有外网流量强制 HTTPS
```yaml
ingress:
enabled: true
className: nginx
tls:
enabled: true
secretName: agentkit-tls # 引用 secrets.tlsServerCert
```
- TLS 证书通过 cert-manager 自动续期或手动签发365 天轮换)。
- HTTP→HTTPS 跳转由 nginx ingress controller 默认配置提供
(客户侧 ingress controller 责任)。
- 证书私钥通过 Sealed Secret / External Secret 注入KTD-4 / R2a
**参考文件**
[deploy/helm/agentkit/templates/ingress.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/ingress.yaml)
[deploy/helm/agentkit/values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)`ingress` 段、`secrets.tlsServerCert` slot
### 3.3 访问控制 / NetworkPolicyNET-03— P0 补齐项
**当前状态P0**。Helm Chart 暂无 NetworkPolicy 模板,
Pod 间东西向流量默认全通K8s 默认网络模型)。
**P0 补齐计划**
1. 新增 `deploy/helm/agentkit/templates/networkpolicy.yaml`
2. 默认 deny-all按白名单放行
- Ingress → AgentKit Pod8001/8002
- AgentKit Pod → Redis6379
- AgentKit Pod → PostgreSQL5432
- AgentKit Pod → OTel Collector4317
3. 命名空间隔离AgentKit 独立 namespace跨 namespace 流量显式声明。
**当前缓解**Service 全部 ClusterIP不对外Redis/PG 由客户 K8s 集群
内部网络策略保护(客户侧责任)。
### 3.4 入侵防范NET-04— P1 参考
**当前状态P1**。AgentKit 自身不部署网络 IDS
依赖客户侧网络骨干的 IDS / IPS。
- API 层面:[RateLimitMiddleware](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py)
实现单进程滑动窗口限流Webhook 入站端点单独限流
[src/agentkit/server/routes/channels.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py))。
- 异常登录JWT 验证失败、SCIM token 校验失败返回 401
[scim/router.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py)
使用 `hmac.compare_digest` 恒定时间比较)。
**P1 补齐计划**:接入客户 SIEM将 AgentKit OTel 日志投递到客户
入侵检测平台,由 SIEM 做 abnormal pattern 检测。
### 3.5 安全审计NET-05— 已实现
AgentKit 通过 OpenTelemetryU1强制依赖实现网络活动审计
- **HTTP 请求 trace**FastAPI Instrumentor 自动埋点,每个请求生成 span
含 HTTP method/path/status/duration。
[src/agentkit/telemetry/setup.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/setup.py)
`FastAPIInstrumentor`
- **审计事件 span**RBAC 角色变更、deprovisioning 写入 OTel span event
[src/agentkit/server/auth/audit.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py))。
- **SCIM 推送失败告警**span event `scim.push.failure`
[scim/router.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py))。
- **终端命令审计**:每条终端命令写入 `terminal_audit_logs`
[terminal_security.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py))。
OTLP gRPC 导出到内部 collector
[values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`otel.endpoint: http://otel-collector:4317`)。
### 3.6 恶意代码防范NET-06— 待评估
**当前状态:待评估**。网络边界恶意代码检测由客户网络骨干的
防病毒网关 / 沙箱负责。AgentKit 不在网络边界位置。
AgentKit 侧的缓解:
- 容器镜像来自可信构建CI/CD不在运行时下载可执行文件。
- 终端命令执行受 6 层白名单 + 危险检测约束R7a
限制任意命令执行能力(详见 `04-application.md` §2
### 3.7 安全审计日志保留NET-07— P0 补齐项
**当前状态P0**。审计日志保留策略未在代码中强制实施:
- `auth_audit_log`SQLite`terminal_audit_logs` 表无自动清理 /
归档策略,依赖运维手动管理。
- OTel collector 侧的日志保留由客户可观测性平台配置AgentKit 不控制。
**P0 补齐计划**
1. 在 Helm values 增加 `audit.retentionDays: 180` 配置KTD-9
2. 实现审计日志归档 CronJob超过 180 天的记录导出到对象存储(客户侧)
并从主表清理。
3. OTel collector 配置 180 天保留策略(与客户可观测性团队协同)。
### 3.8 资源控制NET-08— 已实现
AgentKit 在应用层与容器层均实现资源控制:
- **容器层**Pod resources requests/limits
[values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`resources`CPU 250m~1000m / Memory 512Mi~2Gi
- **应用层**[RateLimiter](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py)
实现 IP 维度滑动窗口限流Webhook 入站端点独立限流
[channels.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py))。
- **会话超时**:终端 session 闲置 1800s 自动断开
[terminal_server.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/terminal_server.py)
`SESSION_IDLE_TIMEOUT = 1800`)。
- **JWT 短时效**access token 15min
[jwt_utils.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py)
`ACCESS_TOKEN_TTL`)。
## 4. OTel exporter mTLSP1 参考)
**当前状态P1**。OTel exporter 通过 bearer token 鉴权
[values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`secrets.otelExporterToken` slot未启用 mTLS。
Helm Chart 已预留 `secrets.mtlsClientCert` slot用于下游服务 mTLS
但 OTel exporter 侧的 mTLS 配置待补齐。
**P1 补齐计划**
1. 在 OTel SDK 初始化时配置 `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE` /
`OTEL_EXPORTER_OTLP_CLIENT_KEY` / `OTEL_EXPORTER_OTLP_CA_CERT` 环境变量。
2. OTel collector 侧启用 mTLS 服务端证书验证。
3. 复用 `secrets.mtlsClientCert` slot 注入客户端证书。
## 5. 测评建议
1. **NET-01 / NET-02 / NET-05 / NET-08**:直接展示 Helm Ingress + OTel +
限流配置即可。
2. **NET-03 / NET-07**P0 补齐项,需在测评前完成 NetworkPolicy 模板和
审计日志保留 CronJob。
3. **NET-04 / NET-06**:依赖客户侧网络骨干,由客户网络团队提供 IDS /
恶意代码检测证据。

View File

@ -0,0 +1,197 @@
# 03 — 主机安全
> GB/T 22239-2019 第三级「设备和计算安全」控制点映射。
> 本维度以**容器与 Pod**为「主机」单元AgentKit 不直接运维 K8s node
## 1. 维度说明
AgentKit 以容器形态运行在客户 K8s 集群。「主机安全」分为两层:
- **容器/Pod 层**AgentKit 责任):镜像安全、运行时安全上下文、
ServiceAccount、Pod 级 RBAC。
- **K8s node 层**客户责任宿主机操作系统内核加固、node 基线、
主机入侵检测HIDS
AgentKit 自身实现:
- **已实现**:非 root 容器、最小权限安全上下文capabilities drop ALL
ServiceAccount 隔离、容器级资源限制。
- **P0 补齐项**容器镜像漏洞扫描CI 集成 Trivy/Grype
Pod 安全审计日志采集标准化。
- **P1 参考**distroless 基础镜像。
## 2. GB/T 22239-2019 三级要求(简要)
| 控制点 ID | 要求摘要 |
|-----------|----------|
| HST-01 | 身份鉴别:设备/系统身份标识与鉴别 |
| HST-02 | 访问控制:操作系统/账户权限最小化,远程管理受控 |
| HST-03 | 安全审计:设备审计日志,覆盖系统管理活动 |
| HST-04 | 入侵防范:主机入侵检测,系统加固 |
| HST-05 | 恶意代码防范:主机防病毒,恶意代码检测 |
| HST-06 | 资源控制CPU/内存/磁盘限制,会话超时 |
| HST-07 | 镜像与补丁管理:系统补丁及时更新,镜像来源可信 |
## 3. AgentKit 实现映射
### 3.1 容器镜像安全HST-07— 部分已实现 / P0 补齐
#### 已实现
- **多阶段构建**builder + runner 两阶段,最终镜像不含构建工具链。
[Dockerfile](file:///Users/chiguyong/Code/Fischer-agentkit/Dockerfile)
- **非 root 用户**runner 阶段创建 `appuser`UID 1001 / GID 1001
`USER appuser` 强制非 root 运行。
- **基础镜像**`python:3.11-slim`(精简版,比 full 镜像减少攻击面)。
- **HEALTHCHECK**:内置健康检查
`/api/v1/health`30s 间隔)。
- **不写字节码**`PYTHONDONTWRITEBYTECODE=1`,减少磁盘 .pyc 残留。
#### P0 补齐项:镜像漏洞扫描
**当前状态P0**。CI 流水线未集成容器镜像漏洞扫描。
**P0 补齐计划**
1. CI 流水线增加 Trivy 扫描步骤:
```yaml
- name: Trivy scan
run: trivy image --severity HIGH,CRITICAL --exit-code 1 fischer-agentkit:${{ github.sha }}
```
2. Helm Chart 增加 `image.digest` 字段,部署时使用不可变 digest 而非 tag。
3. 镜像签名cosign— P1可选。
### 3.2 K8s node 安全基线HST-04 / HST-05— 待评估
**当前状态:待评估**。K8s 宿主机由客户运维AgentKit 不控制 node 操作系统。
客户侧需提供:
- node 操作系统加固基线CIS Benchmark for Kubernetes / 操作系统)。
- 主机入侵检测HIDS如 Falco / OSSEC
- 主机防病毒(如客户机房要求)。
AgentKit 侧的缓解:
- Pod `securityContext` 强制非 root + drop ALL capabilities
[values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`podSecurityContext` / `securityContext` 段),即使 node 被攻破,
容器逃逸到 root 的难度提升。
### 3.3 身份鉴别 / ServiceAccountHST-01— 已实现
AgentKit Pod 使用专用 ServiceAccount不共享 default SA
- **ServiceAccount 创建**
[deploy/helm/agentkit/templates/serviceaccount.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/serviceaccount.yaml)
- **values 配置**
```yaml
serviceAccount:
create: true
name: "" # 留空则用 fullname专用 SA
annotations: {} # 云厂商 workload identity 注解
```
- **Workload Identity**(可选):`workloadIdentity.enabled: true` 时
注入 projected SA token用于访问云 KMS / STS
[values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`workloadIdentity` 段)。
Pod 内应用层身份鉴别见 `04-application.md` §1SSO + JWT
### 3.4 访问控制 / Pod 级 RBACHST-02— 已实现
- **capabilities drop ALL**
```yaml
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
```
([values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml) `securityContext` 段)
- **runAsNonRoot 强制**`podSecurityContext.runAsNonRoot: true`
K8s admission 拒绝非 root Pod。
- **readOnlyRootFilesystem**:当前为 `false`agentkit 需写临时文件用于缓存/日志),
通过 `emptyDir` 挂载 `/tmp` 实现写入隔离
[deployment.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/deployment.yaml)
`volumes.tmp`)。
- **privileged: false**(默认,未启用特权模式)。
应用层 RBACmember/operator/admin + 9 权限位)见
`04-application.md` §2。
### 3.5 安全审计 / 容器日志HST-03— 已实现 + P0 补齐
#### 已实现
- **stdout/stderr 标准输出**AgentKit 日志全部输出到 stdout
由 K8s 日志采集(如 Loki / Fluent Bit收集。
- **OTel trace**:每个 Pod 的请求 trace 通过 OTLP 导出到 collector
U1强制依赖
- **审计事件**RBAC 变更、deprovisioning、SCIM 操作写入 `auth_audit_log`
+ OTel span event[audit.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py))。
- **终端命令审计**:每条终端命令 + 决策executed/confirmed/blocked/denied
写入 `terminal_audit_logs`
[terminal_security.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py))。
#### P0 补齐项:审计日志标准化采集
**当前状态P0**。容器日志采集到客户日志平台的链路未标准化。
**P0 补齐计划**
1. Helm Chart 增加 `logging.fluentBitSidecar` 选项(可选 sidecar 采集)。
2. 审计日志 JSON 化structured logging便于 SIEM 解析。
3. 与 `02-network.md` §3.7 的 180 天保留策略协同落地。
### 3.6 入侵防范HST-04— 已实现(容器层)
容器层入侵防范已实现:
- **非 root + drop ALL capabilities**:限制容器内可执行的系统调用。
- **allowPrivilegeEscalation: false**:阻止子进程提权。
- **资源 limits**CPU 1000m / Memory 2Gi 上限,防止容器失控耗尽 node 资源
[values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`resources.limits`)。
- **Liveness/Readiness 探针**:故障 Pod 自动重启
[deployment.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/deployment.yaml)
`livenessProbe` / `readinessProbe`)。
node 层入侵检测HIDS见 §3.2,依赖客户侧。
### 3.7 资源控制HST-06— 已实现
- **Pod resources**
```yaml
resources:
requests: { cpu: 250m, memory: 512Mi }
limits: { cpu: 1000m, memory: 2Gi }
```
- **应用层限流**[RateLimiter](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py)
IP 维度滑动窗口。
- **会话超时**:终端 session 1800s 闲置断开
[terminal_server.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/terminal_server.py))。
- **JWT 短时效**access 15min / refresh 7d
[jwt_utils.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py))。
## 4. distroless 基础镜像P1 参考)
**当前状态P1**。当前基础镜像为 `python:3.11-slim`,含 shell + 包管理器,
攻击面大于 distroless。
**P1 升级路径**
1. 切换到 `gcr.io/distroless/python3-debian12` 作为 runner 基础镜像。
2. 需调整distroless 无 shellHEALTHCHECK 的 `python -c` 命令需改为
HTTP 探针K8s livenessProbe httpGet已支持
3. 多阶段构建的 builder 阶段保持 `python:3.11-slim`(构建工具链需要)。
distroless 不阻碍等保三级认证,但作为安全增强项写入整改计划。
## 5. 测评建议
1. **HST-01 / HST-02 / HST-06**:直接展示 ServiceAccount + securityContext
+ resources 配置即可。
2. **HST-03**:已实现部分展示 audit.py + terminal_security.py
P0 补齐日志标准化采集。
3. **HST-07**P0 补齐镜像漏洞扫描后展示 Trivy 扫描报告。
4. **HST-04 / HST-05**容器层已实现node 层由客户提供 HIDS 证据。

View File

@ -0,0 +1,257 @@
# 04 — 应用安全
> GB/T 22239-2019 第三级「应用和数据安全 — 应用部分」控制点映射。
## 1. 维度说明
应用安全是 AgentKit **自身核心责任范围**,全部 8 个控制点已实现。
本维度文档引用 U4 SSO 多 IDP / SCIM、U1 OTel 审计、R7a 终端安全 6 层、
RBAC 3 级权限、JWT 会话等既有实现,不重复代码细节。
## 2. GB/T 22239-2019 三级要求(简要)
| 控制点 ID | 要求摘要 |
|-----------|----------|
| APP-01 | 身份鉴别:用户身份标识与鉴别,口令复杂度,登录失败处理 |
| APP-02 | 访问控制:基于角色的访问控制,最小权限,默认拒绝 |
| APP-03 | 安全审计:应用审计日志,覆盖用户操作关键事件 |
| APP-04 | 通信完整性:传输完整性保护,防篡改 |
| APP-05 | 软件容错:错误处理,故障隔离,降级机制 |
| APP-06 | 资源控制:会话并发控制,超时自动断开 |
| APP-07 | 应用账户生命周期:开户/变更/销户审计SCIM 自动化 |
| APP-08 | 代码安全:输入验证,输出编码,依赖漏洞管理 |
## 3. AgentKit 实现映射
### 3.1 身份鉴别APP-01— 已实现
#### 多 IDP 单点登录U4 SSO
AgentKit 支持 OIDC + SAML 双协议并存的多 IDP 信任边界:
- **OIDC 适配器**authlib redirect flow + JIT 用户创建):
[src/agentkit/server/auth/providers/oidc.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/oidc.py)
- **SAML 2.0 适配器**python3-saml / OneLogin ACS
[src/agentkit/server/auth/providers/saml.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/saml.py)
- **多 IDP 注册表**(热证书轮换 + 单 IDP 故障隔离R1a 按 sub 关联
禁止邮箱合并):
[src/agentkit/server/auth/idp_registry.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/idp_registry.py)
支持的 IDP 类型:飞书 / Azure AD / 阿里云 IDaaS 等任意 OIDC/SAML 合规 IDP。
#### 本地密码认证
- **bcrypt 哈希**rounds=12OWASP 推荐值)
[src/agentkit/server/auth/password.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/password.py)
- **JWT 会话**HS256 签名access 15min + refresh 7d30d 记住我)
[src/agentkit/server/auth/jwt_utils.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py)
- V2 claims 含 `sid`session id+ `jti`per-token unique id
支持服务端 session 撤销。
- **Refresh token 轮换 + reuse 检测**:旧 token 进入 denylist 30s 窗口,
reuse 触发撤销该用户全部 session
[src/agentkit/server/auth/denylist.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/denylist.py)
- **登录失败处理**JWT 验证失败返回 401refresh token reuse 触发
全 session 撤销(强制重新登录)。
- **OAuth state CSRF 防护**OIDC state 缓存 TTL 5min一次性消费
[oidc.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/oidc.py) `_StateCache`)。
### 3.2 访问控制 / RBAC 3 级APP-02— 已实现
#### 3 级 RBAC + 9 权限位
[src/agentkit/server/auth/permissions.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/permissions.py)
| 角色 | 权限 |
|------|------|
| `member` | CHAT / KB_QUERY / WORKFLOW_EXECUTE |
| `operator` | member 全部 + KB_WRITE + TERMINAL_LOCAL_USE + TERMINAL_WHITELIST_MANAGE |
| `admin` | operator 全部 + TERMINAL_SERVER_USE + USER_MANAGE + SYSTEM_CONFIG |
权限位作为稳定字符串标识符用于 JWT payload + 前端 store + 审计日志,
不重命名既有值(向前兼容)。
#### 终端安全 6 层白名单R7a
[src/agentkit/server/auth/terminal_security.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py)
评估优先级(最高→最低):
1. **Blocklist**admin 管理,永远拒绝)
2. **Built-in safe whitelist**`_SAFE_COMMAND_PREFIXES`
3. **Global whitelist**admin 管理DB 持久化)
4. **User whitelist**per-userDB 持久化 + 内存缓存)
5. **Session whitelist**per-session仅内存
6. **Danger detection**`_is_dangerous`,需确认)
**关键安全特性**shell 操作符(`&&`、`;`、`|`、`$()`、backticks、`>`、`<`、
换行)**永远绕过所有 whitelist 层**,强制走 danger detection —
即使 `git push` 在白名单中,`git push && rm -rf /` 仍需确认。
#### 终端双层授权
终端端点要求 RBAC 角色 + 个人授权标志双重校验:
- `is_terminal_authorized` — 本地终端client sidecar
- `is_server_terminal_authorized` — 服务端终端server PTY
允许 admin 按用户授权终端而不改变其角色。
#### SCIM token 恒定时间比较
SCIM bearer token 使用 `hmac.compare_digest` 恒定时间比较防时序攻击:
[src/agentkit/server/auth/scim/router.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py)
`_verify_scim_token`)。
### 3.3 安全审计APP-03— 已实现
#### OTel 审计通道U1 强制依赖)
[src/agentkit/server/auth/audit.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py)
审计事件类型:
- `role_change` — RBAC 角色变更actor/target/role_before/role_after
- `deprovision` — 手动 deprovisioning`break_glass` 标记)
每条记录含 actor/target/reason/source/timestamp写入 `auth_audit_log`
+ 发 OTel span eventOTel 不可用时降级为 SQLite + 日志)。
审计来源(`source` 字段):
- `manual` — 手动操作
- `scim` — SCIM 自动化
- `cron_reconciliation` — 定时对账
- `break_glass` — 应急通道(高权限账户)
#### SCIM 推送失败告警
SCIM push 失败实时告警:日志 error + OTel span event `scim.push.failure`
[scim/router.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py)
`_alert_scim_failure`)。
#### 终端命令审计
每条终端命令 + 决策结果executed/confirmed/rejected/blocked/denied
+ cwd + exit_code 写入 `terminal_audit_logs`
[terminal_security.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py)
`write_audit_log`)。
#### OTel 指标
U1 OTel 暴露以下审计相关指标
[src/agentkit/telemetry/metrics.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/metrics.py)
- `agent.request.total` / `agent.execution.duration`
- `gen_ai.usage.tokens` / `tool.call.duration`
- `prompt_cache.hit` / `prompt_cache.miss`
- `pii_filter.coverage` / `pii_filter.redacted`U2 PII 脱敏覆盖率)
### 3.4 通信完整性APP-04— 已实现
- **传输层 TLS**Ingress TLS 终止(详见 `02-network.md` §3.2
客户端→Ingress 全程 HTTPS。
- **JWT 签名完整性**HS256 签名,任何 payload 字段篡改导致签名校验失败
[jwt_utils.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py)
`verify_token`)。
- **mTLS 客户端证书**下游服务Helm Chart 预留 `secrets.mtlsClientCert`
slot用于与 KMS/HSM、内部 API 双向 TLS详见 `06-management.md`)。
- **Webhook 签名校验**:入站 Webhook fail-closed签名校验失败返回 401
[channels.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py))。
### 3.5 软件容错APP-05— 已实现
- **LLM 网关 fallback**:多 provider fallback 链
[src/agentkit/llm/gateway.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/gateway.py))。
- **OTel 运行时容错**OTel exporter 连接失败时降级为 NoOpTracer
应用启动不崩溃([tracer.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/tracer.py)
`init_telemetry`)。
- **PII 脱敏 fail-closed**:脱敏异常时拒绝发送至 LLM不降级到原文
[pii_filter.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py)
`fail_closed=True` 默认)。
- **专家团队失败回退**:所有阶段失败时回退到单 agent 模式
(详见 AGENTS.md「专家团队模式」
- **DR-fixesU3**bitable 字段校验DR-1、LastViewDeletionErrorDR-4
工具调用容错DR-5
- [src/agentkit/bitable/repository.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/bitable/repository.py)
- [src/agentkit/bitable/service.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/bitable/service.py)
- [src/agentkit/tools/bitable_tool.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/tools/bitable_tool.py)
### 3.6 资源控制APP-06— 已实现
- **IP 限流**[RateLimiter](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py)
滑动窗口(`max_requests` / `window_seconds` 可配置)。
- **Webhook 独立限流**[channels.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py)
入站端点单独限流 + nonce dedup。
- **会话超时**
- 终端 session 闲置 1800s 自动断开
[terminal_server.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/terminal_server.py))。
- JWT access token 15min 过期强制重新认证。
- **专家名称正则校验**`_EXPERT_NAME_RE = re.compile(r"^[a-zA-Z0-9_-]{1,64}$")`
防止注入(项目规则)。
- **HandoffTransport 有界队列**`maxsize=1024`,关闭使用 sentinel 模式
防止无界内存增长(项目规则)。
### 3.7 应用账户生命周期 / SCIMAPP-07— 已实现
#### SCIM 2.0 自动化
[src/agentkit/server/auth/scim/router.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py)
端点:
- `POST /scim/v2/Users` — 创建用户(随机密码,不可本地登录)
- `PATCH /scim/v2/Users/{id}` — 禁用active=false/ 更新字段
- `GET /scim/v2/Users` — 列表 / 过滤(`userName eq` / `active eq`
Bearer token 认证(独立于 JWT恒定时间比较
#### Deprovisioning账户销户
管理员通过 `/admin/users/{id}/deprovision` 强制销户:
1. 禁用本地用户账户(`is_active = 0`
2. 撤销该用户所有活跃 session
3. 记录审计actor/target/reason/source/timestamp+ OTel
4. `break_glass=True` 时记录 `source=break_glass`(应急通道标记)
详见 `06-management.md` §2 break-glass 告警流程。
#### JIT 用户创建R1a
OIDC/SAML 首次登录 JIT 创建本地用户 + `user_idp_links` 行,
`(idp_name, sub)` 严格关联,**禁止邮箱合并**已存在账户
[oidc.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/oidc.py)
`_find_or_create_user`)。
### 3.8 代码安全APP-08— 已实现
- **输入验证**:所有 API 入口使用 Pydantic v2 模型校验
`model_config = ConfigDict(extra="forbid")` 拒绝额外字段)。
- SCIM 模型:[src/agentkit/server/auth/scim/models.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/models.py)
- IDP 配置:[src/agentkit/server/auth/idp_registry.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/idp_registry.py)
`OIDCConfig` / `SAMLConfig``extra="forbid"`
- **禁止 `any` 类型**:项目规则强制使用 Pydantic 模型或 `Unknown`
AGENTS.md
- **专家名称正则校验**`_EXPERT_NAME_RE` 防 SQL/命令注入。
- **API Key 恒定时间比较**`hmac.compare_digest`(项目规则)。
- **Ruff lint + format**`ruff check src/ && ruff format src/`(目标 py311
作为代码质量基线。
- **依赖管理**`pyproject.toml` 锁定精确版本,`pip install -e ".[dev]"`
可复现环境。
- **终端命令安全**6 层白名单 + shell 操作符检测
(详见 §3.2),防止命令注入链。
## 4. 测评建议
应用安全维度全部控制点已实现,测评时直接展示对应代码文件即可:
1. **APP-01**:展示 oidc.py / saml.py / jwt_utils.py / password.py。
2. **APP-02**:展示 permissions.py / terminal_security.py + RBAC 矩阵表。
3. **APP-03**:展示 audit.py + 终端审计日志 + OTel 指标清单。
4. **APP-04**:展示 ingress.yaml TLS + jwt_utils.py 签名校验 + channels.py
Webhook 签名。
5. **APP-05**:展示 gateway.py fallback + pii_filter.py fail-closed +
DR-fixes 引用。
6. **APP-06**:展示 middleware.py 限流 + terminal_server.py 超时。
7. **APP-07**:展示 scim/router.py + deprovision 端点 + JIT 创建逻辑。
8. **APP-08**:展示 Pydantic 模型校验 + Ruff 配置 + 终端命令安全。

View File

@ -0,0 +1,217 @@
# 05 — 数据安全
> GB/T 22239-2019 第三级「应用和数据安全 — 数据部分」控制点映射。
## 1. 维度说明
AgentKit 处理的数据类型:
- **用户输入**:聊天消息、终端命令、工作流配置
- **LLM 调用**prompt + completion含潜在 PII
- **持久化数据**:用户账户、会话、记忆(情景/语义/工作)
- **审计数据**RBAC 变更、终端命令、SCIM 操作
AgentKit 自身实现:
- **已实现**PII 脱敏U2 fail-closed + hash 审计)、
session 撤销剩余信息保护、PG + pgvector 完整性、
审计数据 hash 化。
- **P0 补齐项**PostgreSQL 备份恢复 runbook。
- **P1 参考**国密加密R11aSM4/SM2 替代 AES/RSA
## 2. GB/T 22239-2019 三级要求(简要)
| 控制点 ID | 要求摘要 |
|-----------|----------|
| DAT-01 | 数据完整性:数据传输/存储完整性,校验机制 |
| DAT-02 | 数据保密性:敏感数据加密存储/传输,密钥管理 |
| DAT-03 | 数据备份与恢复:重要数据定期备份,恢复演练 |
| DAT-04 | 剩余信息保护:鉴别信息/文件/内存空间释放前清理 |
| DAT-05 | 个人信息保护PII 采集/处理/传输最小化与脱敏 |
| DAT-06 | 数据采集与分类分级:按敏感度分级保护 |
| DAT-07 | 数据销毁:数据销毁审计,不可恢复 |
| DAT-08 | 国密算法合规R11a政企客户要求敏感数据加密使用国密算法 |
## 3. AgentKit 实现映射
### 3.1 数据完整性DAT-01— 已实现
- **PostgreSQL + pgvector**:主数据库使用 PostgreSQL事务 ACID 保证),
pgvector 扩展存储向量记忆数据。
- 连接串:[values.yaml](file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml)
`postgres.url: postgresql+asyncpg://agentkit@postgres:5432/agentkit`
- SQLAlchemy 2 async ORM 提供应用层事务管理。
- **JWT 签名完整性**HS256 签名防篡改(详见 `04-application.md` §3.4)。
- **Webhook 签名校验**fail-closed 防篡改
[channels.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py))。
- **Pydantic 模型校验**:所有 API 入口 `extra="forbid"` 拒绝未知字段,
防止数据注入。
### 3.2 数据保密性 / PII 脱敏DAT-02 / DAT-05— 已实现U2
#### PII 脱敏 hook
[src/agentkit/llm/pii_filter.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py)
设计要点:
- **正则版(默认)**:识别手机号 / 邮箱 / 身份证 / 银行卡,
替换为 `[REDACTED_TYPE:hash8]`
- **ner_hook可选**:客户内网 NER 模型LAC/HanLP
`module:func` 路径动态 import优先于正则版。
- **fail-closed**:任何异常时拒绝发送至 LLM`raise PIIFilterError`
**不降级到原文发送**
- **hash 审计**:脱敏前后记录 sha256 前 8 位(仅 hash不含原文
用于审计追溯。
#### PII 类型与正则
| PII 类型 | 正则模式 | 替换格式 |
|----------|----------|----------|
| 身份证 | 18 位(含校验位 X | `[REDACTED_ID_CARD:hash8]` |
| 手机号 | `1[3-9]\d{9}` | `[REDACTED_PHONE:hash8]` |
| 邮箱 | 标准邮箱正则 | `[REDACTED_EMAIL:hash8]` |
| 银行卡 | 16-19 位数字 | `[REDACTED_BANK_CARD:hash8]` |
> 身份证正则优先于手机号正则匹配,避免身份证号内 11 位数字子串被
> 手机号正则误匹配。
#### OTel 脱敏指标
- `pii_filter.coverage` — 脱敏扫描覆盖率status: success/failed_closed/fallback_regex
- `pii_filter.redacted` — 脱敏实体计数
[metrics.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/metrics.py)
#### fail-closed 策略
```python
try:
result = _redact(text, ner_hook=ner_hook)
...
except Exception as e:
if fail_closed:
raise PIIFilterError(f"PII filter failed (fail-closed): {e}") from e
# fail-open非默认降级到正则版重试
```
生产环境默认 `fail_closed=True`,宁可拒绝服务也不泄露 PII。
### 3.3 国密加密R11a— P1 参考
**当前状态P1**。AgentKit 当前使用:
- **传输加密**TLSIngress 终止),算法套件由 nginx ingress controller
默认配置(含 AES-GCM 等国际算法)。
- **密码哈希**bcrypt国际算法
- **JWT 签名**HS256HMAC-SHA256国际算法
- **PII hash**SHA-256国际算法
**未使用国密算法**SM2/SM3/SM4/SM9
**P1 补齐计划**R11a
1. **JWT 签名**:替换 HS256 → SM2-HMAC 或国密 JWT 库(如 `gmssl`)。
2. **密码哈希**:评估 SM3 替代 bcrypt需兼顾兼容性可能双算法并行
3. **PII hash**SHA-256 → SM3。
4. **TLS**:启用国密 TLS 套件(需 nginx ingress controller + 国密证书)。
5. **数据加密**PG 字段级加密(透明数据加密 TDE 或应用层 SM4
**注**:国密算法**不阻碍等保三级认证**(三级要求「加密」而非「国密」),
但政企客户常要求国密合规,故列入 P1 整改计划。
### 3.4 数据备份与恢复DAT-03— P0 补齐项
**当前状态P0**。AgentKit 自身未提供 PG 备份 runbook
依赖客户侧数据库运维。
**AgentKit 侧已实现**
- PostgreSQL 持久化pgvector 扩展,事务日志 WAL 默认开启)。
- Redis 配置 AOF/RDB由客户 Redis 运维决定)。
**P0 补齐计划**
1. 新增 `docs/deployment/pg-backup-runbook.md`,包含:
- 全量备份策略(每日 `pg_dump`,保留 7 天)
- WAL 归档连续归档PITR 恢复)
- 恢复演练流程(每季度执行一次恢复测试)
- 备份加密(备份文件 SM4/AES-256 加密,密钥由 KMS 托管)
2. Helm Chart 增加 `backup` 段,可选部署 pg-backup sidecar / CronJob。
3. pgvector 向量数据备份纳入 `pg_dump`(已原生支持)。
### 3.5 剩余信息保护DAT-04— 已实现
#### Session 撤销
JWT V2 token 携带 `sid`session id+ `jti`access token 唯一 id
中间件校验 session 是否被服务端撤销
[jwt_utils.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py)
- 销户时撤销该用户全部 session
[auth.py deprovision](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/auth.py))。
- Refresh token 轮换:旧 token 进入 denylist 30s 窗口
[denylist.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/denylist.py))。
- Token reuse 检测reuse 触发撤销该用户全部 session强制重新登录
#### Refresh token hash 化
denylist 不存储明文 refresh token存储其 SHA-256 hash
[denylist.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/denylist.py)
`hash_token`),减少敏感信息驻留内存。
#### JIT 用户随机密码
OIDC/SAML JIT 创建的本地用户使用随机密码
`hash_password(secrets.token_urlsafe(32))`),不可用于本地登录,
避免 SSO 用户的本地密码驻留
[oidc.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/oidc.py)
`_find_or_create_user`)。
#### SCIM 用户随机密码
SCIM 创建的用户同样使用随机密码
[scim/router.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py)
`create_user`)。
### 3.6 数据采集与分类分级DAT-06— 已实现
- **PII 分类**pii_filter.py 按 PII 类型分级
id_card / phone / email / bank_card不同类型采用相同脱敏策略
但审计 hash 独立记录。
- **记忆分层**4 层记忆架构SOUL/USER/MEMORY/DAILY按敏感度存储
SOUL 最敏感DAILY 最不敏感),详见 AGENTS.md。
- **数据最小化**PII 脱敏后原文不落盘(仅 hash 用于审计),
LLM prompt 中不含原文 PII
[pii_filter.py](file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py))。
### 3.7 数据销毁DAT-07— 已实现
- **账户销户**deprovision 禁用账户(`is_active = 0`+ 撤销全部 session。
- **审计保留**销户操作本身记录审计日志不可删除admin 不可删除审计记录,
审计表无 delete 接口)。
- **PII 销毁**:脱敏后 PII 原文不落盘(内存中处理后即替换),
无需专门销毁流程。
- **PG 数据销毁**:客户侧 PG 运维负责(如需彻底删除用户数据,
由 admin 发起 SQL 操作,记录审计)。
## 4. 测评建议
1. **DAT-01 / DAT-04 / DAT-06 / DAT-07**:直接展示 PG 配置 + jwt_utils.py
+ denylist.py + pii_filter.py 即可。
2. **DAT-02 / DAT-05**:展示 pii_filter.py fail-closed 流程 + OTel 脱敏指标。
3. **DAT-03**P0 补齐项,需在测评前完成 pg-backup-runbook.md。
4. **国密**P1 参考,不阻碍三级认证,但写入整改计划。
## 5. PII 脱敏边界(重要说明)
AgentKit PII 脱敏的**边界**
1. **覆盖范围**:仅脱敏发送至 LLM 的 prompt**不脱敏**
- 用户本地终端命令(终端命令有自己的审计)
- 用户上传的文档原文(文档处理模块不经过 pii_filter
- bitable 数据(结构化数据,由客户自行控制)
2. **ner_hook 依赖客户**:正则版覆盖中国常见 PII手机/邮箱/身份证/银行卡),
复杂 PII地址/姓名/组织)需客户接入内网 NER 模型。
3. **不替代 DLP**AgentKit PII 脱敏是应用层防护,不替代客户侧
DLP数据防泄漏系统。

View File

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

View File

@ -0,0 +1,491 @@
# Fischer AgentKit — 等保三级控制点清单
#
# 按 GB/T 22239-2019 第三级 6 维度组织。每个控制点含:
# id — 控制点唯一标识DIM-NN
# dimension — 维度physical / network / host / application / data / management
# title — 控制点名称
# requirement — GB/T 22239-2019 三级要求摘要
# implementation — AgentKit 实现映射(含状态说明)
# status — implemented / p0 / p1 / 待评估
# implemented = 已实现,代码/配置已落地
# p0 = 认证 readiness 必需POC 采购关闭前补齐
# p1 = 下一阶段补齐,写入整改计划
# 待评估 = 依赖客户侧或需进一步评估
# references — AgentKit 代码/配置文件绝对路径file:/// 链接)
#
# 总计 44 个控制点implemented=26, p0=6, p1=3, 待评估=9
# =============================================================================
# 1. 物理安全6 个,全部待评估 — 依赖客户机房)
# =============================================================================
- id: "PHY-01"
dimension: physical
title: "物理访问控制"
requirement: "机房出入口配置电子门禁,记录进入人员和时间"
implementation: "AgentKit 不运维物理机房。K8s 部署在客户内网物理访问由客户机房运营方控制。AgentKit 仅提供部署形态证明(非 root 容器 + Helm Chart。"
status: "待评估"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/deployment.yaml"
- id: "PHY-02"
dimension: physical
title: "防盗窃和防破坏"
requirement: "主要设备设置防盗标识,机房设置监控系统"
implementation: "无物理设备责任。K8s worker node 由客户运维,机房监控由客户方提供。"
status: "待评估"
references: []
- id: "PHY-03"
dimension: physical
title: "防雷击"
requirement: "机房设置防雷保安器,接地电阻符合要求"
implementation: "无防雷责任。依赖客户机房防雷设施。"
status: "待评估"
references: []
- id: "PHY-04"
dimension: physical
title: "防火"
requirement: "机房设置火灾自动消防系统,检测报警器"
implementation: "无消防责任。依赖客户机房消防系统。"
status: "待评估"
references: []
- id: "PHY-05"
dimension: physical
title: "防水和防潮"
requirement: "机房安装水敏检测装置,防止水管安装"
implementation: "无防水责任。依赖客户机房防水设施。"
status: "待评估"
references: []
- id: "PHY-06"
dimension: physical
title: "防静电"
requirement: "机房采用防静电地板,设置静电消除器"
implementation: "无防静电责任。依赖客户机房防静电设施。"
status: "待评估"
references: []
# =============================================================================
# 2. 网络安全8 个)
# =============================================================================
- id: "NET-01"
dimension: network
title: "网络架构"
requirement: "划分网络区域,避免单点故障"
implementation: "单 Ingress 入口 + ClusterIP Service 架构。Ingress 是唯一对外入口Redis/PG/OTel 全部 ClusterIP 内部访问。API 与 GUI 走分离路径(/api 与 /)。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/ingress.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- id: "NET-02"
dimension: network
title: "边界防护Ingress TLS"
requirement: "边界实施访问控制和安全过滤"
implementation: "Ingress 启用 TLS 终止,所有外网流量强制 HTTPS。TLS 证书通过 cert-manager 自动续期或手动签发365 天轮换),私钥通过 Sealed Secret / External Secret 注入KTD-4 / R2a。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/ingress.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- id: "NET-03"
dimension: network
title: "访问控制NetworkPolicy"
requirement: "网络层访问控制策略,最小权限"
implementation: "P0 补齐项。Helm Chart 暂无 NetworkPolicy 模板Pod 间东西向流量默认全通。计划新增 networkpolicy.yaml默认 deny-all + 白名单放行Ingress→Pod, Pod→Redis/PG/OTel。当前缓解Service 全部 ClusterIPRedis/PG 由客户 K8s 网络策略保护。"
status: "p0"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/ingress.yaml"
- id: "NET-04"
dimension: network
title: "入侵防范"
requirement: "网络入侵检测,恶意流量检测"
implementation: "应用层已实现 RateLimiter 滑动窗口限流 + Webhook 独立限流 + JWT/SCIM token 恒定时间比较。网络层 IDS/IPS 依赖客户骨干网络。P1接入客户 SIEM将 OTel 日志投递到客户入侵检测平台。"
status: "p1"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py"
- id: "NET-05"
dimension: network
title: "安全审计OTel"
requirement: "网络审计日志,覆盖关键网络活动"
implementation: "OpenTelemetryU1 强制依赖实现网络活动审计FastAPI Instrumentor 自动埋点每个 HTTP 请求 spanRBAC 变更/SCIM 失败/终端命令写入审计 + OTel span eventOTLP gRPC 导出到内部 collector。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/setup.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/metrics.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- id: "NET-06"
dimension: network
title: "恶意代码防范"
requirement: "网络边界恶意代码检测"
implementation: "AgentKit 不在网络边界位置,恶意代码检测由客户网络骨干(防病毒网关/沙箱负责。AgentKit 侧缓解:容器镜像来自可信 CI 构建,不在运行时下载可执行文件;终端命令受 6 层白名单 + 危险检测约束。"
status: "待评估"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py"
- id: "NET-07"
dimension: network
title: "安全审计日志保留180 天)"
requirement: "日志保留期满足合规要求≥180 天)"
implementation: "P0 补齐项。auth_audit_log 与 terminal_audit_logs 表无自动清理/归档策略。计划Helm values 增加 audit.retentionDays=180KTD-9实现归档 CronJob 导出超过 180 天记录到对象存储并清理主表OTel collector 配置 180 天保留策略。"
status: "p0"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py"
- id: "NET-08"
dimension: network
title: "资源控制(会话/带宽)"
requirement: "会话与带宽限制,防止资源耗尽"
implementation: "容器层 Pod resources requests/limitsCPU 250m~1000m / Mem 512Mi~2Gi应用层 RateLimiter IP 滑动窗口 + Webhook 独立限流;终端 session 1800s 闲置断开JWT access 15min 强制重新认证。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/terminal_server.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py"
# =============================================================================
# 3. 主机安全7 个,以容器/Pod 为单元)
# =============================================================================
- id: "HST-01"
dimension: host
title: "身份鉴别ServiceAccount"
requirement: "设备/系统身份标识与鉴别"
implementation: "AgentKit Pod 使用专用 ServiceAccount不共享 default SAHelm Chart 自动创建。可选 workload identity 注入 projected SA token 用于访问云 KMS/STS。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/serviceaccount.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- id: "HST-02"
dimension: host
title: "访问控制Pod 安全上下文)"
requirement: "操作系统/账户权限最小化,远程管理受控"
implementation: "podSecurityContext.runAsNonRoot=trueUID/GID 1000securityContext.allowPrivilegeEscalation=false + capabilities.drop=[ALL]readOnlyRootFilesystem=false需写临时文件通过 emptyDir 挂载 /tmp 隔离);未启用特权模式。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/deployment.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/Dockerfile"
- id: "HST-03"
dimension: host
title: "安全审计(容器日志标准化采集)"
requirement: "设备审计日志,覆盖系统管理活动"
implementation: "已实现基础审计stdout/stderr 由 K8s 采集 + OTel trace 导出 + auth_audit_log 表 + terminal_audit_logs 表 + OTel span event。P0 补齐:容器日志到客户日志平台的标准化采集链路 + 审计日志 JSON 化便于 SIEM 解析 + 180 天保留(与 NET-07 协同)。"
status: "p0"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/setup.py"
- id: "HST-04"
dimension: host
title: "入侵防范(容器层)"
requirement: "主机入侵检测,系统加固"
implementation: "容器层已实现:非 root + drop ALL capabilities 限制系统调用allowPrivilegeEscalation=false 阻止提权;资源 limits 防失控Liveness/Readiness 探针故障自动重启。node 层 HIDSFalco/OSSEC依赖客户侧。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/deployment.yaml"
- id: "HST-05"
dimension: host
title: "恶意代码防范(主机防病毒)"
requirement: "主机防病毒,恶意代码检测"
implementation: "AgentKit 容器内不部署防病毒(无文件系统持久化,镜像来自可信 CI。K8s node 层主机防病毒/HIDS 由客户运维。依赖客户机房 node 安全基线。"
status: "待评估"
references: []
- id: "HST-06"
dimension: host
title: "资源控制CPU/内存/磁盘)"
requirement: "CPU/内存/磁盘限制,会话超时"
implementation: "Pod resources requests/limitsCPU 250m~1000m / Mem 512Mi~2Gi应用层 RateLimiter终端 session 1800s 闲置断开JWT access 15min / refresh 7d。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py"
- id: "HST-07"
dimension: host
title: "镜像与补丁管理"
requirement: "系统补丁及时更新,镜像来源可信"
implementation: "P0 补齐项。已实现:多阶段构建 + 非 root appuserUID 1001+ python:3.11-slim 基础镜像 + HEALTHCHECK。P0 待补CI 集成 Trivy 镜像漏洞扫描HIGH/CRITICAL 阻断)+ image.digest 不可变引用。P1 增强distroless 基础镜像 + cosign 签名。"
status: "p0"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/Dockerfile"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
# =============================================================================
# 4. 应用安全8 个,全部已实现 — AgentKit 核心责任)
# =============================================================================
- id: "APP-01"
dimension: application
title: "身份鉴别SSO 多 IDP + JWT"
requirement: "用户身份标识与鉴别,口令复杂度,登录失败处理"
implementation: "U4 SSO 多 IDPOIDC authlib + SAML python3-saml热证书轮换R1a 按 sub 关联禁止邮箱合并);本地密码 bcrypt rounds=12JWT HS256 access 15min + refresh 7d30d 记住我)含 sid+jti claimsrefresh token 轮换 + reuse 检测撤销全 sessionOAuth state CSRF 防护 TTL 5min 一次性消费。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/oidc.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/saml.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/idp_registry.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/password.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/denylist.py"
- id: "APP-02"
dimension: application
title: "访问控制RBAC 3 级 + 终端 6 层)"
requirement: "基于角色的访问控制,最小权限,默认拒绝"
implementation: "3 级 RBACmember/operator/admin+ 9 权限位CHAT/KB_QUERY/KB_WRITE/WORKFLOW_EXECUTE/TERMINAL_LOCAL_USE/TERMINAL_SERVER_USE/TERMINAL_WHITELIST_MANAGE/USER_MANAGE/SYSTEM_CONFIG。R7a 终端安全 6 层白名单blocklist→builtin→global→user→session→dangershell 操作符永远绕过白名单强制走 danger detection。终端双层授权RBAC 角色 + 个人授权标志。SCIM token 恒定时间比较。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/permissions.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py"
- id: "APP-03"
dimension: application
title: "安全审计OTel + audit.py"
requirement: "应用审计日志,覆盖用户操作关键事件"
implementation: "U1 OTel 强制依赖。审计事件role_change / deprovision含 break_glass 标记),写入 auth_audit_log 表 + OTel span eventOTel 不可用降级 SQLite+日志。SCIM 推送失败 span event scim.push.failure。终端命令审计 terminal_audit_logs决策 + cwd + exit_code。OTel 指标agent.request.total / pii_filter.coverage 等。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/metrics.py"
- id: "APP-04"
dimension: application
title: "通信完整性TLS + JWT + Webhook 签名)"
requirement: "传输完整性保护,防篡改"
implementation: "传输层 Ingress TLS 终止HTTPSJWT HS256 签名校验篡改即失败Webhook 入站 fail-closed 签名校验失败返回 401mTLS 客户端证书Helm 预留 secrets.mtlsClientCert slot 用于下游 KMS/HSM。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/ingress.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py"
- id: "APP-05"
dimension: application
title: "软件容错fallback + fail-closed"
requirement: "错误处理,故障隔离,降级机制"
implementation: "LLM 网关多 provider fallbackOTel 运行时错误降级 NoOpTracer 不崩溃PII 脱敏 fail-closed异常拒绝发送不降级原文默认 fail_closed=True专家团队全失败回退单 agentU3 DR-fixesbitable 字段校验 DR-1 / LastViewDeletionError DR-4 / 工具调用容错 DR-5。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/gateway.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/tracer.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/bitable/repository.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/bitable/service.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/tools/bitable_tool.py"
- id: "APP-06"
dimension: application
title: "资源控制(限流 + 会话超时)"
requirement: "会话并发控制,超时自动断开"
implementation: "RateLimiter IP 滑动窗口 + Webhook 独立限流 + nonce dedup终端 session 1800s 闲置断开JWT access 15min 过期专家名称正则校验防注入HandoffTransport 有界队列 maxsize=1024 + sentinel 关闭模式。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/middleware.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/terminal_server.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py"
- id: "APP-07"
dimension: application
title: "应用账户生命周期SCIM 2.0 + JIT + deprovision"
requirement: "开户/变更/销户审计SCIM 自动化"
implementation: "SCIM 2.0 端点POST/PATCH/GET Usersbearer token 恒定时间比较OIDC/SAML JIT 创建本地用户 + user_idp_linksR1a 按 sub 关联禁止邮箱合并随机密码不可本地登录deprovision 端点禁用账户 + 撤销全 session + 审计(含 break_glass 标记)。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/providers/oidc.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/auth.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- id: "APP-08"
dimension: application
title: "代码安全(输入验证 + 依赖管理)"
requirement: "输入验证,输出编码,依赖漏洞管理"
implementation: "Pydantic v2 模型校验extra=forbid 拒绝未知字段SCIM/IDP 配置均启用);禁止 any 类型(项目规则,用 Pydantic 模型或 Unknown专家名称正则 _EXPERT_NAME_RE 防 SQL/命令注入API Key 恒定时间比较 hmac.compare_digestRuff lint+formatpy311pyproject.toml 锁定精确版本;终端 6 层白名单防命令注入链。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/models.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/idp_registry.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/terminal_security.py"
# =============================================================================
# 5. 数据安全8 个)
# =============================================================================
- id: "DAT-01"
dimension: data
title: "数据完整性PG + pgvector"
requirement: "数据传输/存储完整性,校验机制"
implementation: "PostgreSQL 事务 ACID 保证 + pgvector 扩展存储向量记忆SQLAlchemy 2 async ORM 应用层事务JWT HS256 签名防篡改Webhook fail-closed 签名校验Pydantic extra=forbid 防数据注入。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/channels.py"
- id: "DAT-02"
dimension: data
title: "数据保密性PII 脱敏 U2"
requirement: "敏感数据加密存储/传输,密钥管理"
implementation: "U2 PII 脱敏 hook正则版手机/邮箱/身份证/银行卡)+ ner_hook客户内网 NER 模型优先)+ fail-closed异常拒绝发送不降级原文默认 fail_closed=True+ hash 审计sha256 前 8 位,仅 hash 不含原文。身份证正则优先于手机避免误匹配。OTel 指标 pii_filter.coverage / pii_filter.redacted。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/metrics.py"
- id: "DAT-03"
dimension: data
title: "数据备份与恢复PG backup runbook"
requirement: "重要数据定期备份,恢复演练"
implementation: "P0 补齐项。已实现PostgreSQL 持久化 + WAL 默认开启 + Redis AOF/RDB客户运维。P0 待补:新增 docs/deployment/pg-backup-runbook.md每日 pg_dump 保留 7 天 + WAL 归档 PITR + 季度恢复演练 + 备份加密 SM4/AES-256Helm Chart 增加 backup 段(可选 pg-backup sidecar/CronJob。"
status: "p0"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- id: "DAT-04"
dimension: data
title: "剩余信息保护session revoke"
requirement: "鉴别信息/文件/内存空间释放前清理"
implementation: "JWT V2 含 sid+jti claims中间件校验 session 是否服务端撤销;销户撤销全 sessionrefresh token 轮换旧 token 进 denylist 30s 窗口token reuse 检测撤销全 sessiondenylist 存 SHA-256 hash 不存明文JIT/SCIM 用户随机密码不可本地登录。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/denylist.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/auth.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/scim/router.py"
- id: "DAT-05"
dimension: data
title: "个人信息保护PII 最小化)"
requirement: "PII 采集/处理/传输最小化与脱敏"
implementation: "PII 脱敏后原文不落盘(仅 hash 用于审计LLM prompt 不含原文 PIIPII 按类型分级id_card/phone/email/bank_card不同类型 hash 独立记录;记忆 4 层架构SOUL/USER/MEMORY/DAILY按敏感度存储数据最小化原则。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py"
- id: "DAT-06"
dimension: data
title: "数据采集与分类分级"
requirement: "按敏感度分级保护"
implementation: "PII 按 4 类分级id_card/phone/email/bank_card独立 hash 审计;记忆 4 层架构SOUL 最敏感→DAILY 最不敏感PII 脱敏覆盖发送至 LLM 的 prompt边界不覆盖终端命令/上传文档/bitable 结构化数据,由客户自行控制)。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py"
- id: "DAT-07"
dimension: data
title: "数据销毁"
requirement: "数据销毁审计,不可恢复"
implementation: "账户销户 deprovision 禁用账户+撤销全 session审计记录不可删除审计表无 delete 接口admin 不可删除审计PII 原文脱敏后不落盘无需专门销毁PG 数据销毁由客户 DBA 发起 SQL 记录审计。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/auth.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- id: "DAT-08"
dimension: data
title: "国密算法合规R11a"
requirement: "敏感数据加密使用国密算法(政企客户要求)"
implementation: "P1 参考。当前使用国际算法TLSAES-GCM/ bcrypt 密码哈希 / HS256 JWT / SHA-256 PII hash。未使用国密SM2/SM3/SM4/SM9。P1 升级路径JWT 签名→SM2-HMAC、密码哈希→SM3双算法并行兼容、PII hash→SM3、TLS→国密套件、PG 字段级加密→SM4 TDE。注国密不阻碍等保三级认证三级要求加密而非国密但政企客户常要求国密合规。"
status: "p1"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/jwt_utils.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/password.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/llm/pii_filter.py"
# =============================================================================
# 6. 管理安全7 个)
# =============================================================================
- id: "MGT-01"
dimension: management
title: "密钥管理10 secret slot + 轮换 runbook"
requirement: "密钥生成/存储/分发/轮换/销毁"
implementation: "U5 10 个 secret slotJWT/API Key/DB/IDP/第三方API/TLS/mTLS/KMS-HSM/OTel/Redis-PG含轮换周期90~365 天)。禁止明文 K8s Secret+Git 提交KTD-4/R2a后端二选一Sealed Secrets 或 External Secrets Operator。SAML IDP 证书热轮换不重启即时生效idp_registry.update_certificate。通用原则零停机双密钥并行+审计先行+回滚预案+权限最小化。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/docs/deployment/key-rotation-runbook.md"
- "file:///Users/chiguyong/Code/Fischer-agentkit/docs/deployment/secret-inventory.md"
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/idp_registry.py"
- id: "MGT-02"
dimension: management
title: "变更管理CI/CD 规范)"
requirement: "变更审批/测试/回滚/审计"
implementation: "P0 补齐项。已实现Git 版本控制所有代码/配置/Helm ChartHelm Chart checksum/config annotation ConfigMap 变更触发 rolloutconfig_sync.py 配置版本管理+轮询同步;审计记录 RBAC 变更。P0 待补:新增 docs/CI-CD-STANDARDS.md分支策略+CI 检查 ruff/pytest/镜像扫描+部署审批+回滚流程CI 集成镜像漏洞扫描(与 HST-07 协同);部署变更审计接入。"
status: "p0"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/templates/deployment.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/config_sync.py"
- id: "MGT-03"
dimension: management
title: "应急响应"
requirement: "应急事件处置流程,隔离/恢复"
implementation: "待评估。AgentKit 自身应急隔离能力已实现(销户+session 撤销+密钥紧急轮换,见 MGT-06/MGT-07但完整应急响应预案需与客户安全团队协同事件分级标准+响应时限+通报链路+恢复流程。建议客户基于本套等保文档+AgentKit 应急能力构建完整预案,认证前完成至少一次桌面演练。"
status: "待评估"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/docs/deployment/key-rotation-runbook.md"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/auth.py"
- id: "MGT-04"
dimension: management
title: "安全审计与评估"
requirement: "定期安全评估,漏洞管理"
implementation: "P1 参考。已实现:审计日志覆盖 RBAC 变更/deprovision/终端命令/SCIM 操作OTel 指标监控异常。P1 补齐每月依赖漏洞扫描pip-audit/safety每次重大版本发布前 SAST 扫描Bandit/Semgrep认证后每年至少一次渗透测试客户侧组织admin 每季度审查审计日志异常模式P1 可引入 SIEM 自动告警)。"
status: "p1"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/telemetry/metrics.py"
- id: "MGT-05"
dimension: management
title: "配置管理Helm values + 配置同步)"
requirement: "基线配置,配置变更审计"
implementation: "Helm values 标准化所有可配置项含注释;配置优先级 CLI>agentkit.yaml>环境变量>.env>硬编码默认config_sync.py 配置版本管理+轮询同步;密钥与配置分离(含密钥段由 env 注入不进 ConfigMap非密配置进 ConfigMap。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/deploy/helm/agentkit/values.yaml"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/config_sync.py"
- id: "MGT-06"
dimension: management
title: "应急通道break-glass"
requirement: "高权限应急通道,审计追溯"
implementation: "U4 R1b break-glass deprovisioning/admin/users/{id}/deprovision 端点支持 break_glass=true 标记,审计记录 source=break_glassSOURCE_BREAKGLASS。流程隔离销户→撤销全 session→审计actor/target/reason/source/timestamp→OTel span event audit.deprovision 接入审计通道→人工通报。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/routes/auth.py"
- "file:///Users/chiguyong/Code/Fischer-agentkit/src/agentkit/server/auth/audit.py"
- id: "MGT-07"
dimension: management
title: "密钥泄露响应"
requirement: "泄露检测/隔离/轮换/通报"
implementation: "key-rotation-runbook.md §紧急轮换泄露响应段落1.隔离(撤销泄露密钥 provider控制台/HSM/CA→2.轮换(按对应 slot 步骤紧急轮换不遵循双密钥并行直接切换废弃旧密钥→3.审计检索泄露密钥使用日志确认无异常→4.通报(安全团队+受影响用户→5.复盘(记录原因加固访问控制)。"
status: "implemented"
references:
- "file:///Users/chiguyong/Code/Fischer-agentkit/docs/deployment/key-rotation-runbook.md"