Skip to content
xiaowu edited this page Dec 11, 2023 · 6 revisions

SQL审核

SQL上线

Grant授权(写在使用前)

第一分部:goInception

为避免出现如下access denied问题,需提前为各数据库进行grant操作

-- 针对goInception - 用于备份库回滚,建议赋予用户权限
-- 这里的`inception_bak`指的是goinception中的BACKUP_USER用户名
GRANT SELECT, INSERT, CREATE ON *.* TO 'inception_bak'@'archery所在主机ip'

在提交完工单后,会新增两个库, 表名还有$$特殊符号的$$inception_backup_information$$,如下:

第二部分:各实例数据库授权

-- 关于需要SUPER权限的原因:https://github.com/hhyo/Archery/issues/129#issuecomment-483599093
-- 在某些云实例中不支持赋权SUPER权限,但问题本质可能是因为不支持当前binlog_format
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SUPER ON *.* TO '用户名'@'archery所在主机ip'

功能说明

MySQL支持比较完整的SQL审核功能,且依赖Inception/goInception工具,oracle、mongodb支持部分审核规则,其他数据库仅支持语句切分和执行,不做审核

MySQL

  • 建议使用前先完整阅读相关文档:goInceptionInception
  • 在系统管理-配置项管理,有Inception/goInception配置项
  • 建议优先选择goInception,Inception已经停止维护

Oracle

  • 支持解析运行Oracle下PLSQL执行块功能 #327 #688
  • 支持Oracle数据修改备份 #701
  • 支持Oracle update/insert/delete/create table/create index的语法SQL审核 #701

MongoDB

  • mongodb的审核使用mongo的命令执行,所以需要在archery部署的机器或容器中自行下载mongo,并配置环境变量
  • mongodb审核在创建索引时必须使用backup:true
  • mongodb审核影响行数没有做提前检测,默认为0
  • mongodb审核不支持对带.的文档名做操作:如system.roles、system.version
  • mongodb审核内容中是对需要配对的字符{}是简单判断左右字符个数是否相等,如果有包含以下:{key:"value_{_"} 或{key:"value("} 或{key:"value]"}等情况会报语法错误

相关配置

SQL分析