feat: 完善堡垒机与 Agent 智能运维能力

- 支持 Windows Agent 构建、安装脚本和统一上报协议

- 增强 RDP 剪贴板、虚拟盘和文件传输能力

- 新增 AIOps 上下文工具、告警 RCA trace 落库和回放接口

- 重构 docs 模块文档并补充终端、堡垒机、监控、AI Agent 设计
This commit is contained in:
Logan.Li committed 2026-07-05 23:49:36 +08:00
1 parent a9513c2056
commit e0d652d211
169 files changed
+12192 -9116

No files matched your search

+144
View File
@@ -0,0 +1,144 @@
# 安全审计与堡垒机设计说明
> 更新:2026-07-05
> 范围:操作审计、登录日志、SSH/RDP/Pod/kubectl 会话、录像回放、命令审计、会话策略、审批联动。
> 目标:把 AIOps 的终端、RDP、审计、策略和审批统一成“可用堡垒机 → 企业堡垒机”的工程体系。// Logan.Li
---
## 定位
安全审计与堡垒机模块解决三个问题:
1. 谁在什么时间访问了什么资产。
2. 会话里做了什么操作,是否可回放、可追责。
3. 高风险操作是否被策略限制、确认或审批。
当前 AIOps 已具备 WebSSH、RDP、Pod exec、kubectl 终端、操作审计、会话录像、水印、剪贴板/文件策略等能力。后续要做的是把这些能力从“分散功能”统一成“协议无关的会话安全模型”。
---
## 能力矩阵
| 能力 | 当前状态 | 说明 |
|------|----------|------|
| 操作审计 | 已完成 | 记录用户、模块、动作、资源、请求/响应、状态 |
| 登录日志 | 已完成 | 记录登录用户、IP、User-Agent、结果 |
| SSH 会话审计 | 已完成 | `sys_terminal_sessions` + asciicast 回放 |
| SSH 命令审计 | 已完成 | `sys_session_commands` 记录命令和输出大小 |
| RDP 会话审计 | 已完成 | `sys_rdp_sessions` + 图形帧录像 |
| RDP 操作摘要 | 已完成 | 复制、粘贴、输入、上传、下载等写入命令审计 |
| RDP 实时审计 | 已完成 | `/ws/rdp-audit/:sessionId` 只读观看 |
| 会话水印 | 已完成 | RDP/SSH 显示当前用户水印 |
| 会话策略 | 已完成 | 录像、剪贴板、上传、下载、审批预留 |
| Pod/kubectl 审计 | 部分完成 | 终端可用,审计模型待独立统一 |
| 审批联动 | 待增强 | 高危命令、生产资产、AI 操作需接入审批 |
---
## 主要代码落点
| 层 | 文件 / 目录 | 说明 |
|----|-------------|------|
| 后端控制器 | `backend/controller/audit.go` | 操作审计查询、导出、统计 |
| 后端控制器 | `backend/controller/login_log.go` | 登录日志 |
| 后端控制器 | `backend/controller/terminal_session.go` | SSH 会话列表、详情、回放、终止 |
| 后端控制器 | `backend/controller/session_command.go` | 会话命令查询 |
| 后端控制器 | `backend/controller/rdp_session.go` | RDP 会话列表、录像、终止 |
| 后端控制器 | `backend/controller/audit_setting.go` | 审计与会话安全策略 |
| 后端控制器 | `backend/controller/audit_hub.go` | SSH 实时审计广播 |
| 后端模型 | `backend/model/audit.go` | 操作审计表 |
| 后端模型 | `backend/model/terminal_session.go` | SSH 会话表 |
| 后端模型 | `backend/model/rdp_session.go` | RDP 会话表 |
| 后端模型 | `backend/model/session_command.go` | 命令/操作摘要表 |
| 前端 API | `frontend/src/api/audit/` | 审计、终端、RDP API |
| 前端设置 | `frontend/src/api/system/audit-settings.ts` | 会话策略 API |
| 前端组件 | `frontend/src/components/system/LiveMonitorDialog.tsx` | SSH 实时审计 |
| 前端组件 | `frontend/src/components/system/ReplayDialog.tsx` | SSH 回放 |
| 前端组件 | `frontend/src/components/system/RdpAuditViewer.tsx` | RDP 实时/历史查看 |
---
## 统一会话模型
建议逐步抽象出统一会话视图:
```text
Session
├── id
├── type: ssh | rdp | pod | kubectl | workspace | ai-agent
├── user_id / username
├── target_type: server | pod | cluster | workspace
├── target_id / target_name / target_addr
├── status: active | closed | failed | killed
├── start_time / end_time / duration
├── record_type: asciicast | rdp_bitmap | none
├── record_size
└── risk_level
```
当前 SSH 和 RDP 分表存储是合理的,因为录像格式不同;但审计页应提供统一查询聚合视图。// Logan.Li
---
## 会话策略
策略存储:`sys_audit_settings`
| 策略 | 影响 |
|------|------|
| `session_watermark_enabled` | RDP/SSH 显示用户水印 |
| `session_record_enabled` | 是否保存会话录像/录制 |
| `clipboard_enabled` | 是否允许 RDP 剪贴板 |
| `file_upload_enabled` | 是否允许 RDP 上传 |
| `file_download_enabled` | 是否允许 RDP 下载 |
| `command_policy_enabled` | 命令策略开关,后续用于 SSH/kubectl/AI 工具 |
| `approval_required` | 高危访问或操作是否需要审批 |
后端必须作为最终边界执行策略,前端只负责按钮禁用和提示。
---
## 审批联动建议
| 场景 | 建议 |
|------|------|
| 访问生产 RDP/SSH | 可选审批或双人授权 |
| RDP 文件下载 | 生产资产可触发审批 |
| kubectl delete/scale/restart | 强制二次确认或审批 |
| Agent CLI 高危工具 | 计划确认 + 操作确认 + 审批 |
| 批量远程执行 | 必须审批 |
| 非工作时间变更 | 强制审批 |
---
## 与现有专题文档关系
| 专题 | 文档 |
|------|------|
| 字符终端实现 | [docs/terminal](../terminal/README.md) |
| RDP 实现 | [docs/rdp](../rdp/README.md) |
| AI Agent 安全 | [docs/ai-agent](../ai-agent/00-README.md) |
| 资产和凭证 | [docs/asset-credential](../asset-credential/README.md) |
---
## 演进路线
| 阶段 | 目标 | 关键任务 |
|------|------|----------|
| 第一阶段 | 可用堡垒机 | SSH/RDP 可访问、可回放、可审计、可禁用剪贴板和文件 |
| 第二阶段 | 企业堡垒机 | 统一会话中心、策略按用户/角色/资产/协议生效、高危审批 |
| 第三阶段 | 智能堡垒机 | AI Agent 工具调用进入统一审计,成功流程沉淀为 Runbook |
---
## 验收清单
1. 操作审计能按用户、模块、动作、时间筛选。
2. SSH 会话能实时查看和历史回放。
3. RDP 会话能实时查看和历史回放。
4. RDP 剪贴板、上传、下载策略关闭后前后端都生效。
5. SSH/RDP 命令或操作能通过会话 ID 关联到回放。
6. 登录日志能区分成功、失败、来源 IP。
7. 高危策略开启后,生产资产操作不会绕过后端拦截。