一.TransparentData Encryption (TDE:透明数据加密) 说明

Orace TDE 是Orcle 10R2中的一个新特性,其可以用来加密数据文件里的数据,保护从操作系统层面上对数据文件的访问。11g的TDE 在10gR2的基础上增强,允许在表空间级别进行加密。

1.1 11g 中TDE 新增功能

一些新增功能可增强透明数据加密(TDE)功能,这些功能是基于相同的基础结构构建的。

为支持TDE 而对LogMiner 所做的更改提供了用于更改捕获引擎的基础结构,这些引擎可用于逻辑备用、流和异步更改数据捕获。要让LogMiner 支持TDE,它必须能够访问加密Wallet。要访问该Wallet,必须装载实例并使Wallet 处于开启状态。LogMiner 不支持硬件安全模块(HSM) 或用户持有密钥。

对于逻辑备用,可在源或目标数据库挖掘日志,因此用于这两个数据库的Wallet 必须相同。

加密列的处理方式在流和基于流的更改数据捕获中均相同。将在Wallet 所在的源中挖掘重做记录。数据以未加密的方式传输到目标位置,然后在目标位置使用Wallet 进行加密。该数据可以使用高级安全选项在传输中进行加密以实现网络加密。

TDE 中的新增功能包括:

(1)  表空间加密

(2)  支持LogMiner

(3)  支持逻辑备用

(4)  支持流

(5)  支持异步更改数据捕获

(6)  基于硬件的主密钥保护

1.2 表空间加密

表空间加密以在写入时进行加密并在读取时进行解密的块级别加密技术为基础,并不在内存中对数据进行加密。影响加密的唯一因素与I/O 相关联。SQL 访问路径不变,并且支持所有数据类型。要使用表空间加密,加密Wallet 必须处于开启状态。

CREATETABLESPACE 命令包含一个用于设置加密属性的ENCRYPTION 子句,以及一个导致使用加密的ENCRYPT 存储参数。可以指定USING 'encrypt_algorithm' 来指示要使用的算法名称。有效的算法包括3DES168、AES128、AES192和AES256。默认算法为AES128。可以在V$ENCRYPTED_TABLESPACES 视图中查看这些属性。

加密的数据在执行操作(如JOIN 和SORT)期间会受到保护。这意味着数据在移动到临时表空间时是安全的。还原日志和重做日志中的数据也受到保护。

如果平台有相同的Endianess和Wallet,则加密的表空间是可移动的。

限制:

(1)  无法对临时表空间和还原表空间进行加密(所选的块已加密)。

(2)  Bfiles 和外部表未加密。

(3)  不支持跨不同的endian 平台移动表空间。

(4)  当前无法更改加密表空间的密钥。解决方法是:使用所需的属性创建一个表空间,然后将所有对象移动到新建的表空间中。

1.3 硬件安全模块

硬件安全模块(HSM) 是一种物理设备,可以安全地存储加密密钥。它还可以提供安全的计算空间(内存)以执行加密和解密操作。HSM 是Oracle wallet 的一种更安全的代替方法。

透明数据加密(TDE) 可使用HSM 来加强敏感数据的安全性。HSM 用于存储TDE 使用的主加密密钥。因为HSM 是一种物理设备而不是一个操作系统文件,所以在未授权的访问尝试中密钥是安全的。使用主加密密钥的所有加密和解密操作都在HSM 中执行。这意味着主加密密钥永远不会在不安全的内存中公开。

有些供应商可提供硬件安全模块,这些供应商还必须提供相应的库。

二.示例

更多测试参考:

Securing Stored Data Using Transparent DataEncryption

http://docs.oracle.com/cd/E11882_01/network.112/e10746/asotrans.htm

2.1 创建Wallet

在对LOB 进行加密的SecureFile中也会用到wallet。

Oracle 11g 新特性 -- SecureFiles 说明

http://blog.csdn.net/tianlesoftware/article/details/8231322

在sqlnet.ora 文件里添加: ENCRYPTION_WALLET_LOCATION 和WALLET_LOCATION参数。

默认位置是:$ORACLE_BASE/admin/$ORACLE_SID/wallet。

--指定ORACLEWALLET的位置,这里使用ORACLE_HOME/network/admin,在sqlnet.ora里添加如下内容:

WALLET_LOCATION=

(SOURCE =

(METHOD = FILE)

(METHOD_DATA =

(DIRECTORY =/u01/app/oracle/product/11.2.0/db_1/network/admin)

)

)

ENCRYPTION_WALLET_LOCATION=

(SOURCE =

(METHOD = FILE)

(METHOD_DATA =

(DIRECTORY =/u01/app/oracle/admin/dave/encryption_wallet)

)

)

SQLNET.WALLET_OVERRIDE= TRUE

SSL_CLIENT_AUTHENTICATION= FALSE

SSL_VERSION =0

--添加完之后,重启listener,使参数生效。

--创建wallet:包括设置密码、生成信任文件、并启动wallet

CONN / ASSYSDBA

-- 11g version

ALTER SYSTEMSET ENCRYPTION KEY IDENTIFIED BY "myPassword";

ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIEDBY "myPassword";

当实例重启后或者wallet被关闭后,必须重新openwallets,这样才能保护被加密的列.而在Open wallet之前,数据库必须处于mount 状态。 官网的说明如下:

The securityadministrator also needs to open the wallet before performing database recoveryoperations. This is because background processes may require access toencrypted redo and undo logs. When performing database recovery, the walletmust be opened before opening the database. This is illustrated in thefollowing statements:

SQL> STARTUP MOUNT;

SQL> ALTER SYSTEM SET ENCRYPTION WALLETOPEN IDENTIFIED BY "myPassword";

SQL> ALTER DATABASE OPEN;

当然也可以选择配置自动登陆wallets。 但oracle 并不推荐使用这种方法。

2.2 创建加密表空间

创建加密表空间使用ENCRYPTION 选项,通过USING 选项指定加密算法,默认使用AES128算法。注意,storage 选项必须指定ENCRYPT。 使用了表空间加密后就不允许使用NO SALT 选项。

注意: 存在在加密表空间里的数据,我们不能直接通过HEX的编辑器或者strings命令直接查看数据文件里的内容。 而如果是普通的数据文件,我么可以直接在操作系统层面查看数据文件里的内容。

SQL> CREATE TABLESPACE encrypted_anqing

2  DATAFILE'/u01/app/oracle/oradata/dave/anqing01.dbf' SIZE 50M

3  AUTOEXTEND ON NEXT 10M

4  ENCRYPTION USING 'AES256'

5  DEFAULT STORAGE(ENCRYPT);

Tablespace created.

--查看表空间加密情况:

SQL> SELECT tablespace_name, encryptedFROM dba_tablespaces;

TABLESPACE_NAME                ENC

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

SYSTEM                         NO

SYSAUX                         NO

UNDOTBS1                       NO

TEMP                           NO

USERS                          NO

ENCRYPTED_ANQING               YES

6 rows selected.

一般表空间不能转换成加密表空间。 可以使用export/import,alterdatabase…move… 或者create table …as select * from … 来进行转换。

2.3 测试表空间加密

SQL> CREATE TABLE dave (

2    id    NUMBER(10),

3    data  VARCHAR2(50)

4  )

5  TABLESPACE encrypted_anqing;

Table created.

SQL> CREATE INDEX idx_id ON dave(id)TABLESPACE encrypted_anqing;

Index created.

SQL> INSERT INTO dave (id, data) VALUES(1, 'This is a secret!');

1 row created.

SQL> COMMIT;

Commit complete.

SQL> select * from dave;

ID DATA

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

1 This is a secret!

