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、当钱夹被打开之后,想重新关闭,只能对数据库重启吗?
我觉得情况肯定不是我想的那样,如果这项技术只能被这样用的话,那基本上就失去了它存在的意义,那么只能是我对这技术还不了解。所以,还望知道的朋友多多指教。
操作步骤:
透明数据加密
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、当钱夹被打开之后,想重新关闭,只能对数据库重启吗?
我觉得情况肯定不是我想的那样,如果这项技术只能被这样用的话,那基本上就失去了它存在的意义,那么只能是我对这技术还不了解。所以,还望知道的朋友多多指教。
相关文章推荐
- ORACLE TDE 透明数据加密技术
- Oracle 10G 新特性--透明数据加密技术(TDE)
- [Oracle] 数据库安全之 - 透明数据加密技术(TDE)
- Oracle透明数据加密(TDE)真实环境使用分析
- Oracle-11g 中使用表空间透明数据加密(TDE)
- Oracle10G:透明数据加密技术(TDE)
- oracle透明数据加密TDE
- oracle TDE(Transparent Data Encryption)透明数据加密
- Oracle 透明数据加密(TDE)--官方文档
- oracle透明数据加密TDE(加密数据列)
- Oracle 11g 新特性 -- Transparent Data Encryption (透明数据加密TDE) 增强 说明
- 使用ORACLE 透明数据加密 TDE
- Oracle 11g 新特性 -- Transparent Data Encryption (透明数据加密TDE) 增强 说明
- oracle TDE技术 oracle 透明加密技术
- Oracle 11g 新特性 -- Transparent Data Encryption (透明数据加密TDE) 增强 说明
- oracle 透明数据加密(TDE)学习笔记(1)--wallet使用和管理
- oracle 透明数据加密(TDE)学习笔记(1)--wallet使用和管理
- Oracle10G:透明数据加密技术(TDE)
- Oracle数据安全解决方案——透明数据加密TDE
- Oracle 透明数据加密TDE