数据安全治理解决方案供应商-昂楷科技

关于昂楷 WAP端banner
关于昂楷
 
关于复杂存储过程中昂楷审计能力剖析
发布时间:2022.09.24  /  作者:昂楷科技

什么是存储过程

存储过程是SQL语句和控制语句的预编译集合,保存在数据库里,可由应用程序调用执行,而且允许用户声明变量、逻辑控制语句及其他强大的编程功能。存储过程可以接受输入参数,并可具有输出参数,还可以返回单个或多个结果集。

_

存储过程的优点

1)允许模块化程序设计

只需创建一次存储过程并将其存储在数据库中,以后就可以在应用程序中任意调用该存储过程。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序代码而单独修改。

2)改善性能

如果某操作需要大量的SQL语句或需要重复执行,则用存储过程比每次直接执行SQL语句的速度要快。因为数据库管理系统是在创建存储过程时对SQL代码进行分析和优化,并在第一次执行时进行语法检查和编译,将编译好的可执行代码存储在内存的一个专门缓冲区中,以后再执行此存储过程时,只需直接执行内存中的可执行代码即可。

3)减少网络流量

一个需要数百行SQL代码完成的操作现在只需要一条执行存储过程的代码即可实现,因此,不再需要在网络中传送大量的代码。

4)可作为安全机制使用

对于即使没有直接执行存储过程中的语句权限的用户,也可以授予他们执行该存储过程的权限。

_

存储过程语法示例

CREATE OR REPLACE

PROCEDURE name [ (parameter [,parameter,…] ) ] IS //或AS

[说明:变量定义于此]

BEGIN

执行语句序列

[EXCEPTION

例外处理程序

END [name ];

用户通过create or repalce语句可以建立存储于服务器端的存储过程。存储过程不能用于sql语句。(Procedures cannot be used in SQLstatements;)

Procedure有0或多个参数,参数可是(IN), output (OUT), (IN OUT)

类型.

执行存储过程

set serveroutputon

直接执行:

execute my_testproc

exec my_testproc

存储过程里要返回一个结果集,就必须要用到游标。那么什么是游标呢?简而言之,SQL语句返回的结果通常为数据集,而游标可以在此基础上,像一个指针一样,对某些行结果进行处理。

适用场景

1)某些场景下,针对SELECT返回的集合,需要进行逐行读取,或者针对行数据进行某些操作。

2)在某些交互式程序中,集合不能作为有效的处理单元,这时候需要有针对的逐行或者部分进行处理。

_

存储过程审计的难点

审计类产品是基于旁路流量镜像进行工作的,需要抓取网络中数据库的流量进行解析还原,前面有讲到存储过程的优点有一条是减少网络流量,执行存储过程在网络传输的只是存储过程的名称和参数,具体的存储过程封装的SQL内容实际是在服务器本地执行的,没有相应的流量,所以只能审计到执行存储过程的动作,不能抓取到SQL,目前是业界难题。

_

复杂存储过程审计能力实践

昂楷某客户的业务系统使用大量存储过程语法,SQL翻译效果不直观,影响可读性,昂楷迎难而上,攻克了针对存储过程深度解析的难题,提取出存储过程的参数和值,重点是从存储过程中审计出药品相关的值,并配合翻译功能,展现可读性较好的中文描述信息。

翻译效果:用户[李明X] IP为[192.168.100.32]计算机用户名[Administrator] 上调用了[西药库药品明细账查询]窗口, 查询内容是{药房:西药库;项目:注射用艾普拉唑钠; 出入库类型:采购入库;至:

to_date(‘2022-05-01 00:00:00’,’yyyy/mm/dd hh24:mi:ss’),至:

to_date(‘2022-05-15 00:00:00’,’yyyy/mm/dd hh24:mi:ss’),}

昂楷审计产品(数据库审计、防统方)能够对SQL Server、Oracle、DB2、Sybase、MySQL 等数据库进行审计,审计的行为包括DDL、DML、DCL以及其它操作等行为。

审计的内容可以细化到库、表、记录、用户、存储过程、函数、游标、调用参数等等。检验一款数据库审计产品的标准,不仅要能满足常规的SQL审计,还要能满足复杂SQL,如存储过程、绑定变量、嵌套语句、函数、超长语句、脚本的审计,这样才能做到真正的完整审计。


推荐新闻
即刻免费体验昂楷安全防护
服务通道