Oracle的数据保存在物理的数据文件中,而各种备份文件中同时包含了宝贵的数据,Oracle默认以明文的方式将数据保存在数据文件。此时,利用UE打开数据文件,可以查找到插入的字符串,或者利用ORACLE的工具能直接识别数据文件中的数据,给安全带来隐患。
在ORACLE 10G R2中强调了TDE(Transparent Data Encryption)的出现,用于将数据以加密的方式存储在数据文件中,即使别人获取了数据文件,也无法读取数据,但这需要经过配置才能实现,如下:
1. 创建用于保存密钥的WALLET
可以采用Wallet Manager或者使用命令行
采用命令行时,先在SQLNET.ORA中配置
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=F:\oracle\admin\ora10g\wallet)))
确定目录后即可创建并打开wallet
alter system set encryption key authenticated by "oracle123";
(这里需注意相应目录下是否存在wallet目录及目录中是否已经存在文件,同时若采用图形界面创建过wallet,则最好重启数据库来消除影响)
2. 设置普通列和加密列
创建一个测试表空间
create tablespace app_data
datafile 'F:\oracle\oradata\ora10g\app_data01.dbf' size 10m;
conn scott/tiger
create table t1(
v1 varchar2(50),
v2 varchar2(50) encrypt using 'AES128')
tablespace app_data;
insert into t1 values('hello', 'world');
insert into t1 values('good','morning');
commit;
--确保数据写入数据文件
conn / as sysdba
alter system checkpoint;
alter system switch logfile;
3. 通过UE查看进行对比
以UE打开app_data01.dbf,可以看到许多数字
按CTRL+H,此时CTRL+F分别进行查找非加密和加密的列
这里体现加密的区别