[Oracle]透明数据加密技术 - TDE
Oracle TDE的全称是Transparent Data Encryption 透明数据加密,从10gr2开始支持基于列的加密,从11g开始支持基于表空间的加密。它的优点是对应用透明,管理简便,无需应用设置,但它也有如下限制:
– 只能使用B-Tree索引
– 加密的列无法对索引进行rang scan操作。
– 外部对象
– 可传输表空间
– exp/imp操作
TDE - 基于列的加密
由于有了Oracle的TDE-基于列的加密,你所要做的只是定义需要加密的列,Oracle将为包含加密列的表创建一个私密的安全加密密钥,然后采用你指定的加密算法加密指定列的明文数据。
TDE支持的加密算法有:
3DES168 AES128 AES192 AES256
具体demo
1.进入监听目录 创建sqlnet.ora文件 (参考: Net Services Reference-> 5 Parameters for the sqlnet.ora File)
WALLET_LOCATION=
(SOURCE=
(METHOD=file)
(METHOD_DATA= (DIRECTORY=/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/wallet)))
创建之前,先创建目录
2.创建密码 (参考: SQL-〉alter system)
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "welcome1";
进入目录查看是否生成文件
[oracle@node1 wallet]$ ll
total 4
-rw-r--r-- 1 oracle oinstall 1573 Apr 22 17:55 ewallet.p12
3. 创建 tablespace (参考: SQL Language Reference->create tablespace)
CREATE TABLESPACE test_en
DATAFILE '/u01/app/oracle/oradata/orcl/test_en01.dbf' SIZE 100M
ENCRYPTION
DEFAULT STORAGE (ENCRYPT);
4.进行验证
创建一个用户,用这个用户创建一个表
SQL> create user test_en identified by oracle default tablespace test_en;
User created.
SQL> grant dba to test_en;
Grant succeeded.
SQL> conn test_en/oracle
Connected.
SQL> create table tb1 as select * from scott.dept;
Table created.
SQL> select * from tb1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
关闭
SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "welcome1";
在使用创建的用户查看表
SQL> select * from tb1;
select * from tb1
*
ERROR at line 1:
ORA-28365: wallet is not open
wallet 打开
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "welcome1";
再次进行查看
SQL> select * from tb1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON