360 Secure SkillHub
360 安全技能中心

Sql Audit

作为 SQL 工作流末端环节,读取上一步生成的 SQL 候选并做静态检查,拦截没有 Where 条件的全表扫描、写操作和跨库非法关联;随后连接 StarRocks/Doris 真实执行,输出查询数据、行数与状态,结果为空时给出重试建议。

lovenervermore
lovenervermore
热度 83.83
最近更新 2026-05-18 12:27:34
分类:安全依赖:代码执行 / 读写文件 / 第三方 API / 内部调用大模型应用场景:代码审查 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add sql-audit
Metadata
name
sql_audit
slug
sql_audit
version
1.0.2
description
SQL 语法与安全审核,它将真正执行,并返回执行的数据结果
metadata
{"clawdbot":{"emoji":"🐬"}}

Skill: sql_audit

  • Description: SQL 语法与安全审核 + 真实执行,返回查询数据结果。

  • Inputs: [sql_output](从 skills/.workflow/sql_output.json 读取)

  • Outputs: [data, row_count, success](写入 skills/.workflow/audit_output.json)

  • ID: sql_audit

  • Role: 质量与安全哨兵 + 执行引擎

  • 功能描述:在 SQL 执行前进行静态扫描,确保语法正确;通过连接真实 StarRocks/Doris 执行 SQL 并返回结果。

  • 输入参数(来自 sql_output.json):

    • sql (string): 主候选 SQL
    • sql_candidates (list): 多候选 SQL(重试用)
    • query (string): 用户原始问题
    • indicator_metric (list): 指标维度(重试时用于生成简化候选)
  • 输出结果:

    • success (boolean): 执行是否成功。
    • data (list): 查询结果行(每行为 dict)。
    • row_count (int): 结果行数。
    • need_retry (boolean): 若结果为空,建议重新生成 SQL。
    • new_indicator_metrics (list): 简化后的候选指标(供重试时传给 sql_generator)。
  • 拦截规则:拦截全表扫描(无 Where 条件);拦截写操作;拦截跨库非法关联。

依赖(通过 .env 配置)

服务 .env 配置键
StarRocks/Doris DB_HOST / DB_PORT(默认 9030)/ DB_USER / DB_PASSWORD / DB_NAME
Gemini(兜底候选生成) GEMINI_API_URL / GEMINI_API_KEY / GEMINI_TOKEN

独立运行说明

# 前置:先运行前四步
python ../rewrite-question/rewrite_question.py --query "今天汉河店的成交额"
python ../recognize-intent/recognize_intent.py
python ../mult-call/multi_call.py
python ../sql-generator/sql_generator.py

# 运行 SQL 审核执行(从 .workflow/sql_output.json 自动读取)
python sql_audit.py

# 带清理(清除本步输出)
python sql_audit.py --clean

这是整条链路的最后一步,执行完毕后可查看 skills/.workflow/audit_output.json 获得最终结果。