fischer-agentkit/docs/compliance/dengbao-level3/02-network.md

9.2 KiB
Raw Blame History

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)

3.2 边界防护NET-02— 已实现

Ingress 启用 TLS 终止,所有外网流量强制 HTTPS

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 deploy/helm/agentkit/values.yamlingress 段、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。

P1 补齐计划:接入客户 SIEM将 AgentKit OTel 日志投递到客户 入侵检测平台,由 SIEM 做 abnormal pattern 检测。

3.5 安全审计NET-05— 已实现

AgentKit 通过 OpenTelemetryU1强制依赖实现网络活动审计

OTLP gRPC 导出到内部 collector 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_logSQLiteterminal_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 resourcesCPU 250m~1000m / Memory 512Mi~2Gi
  • 应用层RateLimiter 实现 IP 维度滑动窗口限流Webhook 入站端点独立限流 channels.py)。
  • 会话超时:终端 session 闲置 1800s 自动断开 terminal_server.py SESSION_IDLE_TIMEOUT = 1800)。
  • JWT 短时效access token 15min jwt_utils.py ACCESS_TOKEN_TTL)。

4. OTel exporter mTLSP1 参考)

当前状态P1。OTel exporter 通过 bearer token 鉴权 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-07P0 补齐项,需在测评前完成 NetworkPolicy 模板和 审计日志保留 CronJob。
  3. NET-04 / NET-06:依赖客户侧网络骨干,由客户网络团队提供 IDS / 恶意代码检测证据。