暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle-TDE

原创 从小就很霸道的胖虎 2023-07-17
1338


Oracle-TDE研究及测试

一、简介

OracleTDE有列加密与表空间加密。结合实际需求,重点解释表空间加密。是针对Oracle数据文件加密的一种防护手段,防止数据文件被盗造成数据泄露。同时在TDE功能打开的过程中,数据泵导出的逻辑备份文件是被加密的,同样具备防泄漏功能。OracleTDE具备更换加密算法、自动登录钱包管理密钥等优势。

二、要点

1、TDE支持Oracle版本11g及以上

2、表空间加密仅在创建表空间时生效,中途修改表空间时添加TDE功能无效。

3、TDE支持数据泵(expdp)导出备份文件,无密钥无法被还原。密钥一致时,可还原上述备份文件。

4、利用rman进行加密备份时,未加密的表空间也可rman加密导出。

三、过程

1、Oracle-TDE加密过程

1.1、创建钱包(wallet)

/data/u01/app/oracle/admin/orcl

mkdir wallet

chown oracle:oinstall wallet/


1.2、设置wallet密码

alter system set encryption key identified by "123456";----password即为密钥密码。

1.3、打开/关闭钱包

alter system set wallet open identified by "123456";打开钱夹。

alter system set wallet close identified by "123456";


1.4、创建加密表空间

create temporary tablespace user_temp

tempfile '/oradata/u01/app/oracle/oradata/secure01.dbf'

size 50m

autoextend on next 50m

maxsize 10240m

extent management local;

CREATE TABLESPACE securespace_test

DATAFILE '/data/u01/app/oracle/oradata/securespace_test01.dbf'

size 50m

autoextend on next 50m

maxsize 10240m

ENCRYPTION

DEFAULT STORAGE(ENCRYPT);


select tablespace_name,ENCRYPTED from dba_tablespaces;


1.5、在加密表空间内创建表

create table test.test01 tablespace securespace_test as select * from scott.emp;


2、测试数据文件加密效果

2.1查看被加密的数据文件

user01.dbf是未加密的表空间,通过命令查看,内容正常。


encrypted_tablespaces.dbf是加密的表空间,通过命令查看,内容乱码。


3、测试逻辑备份文件(数据泵expdp/impdp)加密效果

环境1(本地测试库79)

环境2(电信测试库131)

步骤:将环境1中的加密表空间逻辑导出(expdp),环境2首先关闭TDE功能,将逻辑文件导入,如无法导入,说明加密成功,可以导入则加密失败。然后环境2打开TDE功能,将逻辑文件导入,如导入成功,说明加密成功,不可导入则加密失败。



 

 

 

3.1环境1逻辑导出

expdp test/ABC_abc123456 schemas=test directory=data_dir dumpfile=securespace_test.dmp  logfile=export.log

3.2环境2逻辑导入

Impdp test/ABC_abc123456 schemas=test directory=data_dir dumpfile=securespace_test.dmp table_exists_action=replace  logfile=export.log

环境2关闭TDE功能,导入失败,提示wallet未打开。说明加密成功


环境2开启TDE功能,导入成功。


 

4、测试物理备份文件(rman)加密效果

4.1、方式一口令加密:适合异机恢复。输入临时密码。对表空间数据文件加密,删除对应数据文件后,进行恢复,如果可以正常恢复,说明加密失败,如果提示需要解密,说明加密成功。

RMAN> show all


#启用加密

RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;


#查看

RMAN> show encryption for database;


#only表示只以口令的方式加密,设置口令oracle

RMAN> set encryption on identified by 'oracle' only;


#备份表空间,然后关库

RMAN> backup tablespace securespace_test format '/tmp/test/securespace_%d_%s';


RMAN> shutdown abort;


#删除物理文件

[oracle@db2 ~]$ rm -f securespace_test01.dbf

#缺文件,启动报错

RMAN> startup;


#restore报错,提示钱包没有打开

RMAN> restore tablespace securespace_test;


 

#设置解密口令

RMAN> set decryption identified by 'oracle';


#restore正常

RMAN> restore tablespace securespace_test;


RMAN> recover tablespace users;


RMAN> alter database open;


4.2方式二TDE透明加密:适合本地加密和恢复。透明(Transparent)模式 默认的加密方式,比较适合于同一服务器进行的备份和恢复,换台服务器就无法识别了,因为缺少必备的密钥。 这种方法不需要设置密码,很适合在本地的备份与恢复,如果备份不需要传到其他的机器上, 建议采用这样的加密方法。

#wallet配置

/u01/app/oracle/product/11.2/dbhome_1/network/admin/sqlnet.ora

中加入条目

ENCRYPTION_WALLET_LOCATION=

  (SOURCE=(METHOD=FILE)(METHOD_DATA=

    (DIRECTORY=/u01/app/oracle/product/11.2/dbhome_1/network/admin/wallet)))

 

#确保目录存在

mkdir /u01/app/oracle/product/19.3/dbhome_1/network/admin/wallet

 

#创建mster key

SQL> alter system set key identified by "123456";

 

 

#打开钱夹

SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "123456";

System altered.

关闭钱夹:ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "123456";

 

#wallet创建好之后,rman备份可以用Wallet选项来备份。

RMAN> configure encryption for database on;

RMAN> set encryption on;

 

#备份,关库,关库之后钱夹也会close,恢复时要打开

backup tablespace users format '/data/oracle_bak/user_%d_%s';

shutdown abort

rm -f users01.dbf--进入数据目录下删除

 

#启动报错

startup


#restore显示钱夹未打开

RMAN> restore tablespace users;


 

#打开钱夹,正常恢复

RMAN> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "123456";


 

RMAN> restore tablespace users;


RMAN> recover tablespace users;


RMAN> startup


结论:

Oracler-TDE满足公司数据安全需求,对数据文件、备份文件均可实现加密。数据库运维人员掌握开通加密功能,完成功能测试,可择期开通。

5、备注:

5.1参考链接(包含更换密钥等步骤):

(50条消息) Oracle TDE透明加密研究以及测试_oracle tde 基於表加密_iverycd的博客-CSDN博客

rman加密备份(口令、TDE透明、混合) - EverEternity - 博客园 (cnblogs.com)

5.2数据具体导入导出过程略,仅保留关键步骤。

CREATE USER test IDENTIFIED BY 123456

PROFILE DEFAULT

DEFAULT TABLESPACE securespace_test;

GRANT connect,resource,dba TO test;

grant create session TO test;

create directory data_dir as '/data/u01/app/oracle';

select * from dba_directories;

grant read,write on directory data_dir to test;

grant exp_full_database,imp_full_database to test;

 

最后修改时间:2023-07-18 09:11:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论