--flush buffer cache,确保数据刷入到数据文件:

SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;

System altered.

--当数据存放在加密的表空间之后,我们使用HEX editor,如UltraEdit,则不会显示我们的data,而普通表空间是可以直接查看的:

[oracle@dave/u01/app/oracle/oradata/dave]$strings anqing01.dbf|grep "secret"

[oracle@dave /u01/app/oracle/oradata/dave]$

--这里返回为空。

--验证非加密表空间:

SQL> create table dave2 tablespace usersas select * from dave;

Table created.

SQL> alter system flush buffer_cache;

System altered.

--注意: 这里对非加密表空间而言,我们可以直接查看加密的数据:

[oracle@dave/u01/app/oracle/oradata/dave]$strings users01.dbf|grep "secret"

This is a secret!

[oracle@dave /u01/app/oracle/oradata/dave]$

--删除加密表空间:

SQL> DROP TABLESPACE encrypted_anqingINCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

2.4 列(Column)加密

SQL> conn dave/dave;

Connected.

SQL> create table dave as selectobject_id as id, object_name as name from dba_objects;

Table created.

SQL> desc dave

Name                                     Null?    Type

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

ID                                                NUMBER

NAME                                              VARCHAR2(128)

SQL> create index idx_dave_id ondave(id);

index created.

SQL> ALTER TABLE dave MODIFY (NAMEencrypt USING 'AES256' IDENTIFIED BY 'myPassword');

Table altered.

SQL> desc dave

Name                                     Null?    Type

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

ID                                                NUMBER

NAME                                              VARCHAR2(128) ENCRYPT

SQL> set lin 160

SQL> col WRL_PARAMETER FOR a50

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE             WRL_PARAMETER                                      STATUS

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

file                /u01/app/oracle/admin/dave/encryption_wallet       OPEN

SQL> ALTER SYSTEM SET encryption walletCLOSE IDENTIFIED BY "myPassword";

System altered.

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE             WRL_PARAMETER                                      STATUS

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

file                 /u01/app/oracle/admin/dave/encryption_wallet       CLOSED

--这里wallet 已经关闭。

--关闭之后查询,就会报错: wallet is not open:

SQL> select * from dave where rownum=1;

select * from dave where rownum=1

*

ERROR at line 1:

ORA-28365: wallet is not open

--重新打开wallet,就可以查询加密的列了:

SQL> ALTER SYSTEM SET ENCRYPTION WALLETOPEN IDENTIFIED BY "myPassword";

System altered.

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE             WRL_PARAMETER                                      STATUS

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

file                 /u01/app/oracle/admin/dave/encryption_wallet       OPEN

SQL> select * from dave where rownum=1;

ID NAME

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

20 ICOL$

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

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Skype:    tianlesoftware

QQ:       tianlesoftware@gmail.com

Email:    tianlesoftware@gmail.com

Blog:     http://blog.csdn.net/tianlesoftware

Weibo:    http://weibo.com/tianlesoftware

Twitter:  http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

Linkedin: http://cn.linkedin.com/in/tianlesoftware

转载于:https://www.cnblogs.com/tianlesoftware/archive/2012/12/07/3609128.html

