ORACLE 透明加密(TDE)
/*
author:CH
date:2015
theme:oracle TDE test
*/
一透明加密(TDE, Transparent Data Encryption)
参考:
http://www.oracle.com/technetwork/cn/tutorials/tde-096772-zhs.html#t3
http://www.eygle.com/archives/2011/09/oracle_transparent_data_encryption.html
http://blog.itpub.net/17203031/viewspace-681825/
作用:防止丢失介质后会被别人读取到数据。在wallet打开的情况下,使用sql语句查询实际上是没有限制的。
二、操作
操作开始,测试于192.168.8.126(ORACLE_SID=db),使用oracle用户登录电脑。
# su – oracle
1. 修改 sqlnet.ora,确认加密文件放在哪里
# cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/
# vim sqlnet.ora
/*
ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/u01/app/oracle/product/11.2.0/dbhome_1))) --红色的是路径
*/
2. 打开钱夹,创建密密钥
# sqlplus
(1)必须以dba身份登录
(2)打开wallet修改密钥,有两种选择,一种“万能”,一种“钱夹”(wallet)
--万能密钥
SQL> alter system set key identified by "test123456";
--钱夹密钥(当前未使用)
SQL> alter system set wallet open identified by "test123456";
打开wallet,设置好密钥之后,完成基础设置。
--关闭
SQL> alter system set encryption wallet close identified by "test123456";
加密文件,路径
3. 要确认启用了透明数据加密,一般而言都是开了的
若是没开,可以到em去开启
4.对表中的列进行加密
--对value1进行加密(在126上面有这个表,有几条数据)
create table test2
(
id int ENCRYPT NO SALT,
value1 number ENCRYPT ,
value2 int
);
create index idx1_test2 on test2(ID);
--若是关闭了wallet,查询会报错
SQL> alter system set encryption wallet close identified by "test123456";
select value1 from test2;
select * from test2;
ORA-28365: Wallet 未打开
5.可以对表空间进行加密
6.查看透明加密情况:
l dba_encrypted_columns:记录所有的加密字段;
l all_encrypted_columns:记录当前用户所能访问到的所有加密字段;
l user_encrypted_columns:记录当前用户自身Schema所有的加密字段;
7.取消加密
可以在em中管理
8.Salt参数
(1)在加密列时,存在两个选项:Salt和No Salt。
Salt在加密前对数据增加随即字符串,增加破解的难度,使得同样的字符串加密结果不同;而对于NO Salt,则同样字符串可以获得同样的加密输出,其安全性相对略低。
(2)在加密列上,如果使用Salt方式,则不能创建索引,Salt加密和索引两种属性互斥,不能同时设置。
(3)默认Salt.
9.TDE的缺点
(1)使用TDE的情况下,数据库文件中保存的数据值是进行过加密的。加密过的列值一般要长于原始数据值,所以使用TDE之后数据表要比不使用大。
(2)TDE的加解密操作完全是建立在自动加解密基础上。插入数据、修改数据的时候会自动将数据加密后存放在数据表中;选择数据时会自动的将加密过的列值进行解密。这种操作无形中是增加了数据操作的成本
(3)TDE是不负责数据传输阶段加密的。数据从DBMS传出后,还是以明文方式传输到应用。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。