热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

【11g新特性】Oracle加密表空间

【11g新特性】Oracle加密表空间新年新群招募:中国Oracle精英联盟170513055群介绍:本群是大家的一个技术分享社区,在这里可以领略大师级的技术讲座,还有机会参加Oracle举办的技术沙龙,与兴趣相投的小伙伴一起笑谈风云起,感悟职场情!前言:数据

【 11g 新特性】 Oracle 加密表空间 新年新群招募:中国Oracle精英联盟 170513055 群介绍:本群是大家的一个技术分享社区,在这里可以领略大师级的技术讲座,还有机会参加Oracle举办的技术沙龙,与兴趣相投的小伙伴一起笑谈风云起,感悟职场情! 前言 :数据

11g新特性】Oracle加密表空间

新年新群招募: 中国Oracle精英联盟 170513055

群介绍:本群是大家的一个技术分享社区,在这里可以领略大师级的技术讲座,还有机会参加Oracle举办的技术沙龙,与兴趣相投的小伙伴一起笑谈风云起,感悟职场情!


前言:数据治理领域里面经常会遇到敏感数据,例如我们征信中心的征信数据就是涉密数据,并不是所有的人都可以看到,就算有授权也只能看到指定对象的数据,那么想一想假设这些数据被流失出来会是一个怎样的场景,就像皇帝新装这个故事一个,全部搬上银幕被展现出来,还记得前几天12306网站信息被泄露了吗!下面来介绍一个Oracle 11g新特性给大家,此特性可以完全避免上述事件的发生,这就是Oracle11g加密表空间特性。

理论

创建一个加密表空间,作用是只要放在加密表空间中的表,没有wallet钱包中的密钥用户是打不开的,这就可以形成一个保护罩,就算你有权限查询数据也不能看到明文,这就起到了风险保障的作用,只有知道秘钥的管理员才能查看,下面我们来详细讲解。

加密表空间与wallet的关系

1.Oracle表空间的加密与解密完全是基于wallet钱包中的密钥进行的。

2.如果walletopen状态,那么我们可以使用其中的密钥,进行加密与解密处理。

3.如果walletclose状态,那么我们就拿不到密钥,此时加密表空间是不可用的,例如 查询 修改 创建都不允许

4.唯一删除表是不需要密钥的,walletopen or close状态都无所谓,直接删除即可

TDE(Transparent Data Encryption透明数据加密)使用场景

1.保护敏感数据,禁止未授权的访问,只有打开钱包才能查看数据。

2.防止数据丢失,当加密表空间的数据文件被恶意拷贝走后,如果你没有密钥是无法还原数据的。

3.防止数据被截获,当在网络传输时加密后的信息更安全,即使截获了也无法得知其中内容。

TDE可支持的加密算法种类AES(Advanced Encryption Standard高级加密标准) DES的升级版

AES192 192位密钥加密

AES128(default) 128位密钥加密

AES256 256位密钥加密

3DES168 168位密钥加密 DES(Data Encryption Standard数据加密标准)

AES标准是美国联邦政府采用的一套加密标准,用来替代原先的DES标准。AES属于对称性加密算法(加密与解密使用同一密钥进行),反之非对称性加密算法(加密与解密使用不同密钥进行)例如 RSA标准有公钥与私钥。

TDE(Transparent Data Encryption透明数据加密)加密原理

先要创建一个“wallet钱包”,这个钱包里面保存着密钥,Oracle就是通过这个密钥对列进行加密和解密的。

生成wallet钱包之前先要设定wallet钱包的保存位置

设置wallet钱包位置的文件$ORACLE_HOME/network/admin/sqlnet.ora

[oracle@cafeadmin]$ vim sqlnet.ora 在这个文件中添加如下脚本

encryption_wallet_location=(source=

(method=file)

(method_data=

(directory=/u01/app/oracle/product/11.1.0/db_1/network/admin)))

wallet里面创建密钥key,创建后自动打开wallet,密码"oracle"不加引号时,后面使用时也不需要加引号

SYS@COFFEE>alter system set encryption key authenticated by"oracle";

或【alter system set encryption key identified by oracle;

Systemaltered.