Oracle 11g 新特性 -- Transparent Data Encryption (透明数据加密TDE) 增强 说明相关推荐

  1. Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA)

    Data Recovery Advisor(以下简称DRA)是Oracle的一个内置(Build-In)工具,用于进行数据错误.损坏的报告和修复建议.比如,DRA能够自动发现当前存在坏块,并且查看备份 ...

  2. Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA) 说明

    一.Data Recovery Advisor(DRA) 说明 1.1 DRA 说明 DRA在遇到错误时会自动收集数据故障信息.此外,它还能预先检查故障.在此模式中,它可以在数据库进程发现损坏并发送错 ...

  3. oracle flashback 功能,Oracle 11g 新特性 Flashback Data Archive 使用实例

    Flashback Data Archive(闪回日志归档)其实理解为长时间的保存undo数据,对于某些重要的表可以自定义它的历史记录保存期限,它的的种种行为与undo表空间十分相似,使用的时候也是完 ...

  4. ORACLE 11g新特性中文版

    Oracle 11g 新特性 摘自ITPUB的love_zz的帖子 http://www.itpub.net/712880.html Oracle 11g 现在已经开始进行beta测试,预计在2007 ...

  5. Oracle 11g新特性之缓存与连接池

    Oracle 11g新特性之缓存与连接池 上一篇 /下一篇  2008-03-26 16:03:19 / 个人分类:Oracle 数据库 11g面向 DBA 和开发人员的重要新特性 查看( 414 ) ...

  6. Oracle 11g新特性之--虚拟列(Virtual Column)

    Oracle 11g新特性之--虚拟列(Virtual Column) Oracle 11G虚拟列Virtual Column介绍 在老的 Oracle 版本,当我们需要使用表达式或者一些计算公式时, ...

  7. Oracle 11g新特性之 - 使用RMAN复制数据库

    Oracle 11g新特性之 - 使用RMAN复制数据库 Oracle 11g新特性之 - 使用RMAN复制数据库 - 1 Oracle 11g新特性之 - 使用RMAN复制数据库 - 2 Oracl ...

  8. Oracle 11g新特性之--只读表(read only table)

    Oracle 11g新特性之--只读表(read only table)       Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行 ...

  9. oracle+字段+virtual,Oracle 11g新特性之--虚拟列(Virtual Column)

    Oracle 11g新特性之--虚拟列(Virtual Column) Oracle 11G虚拟列Virtual Column介绍 在老的 Oracle 版本,当我们需要使用表达式或者一些计算公式时, ...

最新文章

  1. 微信JS-SDK使用步骤(以微信扫一扫为例)
  2. 所谓的中间代码(ES5 的 “JSIL”)
  3. 【译】权益证明的设计理念
  4. 【uni-app】自定义导航栏/标题栏
  5. 【51nod - 1073】约瑟夫环问题模板
  6. 发的楷体怎么写_公布婚期朋友圈怎么发 发结婚通知朋友圈注意哪些
  7. 如何在ubuntu 上安装配置Android Studio
  8. 计算机网络基础系列(二)计算机网络体系结构
  9. Mac版pages快捷键大全
  10. Julia Pro国内下载地址
  11. 图片底色去除vue+canvas(简易版)
  12. 【Matlab综合设计】开环Buck-Boost升压-降压式变换器Simulink仿真(含仿真模块选择和参数计算过程)
  13. 女人一定要有自己的职业
  14. 威廉玛丽学院计算机专业,威廉玛丽学院CS排名2020年掌握的流程盘点
  15. 通过idea的Git使主干项目合并到分支中(主干同步到分支)
  16. Android面试必备知识点总结
  17. java ffmpeg 直播_ffmpeg转码为直播
  18. iWO(联通3G详单及套餐使用情况查询工具)更新至v0.7
  19. NodeMCU学习(二)--NodeMCU介绍及使用(一)
  20. Python--判断语句练习

热门文章

  1. mysql临时开启二进制_关于MySQL二进制日志Binlog的认识
  2. Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)
  3. RTD 比率式温度测量传感器设计思路
  4. AI视频行为分析系统项目复盘——技术篇3:tensorRT技术梳理
  5. keras 的 example 文件 lstm_text_generation.py 解析
  6. 学习《Linux设备模型浅析之设备篇》笔记(一)
  7. 奇葩错误 WIFI搜不到、无线网卡连接不上
  8. C++中的类属(泛型)机制——模板
  9. 【longPressKey】长按键盘任意键(或组合键)3秒触发自定义事件(以Pause/Break键为例)
  10. 在CentOS 6.8 x86_64的nginx 1.10.3上开启http2功能