Oracle TDE与Redo日志的关系探索

TDE与Oracle redo日志相关的总结

 

1 与TDE相关的结论

10g与11g在这上安全方面的实现上还是有一定的差别的,尤其是在表上使用TDE时,11g与redo日志兼容得更好,大家如果想进一步探索其内部的存储,可以使用MyDUL进一步对数据文件进行挖掘,如果数据文件较小,可以用UltraEdit直接编辑查看。

 

A: 10g环境下,表上使用TDE时,用LogMiner分析的redo日志里的内容是"不支持的类型"的,这个可以肯定;

insert into "ACC"."CUST_PAYMENT_INFO"("FIRST_NAME","LAST_NAME","ORDER_NUMBER","CREDIT_CARD_NUMBER","ACTIVE_CARD") 

values ('Chris',Unsupported Type,'10002',Unsupported Type,'YES');

 

B:  表空间上使用TDE时,用LogMiner分析的redo日志里的内容是什以样的,注意,表空间加密只有Oracle11g后才支持。

redo日志里分析出来的内容为:

insert into "UNKNOWN""OBJ# 74132"("COL 1","COL 2","COL 3","COL 4","COL 5") values 

(HEXTORAW('456c6c696f7474'),HEXTORAW('4d65796572'),HEXTORAW('c3020107'),HEXTORAW('333734333636353939373131383230'),HEXTORAW('594553'));

以上数据通过utl_raw.cast_to_number或者utl_raw.cast_to_varchar2能还原为之前的明文数据,但是不能说明这些数据就仅仅是做个转码后就存放了,

因为打开底表空间数据文件时,没有看到明显的字母数字,看不到任何的明文数据。

 

C:在11g下面也同样也在表上去使用了一下TDE,发现用LogMiner分析的redo日志里的内容是

insert into "ACC"."CUST_PAYMENT_INFO"("FIRST_NAME","LAST_NAME","ORDER_NUMBER","CREDIT_CARD_NUMBER","ACTIVE_CARD") 

values ('Chris','Jiabo','10002','2344235235fff','YES');

即跟没有使用TDE时,redo日志里记录的内容相同,用UltraEdit去看了一下表空间数据文件,能明显看到有Chris,即第一个字段未使用TDE字段的信息。

 

2 TDE相关的材料

1)  在表或者表空间上启用TDE

更新 sqlnet.ora 文件以包含一个 ENCRYPTED_WALLET_LOCATION 条目,添加如下内容:

ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=E:\oracle\product\10.2.0\db_1)))

 

打开TDE钱夹:

connect /@orcl as sysdba
--打开钱夹并创建万能加密密钥,如果存在钱夹,则重新创建 TDE 的万能密钥,该命令在第一次使用钱夹时使用
alter system set key identified by "fnxjiabo"; 
--关闭钱夹
alter system set wallet close;
--打开钱夹,每次在数据库启动时,钱夹都需要打开,否则使用了TDE的数据将不可用
alter system set wallet open identified by " fnxjiabo";

 

--TDE在表上的定义使用:

create table cust_payment_info 
  (first_name varchar2(11), 
  last_name varchar2(10) ENCRYPT NO SALT
  order_number number(5), 
  credit_card_number varchar2(16) ENCRYPT NO SALT,
  active_card varchar2(3));

 

--使用了TDE的表空间定义,标红语法,只有11g才支持:

CREATE TABLESPACE securespace

DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\ORA11G\secureTest.dbf'

SIZE 32M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED

LOGGING

ONLINE

PERMANENT

EXTENT MANAGEMENT LOCAL AUTOALLOCATE

BLOCKSIZE 8K

SEGMENT SPACE MANAGEMENT MANUAL

FLASHBACK ON

ENCRYPTION USING 'AES128'

DEFAULT STORAGE(ENCRYPT);

 

 

 

2)  对redo日志的挖掘

--附加日志

alterdatabaseaddsupplementallogdata;

REM select member as LOG_FILE_LOCATION from v$logfile;

 

EXECUTE DBMS_LOGMNR.ADD_LOGFILE('E:\oracle\product\10.2.0\oradata\ljb\redo03.log', DBMS_LOGMNR.NEW);

EXECUTE DBMS_LOGMNR.ADD_LOGFILE('E:\oracle\product\10.2.0\oradata\ljb\redo02.log', DBMS_LOGMNR.ADDFILE);

EXECUTE DBMS_LOGMNR.ADD_LOGFILE('E:\oracle\product\10.2.0\oradata\ljb\redo01.log', DBMS_LOGMNR.ADDFILE);

--prompt start LogMiner:

EXECUTE DBMS_LOGMNR.START_LOGMNR(options => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.COMMITTED_DATA_ONLY);

Spool c:\show.log

select sql_redo from v$logmnr_contents where table_NAME = 'CUST_PAYMENT_INFO'and operation='INSERT';

spool off

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值