Wallet 简介:
Oracle Wallet(即内部加密技术 TDE( Transparent DataEncryption)
TDE 是 Oracle10gR2 中推出的一个新功能, 使用时要保证 Oracle 版本是在 10gR2 或者以上
Wallet 配置:
1. 创建一个新目录,并指定为 Wallet 目录
/home/oracle/ora_wallet

2. 设置 wallet 目录,在参数文件 sqlnet.ora 中,按照下面的格式加入信息
ENCRYPTION_WALLET_LOCATION=
(SROUCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=/home/oracle/ora_wallet)
)
)

3. 创建 maset key 文件,指定 wallet 密码,使用 sys 用户登入系统,建立加密文件
alter system set encryption key identified by oracle1;

启动,关闭 Wallet
启动:
alter system set encryption wallet open identified by oracle1;
关闭:
到此 Wallet 配置成功,创建了 master key 。
使用 Wallet 对数据进行加密
加密数据列:
对数据列加密是 TDE 一个常用的功能。常需要对数据库中某个表的某个敏感数据进行加密处理, 防止信息的外泄。
首先, 在定义数据表中的数据列 (或者修改数据列) 的时候, 使用 ENCRYPT 进行标注。表示这个字段是使用加密保护的重要数据。
注意不能对 sys 模式下拥有的对象进行加密:


现在对 sal 这一列进行加密

再次查看:

可以看到此时仍然可以看到数据,原因是因为钱包已经打开了。
我们把钱包关掉:

再次查看:

可以看到已经不允许被查看了。
表空间加密
1、表空间加密 (Tablespace encryption) 加密整个表空间, 创建在加密表空间中的所有对象自动加密。
2、表空间加密保护整个表空间中的数据的安全, 如: 数据文件或数据文件备份若被窃取, 没有密钥不可能查看到其中的数据, 这对于保护诸如军用级别的数据、his 系统的病人数据等非常重要
3、表空间加密 (Tablespace encryption) 使用透明数据加密结构 ( transparent data encryption architecture) 也就是使用与 ide(transparentdata encryption)类似的方法。表空间加密的密钥再次由一个称为主密钥的密钥二次加密, 主密钥存储在 wallet 中。加密后的表空间加密的密钥存储在数据库中的字典表中。
4、对加密数据的操作过程中, 加密数据同样受到保护:加入访问表空间里面加密的数据,数据在 undo 表空间,redo log 中都会被加密。
5、不能对已经在使用的表空间进行加密, 但是可以通过向加密表空间中利用 data pump 导入数据, 或使用 create table, as select. 或 alter table.move, 把已经存在数据转储到加密表空间
实例:
1. 设置主密钥,主密钥存储在 wallet 中
ENCRYPTION_WALLET_LOCATION=
(SROUCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=/home/oracle/ora_wallet)
)
)
和之前的配置相同。
2. 打开 Wallet

3. 创建加密表空间算法:
加密算法包括: 其中可以指定加密算法, 也可以不指定加密算法, 默认使用 AES128 算法。3DES168、AES128、AES192、AES256
查看当前表空间是否是加密的: 
4. 创建加密表空间:

再次查看表空间加密情况:

创建一个表指定在该加密表空间中:

如果现在把钱包关掉,理想情况应该是看不见该表的数据了,如下图。

加密表空间备份和恢复
注意,只有钱包打开的时候才能备份加密的表空间,restore 的时候也是如此。

模拟删除数据文件,加密表空间被误删除。

数据文件恢复完毕如图:

正常启动数据库





