#PL源码加密

默认情况下,用户创建的各项PL对象源代码作为文本被存储在数据库表中。某些源代码可能涉及企业核心业务逻辑等隐私信息,对其进行加密存储也是企业信息安全的重要一环。

yaswrap是YashanDB提供的专用于对PL源代码进行加密包装的工具,采用与Oracle兼容的加密算法,无法由用户指定。

  • 用户可以使用该工具对指定代码文件进行加密并输出包装后的文件,避免他人通过数据库视图(例如*_SOURCE)查看到PL源码。

  • 用户可以直接执行yaswrap加密后的密文创建PL对象(数据库表中存储的也是密文),该PL对象后续仍可正常执行,用户对系统的加/解密无感知。

用户如需重建一个加密包装后的PL对象,不允许直接在数据库中编辑(直接编辑会导致过程体无法正常执行),需先修改源文本文件再重新使用yaswrap进行加密包装。

Caution:

不建议使用PL源码加密方式保护/隐藏密码或表名。

以下为对一个PL源码进行加密包装和解密使用的操作示例:

  1. 如下为原始PL语句,保存在mywrap.sql文件中:
CREATE OR replace FUNCTION myAdd(a INT, b INT) RETURN INT AS
BEGIN 
RETURN a + b;
END;
/
  1. 使用yaswrap工具对mywrap.sql进行包装,生成包装后的mywrap.plb文件:
$ yaswrap iname=mywrap.sql
YashanDB PL Wrapper: Debug 22.1.0.15 x86_64

Processing mywrap.sql to mywrap.plb
  1. 生成的mywrap.plb内容:
CREATE OR replace FUNCTION myAdd WRAPPED 
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
46 79
VNCA8yPUw4/UNq3WZDDPDrXdbhkwgwzV1wzR+kdyXoU79Vmhs1rDhUfVs8xa4czsnukmbGPp
Qsph5uB/6gknI8lB4R9JwyHMNbqo+uzVKpaV7Pumk7Jvwg==

/
  1. 通过yasql执行加密后的PL语句:
-- 执行包装后的PL语句
CREATE OR replace FUNCTION myAdd WRAPPED
  2 a000000
  3 354
  4 abcd
  5 abcd
  6 abcd
  7 abcd
  8 abcd
  9 abcd
  10 abcd
  11 abcd
  12 abcd
  13 abcd
  14 abcd
  15 abcd
  16 abcd
  17 abcd
  18 abcd
  19 8
  20 46 79
  21 VNCA8yPUw4/UNq3WZDDPDrXdbhkwgwzV1wzR+kdyXoU79Vmhs1rDhUfVs8xa4czsnukmbGPp
  22 Qsph5uB/6gknI8lB4R9JwyHMNbqo+uzVKpaV7Pumk7Jvwg==
  23
/


SELECT myAdd(1, 2) FROM dual;

  MYADD(1,2)
------------
          3



-- 从USER_SOURCE中查看function的文本

SELECT text FROM USER_SOURCE WHERE name = 'MYADD';

TEXT
----------------------------------------------------------------
CREATE OR replace FUNCTION myAdd WRAPPED
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
46 79
VNCA8yPUw4/UNq3WZDDPDrXdbhkwgwzV1wzR+kdyXoU79Vmhs1rDhUfVs8xa4czsnukmbGPp
Qsph5uB/6gknI8lB4R9JwyHMNbqo+uzVKpaV7Pumk7Jvwg==

pdf-btn 下载文档
copy-btn 复制链接