您的位置:首页 > 数据库 > Oracle

oracle透明数据加密技术(TDE)

2011-08-19 15:47 288 查看
在网上看到这篇加密的文章(http://www.examda.com/oracle/zhonghe/20080629/104051565.html),在机器上操作了一下,虽然数据列被成功的加密了,但是还是有很多疑问,下面把操作步骤记下,把自己的疑问也在这里提出来,有兴趣的朋友可以一起探讨,然后对我的疑问还望不吝赐教。

操作步骤:

透明数据加密

1、需要在 sqlnet.ora 文件下加一个 ENCRYPTED_WALLET_LOCATION 条目;

在文件的尾部添加这一句:

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=此处是用户指定的钱夹存放

位置目录)))

若不添加,设置密钥时会报ERROR at line 1: ORA-28368: cannot auto-create wallet 的错。

 可以为加密钱夹选择任何目录,但路径不应指向在数据库安装过程中创建的标准模糊钱夹 (cwallet.sso)。

2. 接下来,您需要打开钱夹并创建万能加密密钥。从终端窗口中,输入以下命令:

  connect / as sysdbaalter system set key identified by "welcome1";

  此命令的作用为:

   如果指定的目录中不存在加密钱夹,则将创建加密钱夹 (ewallet.p12)、打开此钱夹并创建/重新创建

TDE 的万能密钥。

  如果指定目录中存在加密钱夹,则将打开此钱夹并创建/重新创建 TDE 的万能密钥。

  之后,就可以测试数据了。

下面是实验记录:

alter system set key identified by "welcome1";

SQL> conn dodd/dodd123

create table test (id number,credit_card_number varchar2(16) ENCRYPT NO SALT);

SQL> insert into test values(1,'1231243242');

1 row created.

SQL> insert into test values(2,'33245235');

SQL> commit;

Commit complete.

SQL> select * from test;

ID CREDIT_CARD_NUMB

---------- ----------------

1 1231243242

2 33245235

可见,数据查看是明文,因为这个时候,加密钱夹已经打开,数据可以解密。

下面,重启数据库:

SQL> shutdown immediate

SQL> startup

因为数据库重启后,加密钱夹处于关闭状态,这时只要查询到加密的列,会提示加密钱夹没有打开。

如果用户想打开钱夹,必须具有alter system权限。

如果要打开加密钱夹,使用有权限账号登陆:

下面打开wallet:

  SQL> conn / as sysdba

  SQL> alter system set wallet open identified by "welcome1";

加密钱夹打开后,数据可以被操作。

另外,sys用户的表不能被加密。

可见:Oracle TDE是在数据层面上对表里的数据加密,而且不会影响数据库现有的权限控制策略。

丢失ewallet加密钱夹的话,是不能再解密数据的。

疑问:

1、当处wallet被锁住时,被加密的列不能被查询也不能被修改,那在应用中岂不无法使用该数据了。因为如果每次运用都要将钱夹打开,那不就等于没加密吗?

2、当钱夹被打开之后,想重新关闭,只能对数据库重启吗?

我觉得情况肯定不是我想的那样,如果这项技术只能被这样用的话,那基本上就失去了它存在的意义,那么只能是我对这技术还不了解。所以,还望知道的朋友多多指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: