# oracle 数据安全组件TDE介绍

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:20:00.000Z
> 分类: 其他
> 标签: 数据库, 安全
> 原文链接: http://117.50.162.249:3000/yun/articles/1054

---

# oracle 数据安全组件TDE介绍

> 来源: https://www.ucloud.cn/yun/129794.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:20

oracle 数据安全组件TDE介绍

最近数据泄露案例频繁发生，数据安全越来越被各大公司和企业所重视，不但要从管理上进行防范，从技术层面也需要严格控制。我研究了下与oracle相关的数据安全的产品和功能，归类如下：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_000.png)

本文主要介绍TDE(Transparent Data Encryption)

一. Oracle TDE简介

TDE透明数据加密允许用户对各个表列或整个表空间进行加密。当用户向加密的列中插入数据时，透明数据加密会自动对该数据加密。当用户选择该列时，数据将自动解密。选择完毕后，数据将重新加密。

1. TDE不需要额外安装
2. 所有步骤可以使用SQL命令或者图形界面完成。
3. 对数据库功相关能透明（rman、压缩等），不需要额外操作。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_001.png)

二. Oracle TDE配置步骤

**1. 创建“wallet”目录以及指定位置**

默认情况下，钱夹创建于ORACLE\_BASE/admin/ORACLE\_SID/wallett目录下。如果没有，则手工创建。也可以修改该目录路径，但需要在sqlnet.ora文件进行配置。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_002.png)

**2. 设置wallet密码**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_003.png)

**3. 打开wallet钱夹**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_004.png)

可以看到，设置完wallet密码后，wallet默认就是打开的。需要注意的是wallet的密码一旦生成之后，每次数据库重启之后，都必须使用命令显式打开。并且wallet一旦打开之后，在数据库实例关闭之前会一直处于打开状况，除非显式的通过close命令关闭。

三. Oracle TDE加密列使用

**1. 加密列方法**

举例测试，有一张表ttt上有个字段已经加密。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_005.png)

关闭wallet，包含加密列的查询失败。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_006.png)

但如果查询不包含加密列，可以成功。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_007.png)

open wallet后，加密列可以查询。

**2. 加密列常见修改方式**

增加一加密的列

ALTER TABLE ttt ADD (aaa VARCHAR2(128) ENCRYPT);

修改普通列为加密列

ALTER TABLE ttt MODIFY (USER\_ID ENCRYPT);

取消加密列

ALTER TABLE ttt MODIFY (USER\_ID DECRYPT);

**4. 加密列支持的字段类型**

Oracle官方支持列加密的字段类型有如下几种：

• BINARY\_DOUBLE • BINARY\_FLOAT • CHAR • DATE • INTERVAL DAY TO SECOND • INTERVAL YEAR TO MONTH • LOBs (Internal LOBs and SECUREFILE LOBs Only) • NCHAR • NUMBER • NVARCHAR2 • RAW • TIMESTAMP (includes TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE) • VARCHAR2

四. Oracle TDE加密表空间使用

1. 当列加密的字段类型不在支持范围内，可以使用表空间加密。

在加密表空间内创建的表都具备加密特性。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_008.png)

**2. 在加密表空间内创建表**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_009.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_010.png)

字段上没有加密属性。

**3. 验证表是否加密**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_011.png)

关闭wallet，无法查询加密表。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_012.png)

打开wallet后，可以查询加密表。

五. Wallet密码修改

wallet密码可以通过orapki命令进行修改

orapki wallet change\_pwd -wallet wallet\_location[-oldpwd password ] [-newpwd password]

示例：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_013.png)

wallet密码也可以通过图形界面修改，不做示例了。

六. wallet自动登录

使用SQL 创建的wallet 的问题是不能自动登陆，这样我们在关闭wallet或者重启实例后，都需要手动的来open wallet。不过Oracle 提供了wallet 自动登陆功能，可以在创建后使用owm（Oracle wallet manager）来修改。

在oracle用户终端输入own命令调出gui界面，使用owm工具修改。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_014.png)

这个功能对运维人员来说相当实用。

七. TDE小结

TDE可以对也可以对expdp，rman，compress等功能适用，这里就不一一测试了。使用场景更偏向于数据的安全。隐藏敏感数据，不被人知晓，更多的时候是防止数据库上的数据文件以及备份被”偷窃“之后的数据泄密。

使用场景，可以对一些敏感数据进行加密（信用卡和帐户号码、地址、姓名和个人身份号码（驾驶证，身份证）），或者对关键数据进行加密，如薪水、研究结果、客户信息等。

如需要对外键列中的数据进行加密，或者需要除 B-TREE 树外的索引，又或者需要对列级TDE 不支持的数据类型进行加密，可选择表空间级别加密。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_015.png)

END

更多精彩干货分享

点击下方名片关注

IT那活儿

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129794/images/129794_016.png)