开发者社区 > 数据库 > 正文

要拒绝对字段a的sum查询操作,规则这么写对吗?

dms中if
@fac.current_sql matchs 'sum(a)'
then
@act.reject_execute '拒绝此类查询'
end

要拒绝对字段a的sum查询操作,规则这么写对吗?

展开
收起
小易01 2023-07-19 19:19:22 63 0
3 条回答
写回答
取消 提交回答
  • 在DMS中,可以使用规则来拒绝某些特定类型的查询操作。根据您提供的代码片段,规则的写法基本正确,但需要做一些修改。

    以下是修改后的规则示例:

    if
        @fac.current_sql matches '.*\\bsum\\(a\\)\\b.*' -- 正则表达式匹配包含 sum(a) 的语句
    then
        @act.reject_execute '拒绝此类查询'
    end
    

    这个规则将匹配包含 sum(a) 的语句,并触发拒绝执行操作。请注意以下几点:

    1. 使用正则表达式进行匹配:在规则中,我们使用 matches 条件和正则表达式来匹配查询语句中是否包含 sum(a)。正则表达式 '.*\\bsum\\(a\\)\\b.*' 中的 \\b 表示单词边界,用于确保只匹配完整的 sum(a) 子串。

    2. 脱敏规则的应用对象:请确保将该规则应用于正确的数据库、表或字段。可以在规则的配置中指定具体的数据库、表名等信息,以便精确匹配和拒绝操作。

    3. 规则的生效范围:请注意规则的生效范围,确保它适用于要拒绝的查询操作的实际场景。

    请根据您的实际需求和数据库环境进行相应的调整,以确保规则的正确性和准确性。同时,请注意谨慎使用拒绝执行操作,确保不会影响正常的业务操作。

    2023-07-25 19:04:55
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在DMS中,可以使用规则引擎来控制SQL的执行权限和范围。根据您提供的规则,如果要拒绝对字段a的sum查询操作,可以使用以下规则:

    Copy
    if @fac.current_sql matches 'select\s+sum\(\sa\s\)' then
    @act.reject_execute '拒绝此类查询'
    end
    在上述规则中,使用了正则表达式来匹配查询语句中的sum(a)操作,如果匹配成功,则拒绝执行该查询语句。

    2023-07-23 09:19:01
    赞同 展开评论 打赏
  • 意中人就是我呀!

    这个目前应该不支持。此回答整理至钉群“阿里云DMS数据管理用户交流群”。

    2023-07-19 23:00:01
    赞同 展开评论 打赏
问答分类:
问答地址:

数据库领域前沿技术分享与交流

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载