如上文所述,PawSQL审核引擎的设计目标是使用尽量少的审核规则,覆盖尽可能全的SQL语法和结构,确保尽量高的审核正确率。
PawSQL,公众号:PawSQLPawSQL审核 | SQL审核引擎的设计目标
基于以上的三个目标,PawSQL设计了自己的SQL审核规则体系。
PawSQL的审核规则体系是以SQL对数据库的操作类型分成三大类,即对象设计、对象操作和数据操作。
即使我们通过抽象化、参数化尽量减少审核的规则,PawSQL的整个规则体系也包含了171个审核规则,这些规则对于大多数的数据库都是适用的。
1. 对象设计审核
数据库对象的设计是数据库架构和开发过程中的一个重要环节,它涉及到创建和管理存储、组织和检索数据所需的结构,它描述的是数据库的静态信息。数据库对象设计是确保数据库系统高效、安全、可靠运行的基础。它影响数据完整性、一致性、准确性、可维护性、性能等各个方面。一个精心设计和优化的数据库对象结构对于任何依赖于数据存储和检索的组织来说都是至关重要的。
对象设计的审核的审核对象虽然是SQL语句,但是其实它是对SQL操作的结果进行审核。它们和SQL语句的类型没有一一对应的关系,譬如审查规则`小数建议使用精确浮点数decimal或number`,它既检查CREATE TABLE语句, 也检查ALTER TABLE ADD COLUMN,和 ALTER TABLE MODIFY COLUMN.
PawSQL中对于对象设计的审核规则是按照数据库对象来进行组织的,当前的版本共计25个审核规则:
2. 对象操作审核
数据库对象的操作通常指的是对数据库中的各种对象的增、删、改等行为。这些操作包括但不限于对表、视图、索引、存储过程、触发器等对象的管理。某些针对数据库对象的修改可能会影响现有应用程序的兼容性,需要重新设计索引和查询。在高并发环境下,结构修改可能会暂时影响服务可用性。
PawSQL审核规则体系中对象操作主要是捕获这其中可能对数据库带来负面影响的操作,并提供警示信息。PawSQL审核规则体系中对象操作的规则集共计15个。
3. 数据操作审核
SQL中的数据操作包括DML语句和DQL语句,主要涉及数据的插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)等操作。这些数据操作语句的不恰当写法可能会导致SQL在正确性、安全性、可维护性、性能方面的各种问题,PawSQL针对数据操作语句从这四个角度共设计了85个审核规则。