Oracle数据库的透明加密特性

1、需要更新sqlnet.ora文件以包含一个ENCRYPTED_WALLET_LOCATION条目

Windows下的位置:
# sqlnet.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

将以下条目添加到文件末尾并保存:
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=D:/oracle/product/10.2.0/admin/TEST/wallet)))

2、打开钱夹并创建万能加密密钥
SQL> conn / as sysdba;
已连接。

SQL> alter system set key identified by "dgpki";
系统已更改。


此命令的作用为:
  如果指定的目录中不存在加密钱夹,则将创建加密钱夹(ewallet.p12)、打开此钱夹并创建/重新创建TDE的万能密钥。
  如果指定目录中存在加密钱夹,则将打开此钱夹并创建/重新创建TDE的万能密钥。

3、创建测试表
SQL> conn dgyd/dgyd@test;
已连接。

SQL> create table test(id number,credit_card_number varchar2(16) ENCRYPT NO SALT);
表已创建。

SQL> insert into test values(1,'9974586');
已创建 1 行。
SQL> insert into test values(2,'9974587');
已创建 1 行。
SQL> insert into test values(3,'9974588');
已创建 1 行。
SQL> commit;
提交完成。

4、测试
SQL> select * from dgyd.test;

        ID CREDIT_CARD_NUMB
---------- ----------------
         1 9974586
         2 9974587
         3 9974588

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size              96469672 bytes
Database Buffers          188743680 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。

(1)系统重启后没有打开加密钱夹,查询到加密列会出错
SQL> select * from dgyd.test;
select * from test
              *
第 1 行出现错误:
ORA-28365: Wallet 未打开

(2)非加密列可以正常查询
SQL> select id from test;

        ID
----------
         1
         2
         3

(3)打开加密钱夹后可以正常查询所有列
SQL> alter system set key identified by "dgpki";

系统已更改。

SQL> select * from dgyd.test;

        ID CREDIT_CARD_NUMB
---------- ----------------
         1 9974586
         2 9974587
         3 9974588

5、说明

(1)如果用户想打开钱夹,必须具有alter system权限;
(2)sys用户的表不能被加密;
(3)丢失ewallet加密钱夹的话,是不能再解密数据的。


可见:Oracle TDE是在数据层面上对表里的数据加密,而且不会影响数据库现有的权限控制策略。
salt实际上就是在加密过程中引入一个随机性,同样的明文产生不同样的密文。
no salt的话,自然就是相同的明文会产生相同的密文了。对于索引来说,要求no salt也就可以理解了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值