数据库审计实例规则配置最佳实践
建议您开启风险告警,配置了风险告警后,当数据库访问触发了审计规则时,DBSS才能及时将风险通知给您,操作详情请参见设置告警通知。
场景一:核心资产数据库表的异常访问、告警
示例:某电商网站后台分为多个微服务,分别为订单管理服务、用户管理服务、商品搜索服务等,各服务部署在不同的服务节点上,有不同IP地址,如图1所示。
绿色箭头为正常访问路径,如果订单管理服务或商品搜索服务两个节点被攻陷,攻击者会从这两个节点去访问数据库的用户信息表,意图窃取用户信息,就属于数据库的异常访问。
在DBSS中可通过如下规则设置来检测数据库异常访问情况:
如图2所示填写的规则表示从192.168.1.1或192.168.3.3上发起的所有针对user_info表的操作都是“高风险”。
设置该规则后,所有异常访问或窃取表user_info的行为都会被审计,并且触发风险告警。
添加“操作对象”时,单击“添加操作对象”,填写“目标数据库”和“目标表”,单击“确认”,完成添加。
场景二:利用DBSS进行应用程序的SQL语句性能优化
示例:某应用上线之后发现当用户执行某些操作时总会出现界面长时间卡顿。经定位,发现后台应用访问数据库时出现好几秒的时延,但未定位到具体是哪些语句导致。
此时可利用DBSS的“数据库慢SQL检测”规则进行辅助定位,帮助开发人员进行性能优化。
操作步骤如下:
- 登入DBSS控制台,进入风险操作页面。
图4 进入风险操作页面
- 单击“数据库慢SQL检测”项“操作”列的“编辑”,在编辑页面的底部设置执行时长规则设置为大于1000毫秒。
图5 设置执行时长
- 单击“确认”,完成设置。
- 设置完成后,待运行一段时间,在语句页面下的规则名称搜索框中填入“数据库慢SQL检测”对检测情况进行检索。
图6 检索慢SQL检索情况
- 您可对检索的结果进行分析,对可进行优化的SQL进行优化。
- 若需要进行多轮优化,您可对规则中的“执行时长”字段进行修改,逐步缩小时间,直到达成性能提升的目标。
场景三:解决SQL注入风险的告警误报
DBSS提供SQL注入检测功能,并内置了一些SQL注入检测规则。您也可以自行添加SQL注入检测规则。
示例:若某些语句命中了SQL注入规则,但是经分析发现该语句并不是一条攻击语句,是自己程序生成的合法语句,如图7所示。
为了避免DBSS对误报SQL的持续告警,您可以通过设置白名单来解决该误报问题。
风险规则的优先级高于SQL注入规则。
如图7所示,执行的SQL语句如下:
SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'adventureworks' UNION SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'adventureworks' UNION SELECT COUNT(*) FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = 'adventureworks'
分析语句关键信息:该语句用SELECT语句访问information_schema库的TABLES表。
配置操作
- 进入风险操作页面。
图8 进入风险操作
- 单击添加风险操作,填写规则信息。
如图9所示,填写的规则表示:在information_schema库的TABLES表执行的SELECT语句为无风险。
添加“操作对象”时,单击“添加操作对象”,填写“目标数据库”和“目标表”,单击“确认”,完成添加。
图10 添加SQL注入白名单操作对象
- 单击下方“确认”,添加规则成功。
设置完成后,再次检测到该语句时,优先命中该条规则,识别为无风险将不再告警。