后端新增 (Step 1): - mysql_audit_rules.py: 63条 MySQL审核规则 (DDL 36 + DML 9 + 命名 5 + 性能 5 + 安全 5) - redis_audit_rules.py: 43条 Redis审核规则 (KEY管理 10 + 命令安全 12 + 数据结构 8 + 性能 8 + 安全 5) - mongodb_audit_rules.py: 42条 MongoDB审核规则 (集合管理 + 查询安全 + 聚合管道 + 写入安全 + 性能) - postgres_audit_rules.py: 45条 PostgreSQL审核规则 (DDL 18 + DML 8 + DQL 6 + 安全 6 + 性能 7) 后端合并 (Step 2): - audit_engine_v2.py: 新增4个DB规则模块import (100+→200+规则) - audit_rule_seeds.py: 新增30条MongoDB种子规则 + 别名映射 - audit_rule.py: 新增数据库类型别名 (postgresql→postgres, pg→postgres, mongo→mongodb) 前端优化 (Step 4) — 16页面全覆盖: - InstancePage, WorkflowPage, TicketsPage, TicketCreatePage, TicketDetailPage - UsersPage, SlowQueryPage, DataDictionaryPage, Dashboard - InstanceGroupPage, AuditLogsPage, QueriesPage, AuditRulesPage, RolesPage - useAuth.tsx, SqlEditor.tsx 后端测试 895/895 通过, 前端 tsc --noEmit 通过
638 lines
21 KiB
Python
638 lines
21 KiB
Python
"""Preset audit rule seed data for MySQL, PostgreSQL, Redis, and MongoDB."""
|
|
|
|
from typing import List, Dict, Any
|
|
|
|
# ── MySQL 预设规则 ──────────────────────────────────────────────
|
|
MYSQL_SEED_RULES: List[Dict[str, Any]] = [
|
|
{
|
|
"name": "DDLMultiToCommit",
|
|
"description": "DDL 允许单个工单提交多条DDL",
|
|
"rule_type": "DDL",
|
|
"severity": "info",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "DDL 允许单个工单提交多条DDL语句",
|
|
},
|
|
{
|
|
"name": "DDLAllowMultiAlter",
|
|
"description": "DDL 允许多alter",
|
|
"rule_type": "DDL",
|
|
"severity": "info",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "DDL 允许在单条ALTER TABLE中使用多个修改操作",
|
|
},
|
|
{
|
|
"name": "DDLAllowColumnType",
|
|
"description": "允许字段类型转换",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许字段类型转换,请确认数据兼容性",
|
|
},
|
|
{
|
|
"name": "DDLAllowChangeColumnPosition",
|
|
"description": "允许 AFTER/FIRST 修改列位置",
|
|
"rule_type": "DDL",
|
|
"severity": "info",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许使用 AFTER/FIRST 修改列位置",
|
|
},
|
|
{
|
|
"name": "DDLEnableDropTable",
|
|
"description": "允许删表操作",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许执行 DROP TABLE 操作,请确认已备份",
|
|
},
|
|
{
|
|
"name": "DDLEnablePrimaryKey",
|
|
"description": "检查表必须包含主键",
|
|
"rule_type": "DDL",
|
|
"severity": "error",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "建表必须指定主键",
|
|
},
|
|
{
|
|
"name": "DDLCheckTableComment",
|
|
"description": "强制表注释",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "建表时必须添加表注释(COMMENT)",
|
|
},
|
|
{
|
|
"name": "DMLAllowInsertNull",
|
|
"description": "允许 Insert Null 值",
|
|
"rule_type": "DML",
|
|
"severity": "info",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许 INSERT 语句中包含 NULL 值",
|
|
},
|
|
{
|
|
"name": "DMLWhere",
|
|
"description": "强制 DML 语句包含 WHERE 条件",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "UPDATE/DELETE 语句必须包含 WHERE 条件",
|
|
},
|
|
{
|
|
"name": "DDLMaxKeyParts",
|
|
"description": "单索引字段上限",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": "8",
|
|
"message": "单索引包含的字段数不得超过8个",
|
|
},
|
|
{
|
|
"name": "DDLMaxKey",
|
|
"description": "单表索引上限",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": "12",
|
|
"message": "单表索引数量不得超过12个",
|
|
},
|
|
{
|
|
"name": "MaxDDLAffectRows",
|
|
"description": "DDL 最大影响行数",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": "0",
|
|
"message": "DDL 最大影响行数为0(不限制)",
|
|
},
|
|
{
|
|
"name": "DDLMaxCharLength",
|
|
"description": "CHAR 类型最大长度",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": "10",
|
|
"message": "CHAR 类型长度不得超过10,超出请使用 VARCHAR",
|
|
},
|
|
{
|
|
"name": "MaxTableNameLen",
|
|
"description": "表名长度限制",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": "45",
|
|
"message": "表名长度不得超过45个字符",
|
|
},
|
|
{
|
|
"name": "DMLMaxInsertRows",
|
|
"description": "INSERT 最大行数限制",
|
|
"rule_type": "DML",
|
|
"severity": "warning",
|
|
"db_type": "mysql",
|
|
"pattern": None,
|
|
"value": "500",
|
|
"message": "单次 INSERT 最多插入500行",
|
|
},
|
|
]
|
|
|
|
# ── PostgreSQL 预设规则 ─────────────────────────────────────────
|
|
POSTGRES_SEED_RULES: List[Dict[str, Any]] = [
|
|
{
|
|
"name": "PGDDLMultiToCommit",
|
|
"description": "PostgreSQL DDL 允许单个工单提交多条DDL",
|
|
"rule_type": "DDL",
|
|
"severity": "info",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "DDL 允许单个工单提交多条DDL语句",
|
|
},
|
|
{
|
|
"name": "PGDDLAllowColumnType",
|
|
"description": "PostgreSQL 允许字段类型转换",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许字段类型转换,请确认数据兼容性",
|
|
},
|
|
{
|
|
"name": "PGDDLEnablePrimaryKey",
|
|
"description": "PostgreSQL 检查表必须包含主键",
|
|
"rule_type": "DDL",
|
|
"severity": "error",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "建表必须指定主键",
|
|
},
|
|
{
|
|
"name": "PGDDLEnableDropTable",
|
|
"description": "PostgreSQL 允许删表操作",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许执行 DROP TABLE 操作,请确认已备份",
|
|
},
|
|
{
|
|
"name": "PGDDLCheckTableComment",
|
|
"description": "PostgreSQL 强制表注释",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "建表时必须添加表注释(COMMENT ON TABLE)",
|
|
},
|
|
{
|
|
"name": "PGDMLWhere",
|
|
"description": "PostgreSQL 强制 DML 包含 WHERE 条件",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "UPDATE/DELETE 语句必须包含 WHERE 条件",
|
|
},
|
|
{
|
|
"name": "PGDMLAllowInsertNull",
|
|
"description": "PostgreSQL 允许 Insert Null 值",
|
|
"rule_type": "DML",
|
|
"severity": "info",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许 INSERT 语句中包含 NULL 值",
|
|
},
|
|
{
|
|
"name": "PGDDLMaxKeyParts",
|
|
"description": "PostgreSQL 单索引字段上限",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": "8",
|
|
"message": "单索引包含的字段数不得超过8个",
|
|
},
|
|
{
|
|
"name": "PGDDLMaxKey",
|
|
"description": "PostgreSQL 单表索引上限",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": "12",
|
|
"message": "单表索引数量不得超过12个",
|
|
},
|
|
{
|
|
"name": "PGMaxTableNameLen",
|
|
"description": "PostgreSQL 表名长度限制",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": "63",
|
|
"message": "表名长度不得超过63个字符",
|
|
},
|
|
{
|
|
"name": "PGDMLMaxInsertRows",
|
|
"description": "PostgreSQL INSERT 最大行数限制",
|
|
"rule_type": "DML",
|
|
"severity": "warning",
|
|
"db_type": "postgres",
|
|
"pattern": None,
|
|
"value": "500",
|
|
"message": "单次 INSERT 最多插入500行",
|
|
},
|
|
]
|
|
|
|
# ── MongoDB 预设规则 ────────────────────────────────────────────
|
|
MONGODB_SEED_RULES: List[Dict[str, Any]] = [
|
|
{
|
|
"name": "MongoDB集合命名规范(snake_case)",
|
|
"description": "MongoDB 集合名应使用小写下划线命名(snake_case)",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": r"^[a-z][a-z0-9_]*$",
|
|
"value": None,
|
|
"message": "集合名不符合 snake_case 命名规范,应使用小写下划线格式",
|
|
},
|
|
{
|
|
"name": "MongoDB集合名最大长度限制",
|
|
"description": "MongoDB 集合名最大长度为 64 字节",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": "64",
|
|
"message": "集合名长度超过64字节,请缩短集合名",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止删除集合",
|
|
"description": "生产环境禁止执行删除集合操作",
|
|
"rule_type": "DDL",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止执行删除集合操作,数据将永久丢失",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止删除数据库",
|
|
"description": "禁止执行 dropDatabase 操作",
|
|
"rule_type": "DDL",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止执行 dropDatabase 操作,将删除整个数据库",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止删除索引",
|
|
"description": "禁止执行删除索引操作",
|
|
"rule_type": "DDL",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止执行删除索引操作,可能导致查询性能急剧下降",
|
|
},
|
|
{
|
|
"name": "MongoDB推荐Schema Validator",
|
|
"description": "创建集合时建议使用 JSON Schema Validator",
|
|
"rule_type": "DDL",
|
|
"severity": "info",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "建议为集合添加 JSON Schema Validator 以约束文档结构",
|
|
},
|
|
{
|
|
"name": "MongoDB查询必须带filter",
|
|
"description": "find/delete/update 操作必须包含 filter 条件",
|
|
"rule_type": "DQL",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "查询/更新/删除操作缺少 filter 条件,将操作全集合数据",
|
|
},
|
|
{
|
|
"name": "MongoDB推荐指定projection",
|
|
"description": "查询推荐指定 projection 限制返回字段",
|
|
"rule_type": "DQL",
|
|
"severity": "info",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "查询未指定 projection,建议添加 projection 限制返回字段",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止$where/$function",
|
|
"description": "禁止使用 $where 和 $function 执行 JavaScript",
|
|
"rule_type": "DQL",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止使用 $where/$function 执行 JavaScript,存在严重安全风险",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止前缀模糊匹配",
|
|
"description": "禁止正则表达式前缀模糊匹配,无法有效使用索引",
|
|
"rule_type": "DQL",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": r'/\^|"\$regex"\s*:\s*"\^',
|
|
"value": None,
|
|
"message": "前缀模糊匹配无法有效使用索引,建议调整查询策略",
|
|
},
|
|
{
|
|
"name": "MongoDB查询返回结果上限",
|
|
"description": "查询返回结果建议不超过 10000 条",
|
|
"rule_type": "DQL",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": "10000",
|
|
"message": "查询未设置 limit 或 limit 超过 10000 条,建议分页查询",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止聚合$out/$merge",
|
|
"description": "聚合管道禁止 $out/$merge 写操作",
|
|
"rule_type": "DQL",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": r'"\$(out|merge)"',
|
|
"value": None,
|
|
"message": "禁止在聚合管道中使用 $out/$merge 阶段,可能覆盖现有集合",
|
|
},
|
|
{
|
|
"name": "MongoDB聚合管道阶段数上限",
|
|
"description": "聚合管道阶段数建议不超过 20 个",
|
|
"rule_type": "DQL",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": "20",
|
|
"message": "聚合管道阶段数超过20个,请优化查询结构",
|
|
},
|
|
{
|
|
"name": "MongoDB$unwind大数据量警告",
|
|
"description": "$unwind 展开数组可能导致文档数量急剧膨胀",
|
|
"rule_type": "DQL",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": r'"\$unwind"',
|
|
"value": None,
|
|
"message": "$unwind 可能急剧增加文档数量,请确认数组字段元素数量",
|
|
},
|
|
{
|
|
"name": "MongoDB批量写入上限",
|
|
"description": "批量写入建议不超过 1000 条",
|
|
"rule_type": "DML",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": "1000",
|
|
"message": "批量写入超过1000条,请分批写入",
|
|
},
|
|
{
|
|
"name": "MongoDBupdateMany必须带条件",
|
|
"description": "updateMany 必须包含 filter 条件",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "updateMany 操作缺少 filter 条件,将更新全集合文档",
|
|
},
|
|
{
|
|
"name": "MongoDBdeleteMany必须带条件",
|
|
"description": "deleteMany 必须包含 filter 条件",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "deleteMany 操作缺少 filter 条件,将删除全集合文档",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止unset关键字段",
|
|
"description": "禁止 $unset 关键字段(_id, create_time等)",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止使用 $unset 删除关键字段,可能导致数据完整性问题",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止重命名集合",
|
|
"description": "禁止执行 renameCollection 操作",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止重命名集合,可能导致应用连接失败",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止绕过文档验证",
|
|
"description": "禁止 bypassDocumentValidation: true",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止设置 bypassDocumentValidation 绕过 Schema 验证",
|
|
},
|
|
{
|
|
"name": "MongoDB单文档大小限制",
|
|
"description": "单文档大小建议不超过 10MB 警告阈值",
|
|
"rule_type": "DML",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": "10485760",
|
|
"message": "文档大小超过10MB警告阈值,建议拆分或精简文档",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止嵌套深度超过5层",
|
|
"description": "文档嵌套深度建议不超过 5 层",
|
|
"rule_type": "DML",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": "5",
|
|
"message": "文档嵌套深度超过5层,建议优化文档结构",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止db.eval()",
|
|
"description": "禁止 db.eval() 执行 JavaScript",
|
|
"rule_type": "security",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": r'\bdb\.eval\s*\(',
|
|
"value": None,
|
|
"message": "禁止 db.eval() 执行 JavaScript,存在严重安全风险",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止操作系统集合",
|
|
"description": "禁止操作系统集合",
|
|
"rule_type": "security",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止操作系统集合,存在安全风险",
|
|
},
|
|
{
|
|
"name": "MongoDB禁止MapReduce",
|
|
"description": "禁止使用 mapReduce,使用聚合管道替代",
|
|
"rule_type": "security",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": r'\bmapReduce\b',
|
|
"value": None,
|
|
"message": "禁止 mapReduce,请使用聚合管道替代",
|
|
},
|
|
{
|
|
"name": "MongoDB防止$cmd注入",
|
|
"description": "禁止直接操作 $cmd 集合",
|
|
"rule_type": "security",
|
|
"severity": "error",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "禁止直接操作 $cmd 集合,存在注入攻击风险",
|
|
},
|
|
{
|
|
"name": "MongoDB敏感操作审计日志",
|
|
"description": "删除、更新等敏感操作应记录审计日志",
|
|
"rule_type": "security",
|
|
"severity": "info",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "敏感操作应确保已记录审计日志,便于安全追踪",
|
|
},
|
|
{
|
|
"name": "MongoDB缺少索引查询警告",
|
|
"description": "查询条件字段应创建索引",
|
|
"rule_type": "performance",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "查询条件字段缺少索引可能导致全集合扫描",
|
|
},
|
|
{
|
|
"name": "MongoDB全集合扫描警告",
|
|
"description": "缺少 filter 条件将导致全集合扫描",
|
|
"rule_type": "performance",
|
|
"severity": "warning",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "查询缺少过滤条件,将导致全集合扫描",
|
|
},
|
|
{
|
|
"name": "MongoDB复合索引字段顺序建议",
|
|
"description": "复合索引字段顺序应遵循 ESR 规则",
|
|
"rule_type": "performance",
|
|
"severity": "info",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "建议遵循 ESR 规则设计复合索引: 等值 > 排序 > 范围",
|
|
},
|
|
{
|
|
"name": "MongoDB分片键选择建议",
|
|
"description": "分片集合应选择高基数字段作为分片键",
|
|
"rule_type": "performance",
|
|
"severity": "info",
|
|
"db_type": "mongodb",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "建议选择高基数均匀分布字段作为分片键",
|
|
},
|
|
]
|
|
|
|
# ── Redis 预设规则 ──────────────────────────────────────────────
|
|
REDIS_SEED_RULES: List[Dict[str, Any]] = [
|
|
{
|
|
"name": "RedisAllowFlushDB",
|
|
"description": "Redis 允许 FLUSHDB 操作",
|
|
"rule_type": "DML",
|
|
"severity": "warning",
|
|
"db_type": "redis",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "允许执行 FLUSHDB 操作,将清空当前数据库",
|
|
},
|
|
{
|
|
"name": "RedisMaxKeyLen",
|
|
"description": "Redis Key 最大长度限制",
|
|
"rule_type": "DDL",
|
|
"severity": "warning",
|
|
"db_type": "redis",
|
|
"pattern": None,
|
|
"value": "256",
|
|
"message": "Key 长度不得超过256个字符",
|
|
},
|
|
{
|
|
"name": "RedisRequireTTL",
|
|
"description": "Redis 写入操作必须设置 TTL",
|
|
"rule_type": "DML",
|
|
"severity": "error",
|
|
"db_type": "redis",
|
|
"pattern": None,
|
|
"value": None,
|
|
"message": "写入 Key 时必须设置过期时间(TTL)",
|
|
},
|
|
{
|
|
"name": "RedisDefaultTTL",
|
|
"description": "Redis 默认 TTL 值(秒)",
|
|
"rule_type": "DML",
|
|
"severity": "info",
|
|
"db_type": "redis",
|
|
"pattern": None,
|
|
"value": "3600",
|
|
"message": "默认 TTL 为3600秒(1小时)",
|
|
},
|
|
]
|
|
|
|
# 映射: db_type → 种子规则列表
|
|
SEED_RULES_MAP = {
|
|
"mysql": MYSQL_SEED_RULES,
|
|
"postgres": POSTGRES_SEED_RULES,
|
|
"redis": REDIS_SEED_RULES,
|
|
"mongodb": MONGODB_SEED_RULES,
|
|
}
|