fix(audit): enhance SQL audit middleware to utilize session context from streamExecute requests#623
Conversation
…ext from streamExecute requests and improve error handling
PR Reviewer Guide 🔍
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
User description
What this PR does
Fix DMS ODC SQL Workbench 审核中间件三处缺陷,详见 #622。
缺陷与修复
未启用审核反向阻塞 SQL 执行
AuditMiddleware在数据源未启用 SQL 审核时返回SqlWorkbenchAuditNotEnabledErr,把审核辅助能力变成主链路硬依赖。→ 改为
next(c)放行,由 ODC 执行 SQL。SQLE 审核缺少 schema 上下文
callSQLEAudit未透传SchemaName,依赖 schema 的规则会误报/漏报。→ 函数签名增加
schemaName参数,写入AuditSQLReq.SchemaName。sid解析不完整且会误切:did:原
LastIndex(":d")会把sid:xxx:did:123也按:d截断;仅识别纯 base64 JSON 一种形态。→ 与 ODC
pathUtil.generateDatabaseSid对齐,按三态顺序解析::did:{dbId}优先匹配(包含:d:子串):d:{urlEncodedDbName}次之,做url.QueryUnescape→ 引入结构体
streamExecuteSidInfo{datasourceID, schemaName, dbID}替代裸字符串返回。→ 新增
getODCDatabaseName:仅给dbID时,透传 ODC Session/XSRF Cookie 调GET /api/v2/database/databases/{id}反查库名。影响范围
streamExecute请求的审核辅助路径AuditSQLReq.SchemaName字段早已存在,DMS 透传后即生效,无需 SQLE 同步升级/api/v2/database/databases/{id}的调用,失败时仅降级,不影响 SQL 执行Related Issue
Closes #622
同步修复
本 PR 入
main;另起一份 PR 同步到release-4.2601.x。Description
修复审核中间件未启用审核时阻塞 SQL 执行问题
增强 sid 解析,支持 :d: 与 :did: 格式
新增 schemaName 获取并透传至 SQL 审核接口
优化错误处理,避免因解析失败阻塞主流程
Diagram Walkthrough
File Walkthrough
sql_workbench_service.go
修改审核中间件和 sid 解析逻辑internal/sql_workbench/service/sql_workbench_service.go