TDE(Transparent Data Encryption ),通过使用wallet 对数据加密,物理上对数据文件中的数据进行加密。


工作过程


当用户插入数据到需要加密的列中的时候,Oracle 10g从钱夹中获取master密钥,用master密钥解密数据字典中的表密钥,然后用解密后的表密钥加密输入数据,再将加密后的数据保存在数据库中。

当用户查询一个加密列的时候,Oracle 将加密的表密钥从数据字典中取出,再取出master密钥,然后解密表密钥,再用解密后的表密钥来解密磁盘上加密的数据,最后返回明文给用户。


所有操作对用户而言是透明的。



1.  创建钱包


sqlplus中查看,文件路径和查询中的一致

  1. SQL> SELECT * FROM V$ENCRYPTION_WALLET;
  2. WRL_TYPE WRL_PARAMETER STATUS
  3. -------------------- ------------------------------------------------------------ ------------------
  4. file /oracle/app/oracle/admin/PROD/wallet CLOSED

默认是关闭的,修改sqlnet.ora文件,wallet不存在,创建一下

  1. mkdir -p /oracle/app/oracle/admin/PROD/wallet

  1. ENCRYPTION_WALLET_LOCATION=
  2. (SOURCE=
  3. (METHOD=FILE)
  4. (METHOD_DATA=
  5. (DIRECTORY=/oracle/app/oracle/admin/wallet)))


 创建wallet

  1. SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "oracle";
  2. System altered.
  3. SQL> col WRL_PARAMETER for a60
  4. SQL> set line 200
  5. SQL> SELECT * FROM V$ENCRYPTION_WALLET;
  6. WRL_TYPE WRL_PARAMETER STATUS
  7. -------------------- ------------------------------------------------------------ ------------------
  8. file /oracle/app/oracle/admin/PROD/wallet OPEN

  1. PROD@localhost.localdomain /oracle/app/oracle/admin/PROD/wallet$ ll
  2. total 4
  3. -rw-r--r-- 1 oracle oinstall 2845 Jul 9 06:43 ewallet.p12
  4. PROD@localhost.localdomain /oracle/app/oracle/admin/PROD/wallet$


2.透明列级加密

  1. -- 不能对 sys用户的表加密

  2. SQL> conn hxy/hxy
    Connected.

  3. CREATE TABLE cust_payment_info
  4. (first_name VARCHAR2(11),
  5. last_name VARCHAR2(10),
  6. order_number NUMBER(5),
  7. credit_card_number VARCHAR2(16) ENCRYPT NO SALT,
  8. active_card VARCHAR2(3));

  1. INSERT INTO cust_payment_info VALUES
  2. ('Jon', 'Oldfield', 10001, '5446959708812985','YES');
  3. INSERT INTO cust_payment_info VALUES
  4. ('Chris', 'White', 10002, '5122358046082560','YES');
  5. INSERT INTO cust_payment_info VALUES
  6. ('Alan', 'Squire', 10003, '5595968943757920','YES');
  7. INSERT INTO cust_payment_info VALUES
  8. ('Mike', 'Anderson', 10004, '4929889576357400','YES');
  9. INSERT INTO cust_payment_info VALUES
  10. ('Annie', 'Schmidt', 10005, '4556988708236902','YES');
  11. INSERT INTO cust_payment_info VALUES
  12. ('Elliott', 'Meyer', 10006, '374366599711820','YES');
  13. INSERT INTO cust_payment_info VALUES
  14. ('Celine', 'Smith', 10007, '4716898533036','YES');
  15. INSERT INTO cust_payment_info VALUES
  16. ('Steve', 'Haslam', 10008, '340975900376858','YES');
  17. INSERT INTO cust_payment_info VALUES
  18. ('Albert', 'Einstein', 10009, '310654305412389','YES');

  1. SQL> select * from cust_payment_info
  2. 2 ;
  3. FIRST_NAME LAST_NAME ORDER_NUMBER CREDIT_CARD_NUMB ACT
  4. ----------- ---------- ------------ ---------------- ---
  5. Chris White 10002 5122358046082560 YES
  6. Alan Squire 10003 5595968943757920 YES
  7. Mike Anderson 10004 4929889576357400 YES
  8. Annie Schmidt 10005 4556988708236902 YES
  9. Elliott Meyer 10006 374366599711820 YES
  10. Celine Smith 10007 4716898533036 YES
  11. Steve Haslam 10008 340975900376858 YES
  12. Albert Einstein 10009 310654305412389 YES
  13. 8 rows selected.


