剽窃一篇文章 tde的文章

TDE 表空间加密方式会在数据读写过程中加解密数据。与在 SQL 层面做加解密的 TDE 列加密方式相比,其限制要大幅减少。例如:数据类型、索引类型的限制。但 TDE 表空间加密方式仍存在如下限制:

(TDE tablespace encryption encrypts/decrypts data during read/write operations, as opposed to TDE column encryption, which encrypts/decrypts data at the SQL layer. This means that most restrictions that apply to TDE column encryption, such as data type restrictions and index type restrictions, are not applicable to TDE tablespace encryption.The following list includes the restrictions that apply to TDE tablespace encryption:)

(1).如 BFILE 等外部大型对象无法使用 TDE 表空间加密(External Large Objects (BFILEs) cannot be encrypted using TDE tablespace encryption. This is because these files reside outside the database.)

(2).无法使用 IMP/EXP 导入导出,只能使用过 IMPDP/EXPDP(To perform import and export operations, use Oracle Data Pump.)

 

Oracle-11g 中使用表空间透明数据加密(TDE)步骤

1.设置表空间主密钥(Master Encryption Key)

a.创建 wallet 目录(oracle,每个节点)
例如:创建 wallet 目录于 $ORACLE_BASE/admin/ SID 下。
$> mkdir /u01/app/oracle/admin/zszracdb/wallet
b.指定 wallet 路径(oracle,每个节点)
在 $ORACLE_HOME/network/admin 下的 sqlnet.ora 中设置 ENCRYPTION_WALLET_LOCATION 参数,指定软件 wallet 路径。其中,在 sqlnet.ora 文件中添加的条目如下。
ENCRYPTION_WALLET_LOCATION=
    (SOURCE=
  (METHOD=FILE)
  (METHOD_DATA=
  (DIRECTORY=/u01/app/oracle/admin/zszracdb/wallet)
  )
    )
c.检查 sqlnet.ora 信息读取状态(oracle,任一节点)
SQL> select * from v$encryption_wallet;
select * from gv$encryption_wallet;
注意:确保 v$encryption_wallet 与 gv$encryption_wallet 的 wallet location 是 一致的
注意:对于 wallet 分别在不同节点的情况以及 sqlnet.ora 在加入 ENCRYPTION_WALLET_LOCATION 参数前已经被数据库各实例读取的情况,需要 重启各个实例以初始化 wallet 的状态,从而更新 gv$encryption_wallet 的 wallet location。
(In the case of RAC environments, if a separate wallet is being used for each node and if the changes to the sqlnet.ora file are applied on all instances of a running RAC system, restarting the individual instances one by one is necessary to initially synchronize the wallet status and to update the view gv$encryption_wallet with the DIRECTORY entry from sqlnet.ora.)
d.创建主密钥(oracle,任一节点)
注意:TDE 列加密与 TDE 表空间加密使用一个统一的主密钥。
例如:创建密码为 password 的主密钥语句如下所示。
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "password";
注意:对于 RAC 环境而言,需要在执行语句的节点上,将创建出来的 主密钥文件拷贝至其他节点的对应目录下

2.打开 Oracle wallet(oracle,任一节点)

在创建加密表空间之前,包含有表空间主密钥的 Oracle wallet 必须处于打开状态。

(1).先尝试关闭 Oracle wallet

SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "password";

(2).打开 Oracle wallet

SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password";

(3).检验 Oracle wallet 状态

SQL> SELECT * FROM GV$ENCRYPTION_WALLET;

若 TDE 密钥打开,则显示类似如下结果。

1031517-20170724154640090-1579783744.png

 

3.创建加密表空间(oracle,任一节点)

例如:创建加密数据表空间 JM_ZSZ_DATA 以及加密索引表空间 JM_ZSZ_IDX,语句类似如下。

SQL> CREATE TABLESPACE JM_ZSZ_DATA

DATAFILE '+DATA'

SIZE 1024M

ENCRYPTION USING 'AES128'

DEFAULT STORAGE(ENCRYPT);

SQL> CREATE TABLESPACE JM_ZSZ_IDX

DATAFILE '+DATA'

SIZE 1024M

ENCRYPTION USING 'AES128'

DEFAULT STORAGE(ENCRYPT);

4.检查表空间属性(oracle,任一节点)

查看个表空间的加密属性,确定新建表空间为 TDE 加密表空间。

SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces;

5.验证加密表空间(oracle,任一节点)(可选)

可通过此步骤验证加密表空间是否真正有效。

a.创建测试表

例如:创建加密表空间 JM_ZSZ_DATA 以及非加密表空间 BJM_ZSZ_DATA。随后分别在两个表空间内创建表 JM_TABLE 以及非加密表 BJM_DATA,语句类似如下。

SQL> create table jm_table(col1 number, col2 varchar2(30)) tablespace jm_zsz_data;

create table bjm_table(col1 number, col2 varchar2(30)) tablespace bjm_zsz_data;

创建后分别插入测试数据。

SQL> insert into jm_table values (1,'secret data');

insert into bjm_table values (1,'no secret data');

b.测试 Oracle wallet 不打开时的读取状态

若 Oracle wallet 不打开,则无法读取加密表空间中的表,类似如下结果。

1031517-20170724154652387-1513980071.png

而非加密表读取正常,类似如下结果。

 1031517-20170724154701965-1203966711.png

c.测试数据文件保存形式

通过 string 直接查看数据文件内容,如果非加密则可直接查见数据内容。对于加密数据文件,查询结果如下。

1031517-20170724154710559-122955255.png

注意:可见非以明文方式保存数据于 TDE 表空间加密的数据文件中。

对于非加密数据文件,查询结果如下。

1031517-20170724154720231-525268445.png

注意:可见正常的数据文件中,以明文形式保存数据。

  • 25
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lawn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值