| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- -- ----------------------------
- -- Table structure for security_event_log
- -- ----------------------------
- -- 用途:
- -- 记录应用层、网关或 WAF 识别到的安全风险事件,用于追踪恶意请求、误报复盘、统计分析和后续封禁策略。
- -- 设计原则:
- -- 1. 不保存完整请求体,仅保存截断摘要和哈希,降低敏感数据落库风险。
- -- 2. 事件识别与事件记录解耦,应用校验、限流、网关/WAF 等检测源都可以写入本表。
- -- 3. 枚举值使用 varchar,便于后续扩展检测类型、处置动作和风险等级。
- CREATE TABLE IF NOT EXISTS `security_event_log` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,自增唯一标识一条安全事件记录',
- `event_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '安全事件类型,例如 SQL_INJECTION、XSS、INVALID_JSON、INVALID_PARAMETER、WAF_BLOCK、RATE_LIMIT',
- `risk_level` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'LOW' COMMENT '风险等级:LOW-低风险,MEDIUM-中风险,HIGH-高风险,CRITICAL-严重风险',
- `detector` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '检测来源:APP_VALIDATION-应用参数校验,APP_RULE-应用安全规则,WAF-WAF网关,GATEWAY-网关,RATE_LIMIT-限流组件,MANUAL-人工标记',
- `rule_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '命中的检测规则编号或规则名称,例如 mapper-order-field-whitelist、waf-942100;无明确规则时可为空',
- `event_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '安全事件简要描述,用于列表展示和人工快速判断事件原因',
- `request_uri` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求路径,不包含协议、域名和查询字符串,例如 /applet/v1/homePage/getStationInfoPage',
- `request_method` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'HTTP请求方法,例如 GET、POST、PUT、DELETE',
- `query_string` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'URL查询字符串摘要,超过字段长度应在写入前截断;用于定位GET参数风险',
- `client_ip` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '客户端IP地址,支持IPv4和IPv6;通常取系统解析后的真实访问IP',
- `x_forwarded_for` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'X-Forwarded-For请求头原始摘要,用于排查代理链路;超过字段长度应在写入前截断',
- `user_agent` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'User-Agent请求头摘要,用于识别浏览器、脚本工具或扫描器',
- `referer` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Referer请求头摘要,用于分析请求来源页面;可能为空',
- `user_id` bigint(20) NULL DEFAULT NULL COMMENT '平台用户ID;未登录、无法解析或第三方请求无平台用户时为空',
- `operator_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '第三方运营商ID或渠道方标识;非第三方请求可为空',
- `request_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求追踪ID,例如网关TraceId、日志MDC TraceId或业务生成的请求序列号,用于关联应用日志',
- `matched_field` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '命中风险的字段名或参数名,例如 latitude、sortType、orderBy;无法定位字段时为空',
- `payload_excerpt` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '命中风险的请求内容摘要,仅保存截断片段,不保存完整请求体,避免敏感数据长期落库',
- `payload_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '命中内容的SHA-256哈希值,便于去重、关联同类攻击和追踪重复扫描行为',
- `action` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'OBSERVE' COMMENT '处置动作:OBSERVE-仅记录,REJECT-拒绝请求,BLOCK-阻断请求,RATE_LIMIT-触发限流,ALLOW-确认放行',
- `http_status` int(11) NULL DEFAULT NULL COMMENT '本次请求最终返回的HTTP状态码,例如 400、403、429;未进入响应阶段时可为空',
- `handle_result` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理结果说明,例如 rejected_by_validation、blocked_by_waf、record_only、false_positive',
- `remark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注信息,用于人工复核、误报说明或补充上下文',
- `create_by` bigint(20) NULL DEFAULT NULL COMMENT '创建人ID;系统自动记录通常为空或为系统账号ID',
- `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间,即安全事件写入数据库的时间',
- `update_by` bigint(20) NULL DEFAULT NULL COMMENT '更新人ID;人工复核或修改事件状态时记录操作人ID',
- `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间,事件被人工复核、修改备注或更新处置结果时刷新',
- `is_deleted` tinyint(4) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识:0-未删除,1-已删除;用于后台列表隐藏而非物理删除',
- PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_security_event_create_time` (`create_time`) USING BTREE,
- INDEX `idx_security_event_type_time` (`event_type`, `create_time`) USING BTREE,
- INDEX `idx_security_event_risk_time` (`risk_level`, `create_time`) USING BTREE,
- INDEX `idx_security_event_ip_time` (`client_ip`, `create_time`) USING BTREE,
- INDEX `idx_security_event_request_id` (`request_id`) USING BTREE,
- INDEX `idx_security_event_payload_hash` (`payload_hash`) USING BTREE,
- INDEX `idx_security_event_action_time` (`action`, `create_time`) USING BTREE
- ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '安全事件日志表' ROW_FORMAT = DYNAMIC;
|