OneProxy :: 可透明审计sqlplus和PL/SQL Developer等工具SQL操作的中间件

平民软件发布支持JDBC协议的Oracle SQL审计中间件后,许多用户勇跃地偿试,提了不少建议,其中最大的反馈是希望能支持OCI协议,可以继续使用sqlplus、PL/SQL Developer等工具,而不必转向SQL Developer这样的Java工具(自测Java工具还是太慢,体验没有基于OCI的工具好)。

经过平民软件工程师数个月的攻击,OneProxy for Oracle已经可以支持部份平台的OCI协议,可以对基于OCI的工具进行透明的SQL审计了。OCI协议支持如下:

  • 只支持OCI 11g R2的版本,客户端必须为11g R2。
  • 不支持客户端和服务器端同平台的连接(OCI协议可以说是非常变态)。
  • 同时支持32位客户端和64位客户端。
  • 客户端平台仅测试了Windows平台,其他平台未作足够测试。
  • 服务器平台仅测试了Oracle 11g R2 for Linux x86_64平台,其他平台未作足够测试。

使用sqlplus工具时,可以使用Oracle InstantClient 11g R2版本,在Navicat、PL/SQL Developer工具中也可以很方便地选择OCI版本,最新版本同时支持OCI和Java工具连接。接下来只需要连接到OneProxy的端口(不用再连接到Oracle著名的1521端口)就行了,例如从Windows通过OneProxy连接到Oracle XE版本,并进行一个查询:

C:\win32>sqlplus system/oracle@192.168.1.120:8221/XE

SQL*Plus: Release 11.2.0.1.0 Production on Thu Feb 16 19:19:50 2017

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> show sga;

Total System Global Area  417546240 bytes
Fixed Size                  2227080 bytes
Variable Size             310379640 bytes
Database Buffers          100663296 bytes
Redo Buffers                4276224 bytes
SQL>

而在OneProxy的审计日志中,则可以看到show sga所对应的查询命令,如下所示:

[A][2017-02-16 19:19:54][192.168.1.136:13458][WORKGROUP\ANYSQL][loufangxin][00000][5][1916767878][18] SELECT DECODE(null,”,’Total System Global Area’,”) NAME_COL_PLUS_SHOW_SGA, SUM(VALUE), DECODE (null,”, ‘bytes’,”) units_col_plus_show_sga FROM V$SGA UNION ALL SELECT NAME NAME_COL_PLUS_SHOW_SGA , VALUE, DECODE (null,”, ‘bytes’,”) units_col_plus_show_sga FROM V$SGA

在审计日志中依次记录了SQL操作的时间、发起操作的机器名、操作系统的用户名、SQL执行错误代码、记录数、执行时间、还原绑定变量后的SQL语句等非常有用的审计信息。欢迎对Oracle SQL审计技术感兴趣的联系平民软件进行测试。