关闭钱包,则无法访问

  1. SQL> ALTER SYSTEM SET ENCRYPTION WALLET close identified by oracle;
  2. System altered.
  3. SQL> conn hxy/hxy
  4. Connected.
  5. SQL> select * from cust_payment_info;
  6. select * from cust_payment_info
  7. *
  8. ERROR at line 1:
  9. ORA-28365: wallet is not open


3. 透明表空间加密 (表空间上所有的数据都加密)

  1. SQL> CREATE TABLESPACE securespace
  2. 2 DATAFILE '/home/oracle/oracle3/product/11.1.0/db_1/secure01.dbf'
  3. 3 SIZE 150M
  4. 4 ENCRYPTION
  5. 5 DEFAULT STORAGE(ENCRYPT);
  6. Tablespace created.

  1. SQL> CREATE TABLE customer_payment_info
  2. 2 (first_name VARCHAR2(11),
  3. 3 last_name VARCHAR2(10),
  4. 4 order_number NUMBER(5),
  5. 5 credit_card_number VARCHAR2(16),
  6. 6 active_card VARCHAR2(3))TABLESPACE securespace;
  7. Table created.

4. 删除了操作系统的加密文件

执行下面的命令,输入原来的密码会生成一个.p12文件

  1. PROD@localhost.localdomain /oracle/app/oracle/product/11.2.0/network/admin$ mkstore -wrl /oracle/app/oracle/product/11.2.0/network/admin/wallet/ -list
  2. Oracle Secret Store Tool : Version 11.2.0.4.0 - Production
  3. Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
  4. Enter wallet password:
  5. Oracle Secret Store entries:
  6. ORACLE.SECURITY.DB.ENCRYPTION.ARMxdklw5k9zv9UpvDKPCDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  7. ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
  8. PROD@localhost.localdomain /oracle/app/oracle/product/11.2.0/network/admin/wallet$ ll
  9. total 4
  10. -rw-r--r-- 1 oracle oinstall 2581 Jul 9 08:35 ewallet.p12

参考:
文档 ID 1206180.1   
文档 ID 1228046.1   Master Note For Transparent Data Encryption ( TDE )
文档 ID 394539.1    ORA-28353 - Cannot Set The Encryption Key Password for TDE (文档 ID 394539.1)

