# 安全审计与堡垒机设计说明 > 更新: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. 高危策略开启后,生产资产操作不会绕过后端拦截。