#PL源码加密
默认情况下,用户创建的各项PL对象源代码作为文本被存储在数据库表中。某些源代码可能涉及企业核心业务逻辑等隐私信息,对其进行加密存储也是企业信息安全的重要一环。
yaswrap是YashanDB提供的专用于对PL源代码进行加密包装的工具,采用与Oracle兼容的加密算法,无法由用户指定。
用户可以使用该工具对指定代码文件进行加密并输出包装后的文件,避免他人通过数据库视图(例如*_SOURCE)查看到PL源码。
用户可以直接执行yaswrap加密后的密文创建PL对象(数据库表中存储的也是密文),该PL对象后续仍可正常执行,用户对系统的加/解密无感知。
用户如需重建一个加密包装后的PL对象,不允许直接在数据库中编辑(直接编辑会导致过程体无法正常执行),需先修改源文本文件再重新使用yaswrap进行加密包装。
Caution:
不建议使用PL源码加密方式保护/隐藏密码或表名。
以下为对一个PL源码进行加密包装和解密使用的操作示例:
- 如下为原始PL语句,保存在mywrap.sql文件中:
CREATE OR replace FUNCTION myAdd(a INT, b INT) RETURN INT AS
BEGIN
RETURN a + b;
END;
/
- 使用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
- 生成的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==
/
- 通过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==