阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle数据透明加密-TDE

437次阅读
没有评论

共计 3664 个字符,预计需要花费 10 分钟才能阅读完成。

介绍  

Oracle 10g R2 提供了一个新的特性,让你只需要做如下动作:你可以不写一行代码,只需要声明你需要加密某列。当用户插入数据的时候,数据库透明的加密数据然后存储加密后的数据。同样的,当用户读取数据时,数据库自动进行解密。由于加解密操作对应用程序来说都是透明的,不需要应用程序修改代码,因此这个特性就叫做:透明数据加密(TDE)。

简单来说默认不对数据进行 TDE 加密,数据库中的某些敏感数据是直接可以在操作系统层面进行读取的,方法不进行阐述。

10gR2 可以对指定列进行加密,11g 还可以对表空间进行加密。

配置 TDE

制定 master 密钥存放位置(位置 TNS_ADMIN 变量为准)

vi  $ORACLE_HOME/network/admin/sqlnet.ora

添加如下参数

ENCRYPTION_WALLET_LOCATION=

(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY= /home/oracle/app/oracle/admin/orcl/wallet)))

Oracle 用户手动创建 wallet 文件夹

mkdir /home/oracle/app/oracle/admin/orcl/wallet

否则报错 ORA-28368: cannot auto-create wallet

创建 wallet 并在其中装入 master 密钥 

SQL> alter system set key identified by “oracle”; 

System altered.

在 $ORACLE_BASE/admin/sid/wallet 文件夹中生成密钥文件

ewallet.p12

创建 wallet 后,它将保持打开状态,直到将其关闭,或者重启数据库。

可以检查 wallet 的状态

col wrl_type format a7

col wrl_parameter format a55

select wrl_type,wrl_parameter,status from gv$encryption_wallet;

WRL_TYP WRL_PARAMETER

——- ——————————————————-

STATUS

——————

file    /home/oracle/app/oracle/admin/orcl/wallet

OPEN

手动打开 wallet, 打开是需要密码的

alter system set encryption wallet open identified by  “oracle”;

也就是说数据库每次重启都需要安全管理专员手动打开 wallet,否则加密数据无法读写。

当然也可以设置自动登录 wallet,但是建议在开发或者测试阶段进行。

打开自动登录的方法通过 Oracle wallet Manager 

运行 owm 命令打开图形界面,

打开现有 wallet(找到 master 密钥存放路径)

Oracle 数据透明加密 -TDE

打开自动登录

Oracle 数据透明加密 -TDE 

在 master 密钥存放路径中生成一个文件 cwallet.sso。

关闭 wallet

可以通过手动关闭 wallet

alter system set wallet close;

注意 10g 关闭不需要 wallet 口令,如果 wallet 被关闭,所有的加密解密将自动终止。

11g 关闭需要 wallet 口令, 语法如下,否则提示 ORA-28390: auto login wallet not open but encryption wallet may be open

alter system set wallet close identified by “oracle”;

另外,如果设置自动登录 11g 环境下执行关闭命令不需要输入密码

SQL> alter system set wallet close; 

可以执行成功,但是查询 gv$encryption_wallet 视图,状态依然是 OPEN,而不是 closed。

此时查询依然可以查询加密内容。

TDE 的密钥管理

        在对表进行加密时,TDE 为每个包含加密字段的表都生成相应的密钥,而不是所有的表都使用相同的密钥。

        TDE 使用对称密钥技术进行数据加密和解密,性能高。

        对于表空间的密钥是存储在数据字典中,前提是它首先使用 master 密钥对所有的表密钥进行加密。

新表创建加密列

create table (encrypt [algorithm] [nomac] [no salt]);

[algorithm] 加密算法

[nomac] 10.2.0.4 才开始有的参数当加密一个列需要额外的 20 字节存储密文时,将会生成一个消息验证码。

[no salt]) salt 通过在明文中插入某个随机值(在 TED 中为一个 16 字节的值)能够有效的增强加密算法的强度,避免对加密数据的“明文 ” 攻击。

create table foo (columnA dataype,columnB dataype encrypt);

该句默认使用 192 为子长密钥的 AES 加密算法,使用 salt 以及一个 20 位的 mac。当然,如果希望某列上用索引,最好不要在其上加入 salt。

查看加密列

select owner,table_name,column_name,encryption_alg,salt from dba_encrypted_columns;

对现有列进行加密

alter table modify  (encrypt [‘nomac’] [no salt]);

如果数据量比较大,直接对列加密会增加 cpu 和存储负载,因此可以考虑使用在线重定义的形式重新组织表。(不赘述)

TDE 列加密弊端

使用数据修改捕获(无论同步还是异步)、流、物化视图、透明表空间、LOB 就不能用了,随着 11G 引入表空间加密,这一问题得到解决。

加密的列如果使用了 salt,则无法在上面创建索引。

因为索引存储的是加密后的值,所以即使不使用 salt 也只可以使用基于等式匹配的查询,对于范围查询也无能为力。

因为不同表密钥不同,因此除非事先解密数据,否则无法发现 PK/FK 的关系定义。

表空间加密

表空间加密,其中的所有存储内容都会进行加密。

create tablespace ts_encrypted datafile  ‘/home/oracle/app/oracle/oradata/ORCL/datafile/ts_encrypted _d08ww9lb_.dbf’ size 100m autoextend on encryption using ‘AES192’ default  storage(encrypt);

查询表空间加密

select ts.name,et.encryptedts,et.encryptionalg from v$tablespace ts,v$encrypted_tablespaces et where ts.ts#=et.ts#;

列级别加密步骤

1 确定待加密的列

2 确定 tde 都能够支持此数据类型

3 确定在该列上不存在索引

4 确定改了不属于某个 PK/FK 关系

5 对列进行加密

6 重新组织表或在线重定义

表空间加密步骤

1 确定含有敏感数据的列表

2 创建一个新的加密表空间

3 使用 alert table customer move tablespace encrypted_customer ; 将表移动到新表空间。

4 索引需要重建,例如:
alter table tde_table1_index1 rebuild tablespace encryptedtbs;

5 将表从加密的表空间 move 到普通表空间,就完成了解密。

11g 表空间级透明数据加密的功能提升

相对于 10g 版本的列级 TDE,表空间级 TDE 提供了更多的灵活性和更好的性能。

下列表格是 10g 列级 TDE 和 11g 表空间级 TDE 的比较。

 

列级TDE

表空间级TDE

加密完成在

PGA

Data Block

SGA 中加密数据的状态

加密的

解密的

支持的索引类型

只支持 b-tree 索引

支持所有类型索引

支持外键?

不知道外键加密(因为不同的表用不通的key

支持外键

支持的索引 search 方式

支持等值search,不知道范围扫描

支持所有类型的search

支持的数据类型

部分

所有

执行计划是否改变

可能

不改变

是否需要增加存储的占用

对其他产品的支持

  • TDE 支持 Dataguard,
  • TDE 不支持传统导出导入 exp/imp
  • TDE 支持 expdp/impdp,可以直接导出,但是会提示 ORA-39173 encryptd data has been stored unencrypted in dump file set,表时是明文方式存储在 DUMP 文件中,可以直接导入。

为了保证导出 DUMP 的安全也可以在导出时使用 ENCRYPTION_PASSWORD 参数来对备份文件设置加密口令,导入时只有提供口令密码才能导入数据。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137700.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3664字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7803280
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
Python自学26 – Cookie和Session

Python自学26 – Cookie和Session

Python 自学 26 – Cookie 和 Session 在学习 Web 开发时,Cooki...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...