oracle加密--wallet的更多相关文章

  1. oracle加密encrypt,解密decrypt

    目录 oracle加密encrypt,解密decrypt 加密 解密 oracle加密encrypt,解密decrypt 有的oracle版本没有加解密函数,以下操作可以手动添加 oracle数据使用 ...

  2. oracle加密-des 简单举例.

    Declare  v_seed Raw(128);  v_key_1 Raw(64);  v_key_2 Raw(64);    v_Text_for_encrypted Raw(64);  v_mw ...

  3. Oracle加密解密

    Oracle内部有专门的加密包,可以很方便的对内部数据进行加密(encrypt)和解密(decrypt). 介绍加密包之前,先简单说一下Oracle基本数据类型——RAW类型. RAW,用于保存位串的 ...

  4. Oracle加密表空间进行数据加密的示例

    接上篇:http://www.cnblogs.com/myrunning/p/4292049.html 1查看数据库版本 2查看当前数据库表空间 从这里看到我们此时数据库里没有加密表空间. 3创建加密 ...

  5. oracle加密传输

    参考文章: http://blog.itpub.net/24052272/viewspace-2129175/ oracle在传输过程中,正常是明文传输的,例如SQL以及执行的结果. 看看做的测试: ...

  6. Oracle wrap 和 unwrap( 加密与解密) 说明

    一. Wrap 说明 官网的说明如下: A PL/SQL Source Text Wrapping http://download.oracle.com/docs/cd/E11882_01/appde ...

  7. 数据库安全之TDE列加密

    透明数据加密(Transparent Data Encryption) TDE - 基于列的加密 由于有了Oracle的TDE-基于列的加密,你所要做的只是定义需要加密的列,Oracle将为包含加密列 ...

  8. Oracle 11g R2 Backup Data Pump(数据泵)之expdp/impdp工具

    Oracle Data Pump(以下简称数据泵)是Oracle 10g开始提供的一种数据迁移工具,同时也被广大DBA用来作为数据库的逻辑备份工具和体量较小的数据迁移工具.与传统的数据导出/导入工具, ...

  9. Oracle DB 移动数据

     描述移动数据的方式 • 创建和使用目录对象 • 使用SQL*Loader 加载非Oracle DB(或用户文件)中的数据 • 使用外部表并通过与平台无关的文件移动数据 • 说明Oracle 数据泵的 ...

随机推荐

  1. SPM(Software Project Management)课程感想

    今天要说的是软件项目管理课程学习后的一些心得体会.这学期我选修了软件项目管理课程,进行了共8周的学习.   其实,进入大三后,我们开设了各种专业选修课,通过对各种课程的学习,我见识到了丰富多样的知识体 ...

  2. adb-andorid记录当前手机的日志当前显示的app进程及activity,

    adb logcat -v time> /home/sumsang.log adb shell dumpsys window | grep mCurrentFocus

  3. AAR文件简介

    假如我们希望提供一个带有资源文件的第三方库给别人使用,总不能直接把源代码给别人,但是我们知道eclipse打包的时候不能包含res的资源文件,于是Android在发布Android studio的时候 ...

  4. Java hashCode与equals学习

    1.关于Object类的equals方法的特点 a) 自反性: x.equals(x) 应该返回true b) 对称性: x.equals(y)为true,那么y.equals(x) 也为true c ...

  5. WIN7在计算机管理中修改用户名之后 文件夹名字不变怎么办?

      WIN7在计算机管理中修改用户名之后 文件夹名字不变?   可以新建一个管理员账户,起名字,然后删除旧的账户.保留原用户文件夹中的内容,以备不时之需.不要在控制面板的用户账户中修改用户名,修改之后 ...

  6. git只提交修改部分的代码

    思路: 先用git status 查找出哪些文件被修改过了,然后 只git commit odin/code/pom.xml 1. $ git status (查看当前更改的代码) On branch ...

  7. Looper: Looper,Handler,MessageQueue三者之间的联系

    在Android中每个应用的UI线程是被保护的,不能在UI线程中进行耗时的操作,其他的子线程也不能直接进行UI操作.为了达到这个目的Android设计了handler Looper这个系统框架,And ...

  8. Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机

    (1).虚拟化产品对比介绍 虚拟化技术有以下三种:仿真虚拟化,这是一种对系统硬件没有要求,但性能最低的虚拟化技术:半虚拟化,这是一种直接使用物理硬件,性能高,但需要修改内核的虚拟化技术:全虚拟化,这是 ...

  9. 了解美杜莎(Medusa)

    (1).美杜莎介绍 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的暴力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hydra一样,同样属于在线密码破解工具.Med ...

  10. Spring Boot与MyBatis的集成

    SSM(Spring+Spring MVC+MyBatis)是当前主流的框架组合开发方式之一,普遍被应用于互联网项目中.如果要使用Spring Boot开发一个基于SSM框架的应用,那么我们要怎么做呢 ...