fix(audit): enhance SQL audit middleware to utilize session context from streamExecute requests (cherry-pick to 4.2601.x)#624
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
将 dms@
c3c45cc37f0a2f7ae0916c5a1c7a996e2234d883(main 上由 #623 跟进合并)的修复同步到release-4.2601.x。详细问题描述见 #622。同步策略
由于
fix-odc-audit相对release-4.2601.x领先 157 个 commit(含大量与本 issue 无关的特性),无法直接合并。本 PR 通过git cherry-pick c3c45cc3单独把 ODC SQL 审核中间件的修复挑出来,仅触及internal/sql_workbench/service/sql_workbench_service.go一个文件。cherry-pick 时合并冲突已按以下原则解决:只把 c3c45cc 直接涉及的语义同步过来,不夹带 main 上其他无关重构——
fmt.Errorf形式的中间错误返回(getDMSUserId / cache / GetDBService),不替换为errors.New(locale.Bundle.LocalizeMsgByCtx(...))i18n 风格(那是 main 上另一条独立改造);parseStreamExecuteRequest错误,sql == "" || sidInfo == nil || datasourceID == "",!isEnableSQLAudit这三处从
fmt.Errorf改为return next(c)。parseSidToDatasourceID→parseStreamExecuteSid,引入streamExecuteSidInfo{datasourceID, schemaName, dbID}、fillStreamExecuteSidFromBase64、getODCDatabaseName。StdEncoding改为URLEncoding(ODC 用Base64.getUrlEncoder(),sid 含-/_)。callSQLEAudit增加schemaName参数,在AuditSQLReq中带上SchemaName。缺陷与修复(同 main PR)
next(c)放行。SchemaName。sid解析不完整且会误切:did:→ 按 ODCpathUtil.generateDatabaseSid三态有序解析(:did:先于:d:,再回退 base64 JSON);仅给dbID时通过 ODC/api/v2/database/databases/{id}反查库名。验证
go build ./...通过go vet ./internal/sql_workbench/...通过Related
Notes
合并顺序建议:先合 #623 进
main,再合本 PR 进release-4.2601.x,避免后续从 main 回拣到 4.2601.x 时再次冲突。Description
修复未启用审核时阻塞 SQL 执行问题
重构 sid 解析逻辑,支持 ":did:" 与 ":d:" 格式
新增 ODC 库名获取(getODCDatabaseName)逻辑
调整 base64 解码方式与错误处理机制
Diagram Walkthrough
File Walkthrough
sql_workbench_service.go
优化 SQL 审核中间件逻辑及 sid 解析方式internal/sql_workbench/service/sql_workbench_service.go
格式