更新时间:2024-04-03 GMT+08:00
分享

SQL防御概述

什么是SQL防御

当前大数据领域的SQL引擎层出不穷,在带给解决方案多样性的同时,也暴露出一定的问题,例如SQL输入语句质量良莠不齐、SQL问题难定位、大SQL语句消耗资源过多等。

低质量的SQL会对数据分析平台系统带来不可预料的冲击,影响系统的性能或者平台稳定性。

仅Spark 3.3及以上版本支持SQL防御功能。

DLI SQL防御功能介绍

DLI在Spark SQL引擎中增加SQL防御能力,基于用户可理解的SQL防御策略,实现对典型大SQL、低质量SQL的主动防御,包括事前提示、拦截和事中熔断,并不强制改变用户的SQL提交方式、SQL语法,对业务零改动且易落地。

  • 支持可视化配置SQL防御策略,同时可支持防御规则的查询和修改。
  • 每个SQL引擎在进行SQL业务响应、执行过程中,基于SQL防御策略进行主动防御行为。
  • 管理员可将SQL防御行为在“提示”、“拦截”、“熔断”选项之间进行灵活切换,系统会将发生的SQL防御事件实时写入到防御审计日志中。运维人员可进行日志分析,评估现网SQL质量,提前感知潜在SQL风险,并做出有效预防措施。

SQL防御规则包含以下类型的动作:

  • 提示:基于纯粹的SQL语法规则进行拦截或提示。系统在SQL请求满足条件时,可对该SQL请求进行提示处理。
  • 拦截:基于与数据表的统计信息、元数据信息等内容有关的规则进行拦截。系统在SQL请求满足条件时,可对该SQL请求进行中止处理。
  • 熔断:基于SQL语句运行时的系统动态信息(如CPU、内存、IO等)的规则进行阻断。系统在SQL请求满足条件时,会阻断该SQL任务。

DLI SQL防御规则约束与限制

  • 仅Spark 3.3及以上版本支持SQL防御功能。
  • 同一个队列,同一个动作的防御规则仅支持创建一条。
  • 每条规则最多可以关联50个SQL队列。
  • 每个项目最多可以创建1000条规则。
分享:

    相关文档

    相关产品