说明:authenticated by "oracle" :打开/关闭wallet的认证密码是oracle

如果报错

SYS@COFFEE>alter system set encryption key authenticated by "oracle";

altersystem set encryption key authenticated by "oracle"

*

ERRORat line 1:

ORA-28368: cannot auto-create wallet不能自动创建钱包

/u01/app/oracle/product/11.1.0/db_1目录下运行sqlplus 登录数据库就可以成功执行

查看一下wallet钱包是否在$ORACLE_HOME/network/admin/目录下生成

[oracle@cafeadmin]$ ll

-rw-r--r--1 oracle dba 1573 Nov 7 03:21 ewallet.p12 这个就是我们刚才生成的wallet钱包,里面有我们创建的密钥(密文形式),打开wallet钱包的认证密码是“oracle”,创建wallet钱包之后密钥就自动在里面了。

创建一个加密表空间

SYS@COFFEE>create tablespace encrypted_tbs datafile '/u01/app/oracle/oradata/COFFEE/datafile/test_encrypted01.dbf'size 10m encryption default storage(encrypt);

CREATE TABLESPACE stablespace DATAFILE '/u01/app/oracle/oradata/COFFEE/datafile/stablespace.dbf'SIZE 10M ENCRYPTION DEFAULT STORAGE(ENCRYPT);

Tablespacecreated.

创建加密表空间encrypted_tbs,大小10MB,如果不指定加密算法默认使用AES128加密算法密钥长度128位,需open wallet

如果报错

ERRORat line 1:

ORA-28365: wallet is not open 此时报错是没有打开钱包,因为表空间的加密是使用钱包中的密钥进行加密的,如果钱包没打开便无法使用密钥,当然也就创建不了加密表空间。

Open&Closethe Oracle Wallet mothed

alter systemset wallet open identified by"oracle"; 打开钱包

alter system set wallet close identified by "oracle"; 关闭钱包11gR2

alter system set wallet close; 关闭钱包11gR1

查看表空间属性

SYS@COFFEE>select tablespace_name,encrypted from dba_tablespaces;

TABLESPACE_NAME ENC

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

SYSTEM NO

SYSAUX NO

UNDOTBS1 NO

TEMP NO

USERS NO

EXAMPLE NO

TBS1 NO

TBS2 NO

TBS3 NO

TBS4 NO

ENCRYPTED_TBS YES 加密状态

实验

在加密表空间上创建一张表encryption_t,这张表上数据全部为加密状态

SYS@COFFEE>create table encrypted_t (x int) tablespace encrypted_tbs;

Tablecreated.

插入一条数据

SYS@COFFEE>insert into encrypted_t values (100);

1 rowcreated.

SYS@COFFEE>commit;

Commitcomplete.

SYS@COFFEE>select * from encrypted_t;

X

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

100

我们关闭wallet看效果

SYS@COFFEE>altersystem set wallet close;

Systemaltered.

当没有打开wallet时不允许开打表

SYS@COFFEE>select * from encrypted_t;

select* from encrypted_t

*

ERRORat line 1:

ORA-28365: wallet is not open

创建一个新表encryption_t1时,也需要使用wallet钱包中的密钥进行加密

SYS@COFFEE>create table encrypted_t1 (x int) tablespace encrypted_tbs;

createtable encrypted_t1 (x int) tablespace encrypted_tbs

*

ERRORat line 1:

ORA-28365: wallet is not open

唯一例外->删除表,因为删除的过程是不需要密钥key参与,所以walletopen or close状态都无所谓,直接执行就好

SYS@COFFEE>droptable encryption_t;

Tabledropped.

小结:我们介绍了Oracle加密表空间的原理、场景、实践操作,从理论到实践给朋友们展示了Oralce加密表空间的使用效果,这里切记一定不要忘记wallet的认证密码,否则你将不能查询到表空间内的数据,最好的办法就是把密码记录到一个密码生成器中,定期更新,这样既保证安全性又保证不会忘记。




Leonarding
2015.01.05
天津&winter
分享技术~成就梦想
Blogwww.leonarding.com

推荐阅读
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
author-avatar
大果粒和小果粒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有