注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 数据库 > Oracle 内容正文:Oracle 10g第2版新特性之SQL和PL/SQL

Oracle 10g第2版新特性之SQL和PL/SQL

发布时间:2006-08-08 12:01:51 来源:Oracle技术网 网友评论 0 条
  透明数据加密

  对于加密,许多用户深感矛盾:他们既感兴趣,又因意识密钥管理的复杂性而感到慎重,如果处理不当,则会导致设置的效率低下。加密和解密值还会带来相关的性能开销,这使得大部分应用程序架构师不太乐于接受该过程。结果是,很多系统设计根本没有加密,只是构筑了强大的外围防护,如强大的口令和适当的授权方案。

  但是,请想象一下如果整个服务器被盗了,甚至只是磁盘被盗,这些磁盘可以装配在具有相同操作系统的服务器上,然后其中的数据将被销毁殆尽。或者有一个的 DBA 品行不端,在日常业务活动中恶意突破了外围防护,然后将您所有重要的客户信息洗劫一空。在这两种情况下,如果所涉及的商业机构是在加利福尼亚州(可能不久之后在美国的其他州),它们在法律上有责任将安全漏洞的情况通知给所有受到影响的客户。

  在上述罕见(但确是事实)的情况中,认证方案没有实际意义。这就是为什么对于那些将安全作为头等大事的机构而言,透明数据加密 (TDE) 是一个如此有用的特性;它支持加密,同时将密钥管理的复杂性交给数据库引擎来处理。同时,它允许 DBA 在不必实际看到数据的情况下管理数据库表。

  在 Oracle 数据库 10g 第 2 版中使用 TDE 时,可以随时地对表中的一列或多列进行加密;只需将列定义为加密形式即可,不用编写代码。请记住,加密需要使用密钥和算法对输入值进行加密。TDE 为特定的表生成单独的密钥。这种方法方便了密钥管理却也更易被他们窃取,所以数据库提供了另一种密钥 — 万能密钥 — ,它可以在数据库级别上设置。表密钥是利用万能密钥进行加密的,要获得表密钥就需要这个万能密钥。因此,对列进行解密时需要万能密钥和表密钥。

  万能密钥存储在数据库外一个称为“钱夹”的地方 — 默认位置在 $ORACLE_BASE/admin/$ORACLE_SID/wallet。在概念上,它类似于下图。


  在配置 TDE 之后 — 或者更明确地说是配置了钱夹和万能密钥之后 — 您可以使用它来保护数据值。要为表的一列加密,需要使用以下 SQL:

create table accounts
(
acc_no number not null,
first_name varchar2(30) not null,
last_name varchar2(30) not null,
SSN varchar2(9) ENCRYPT USING 'AES128',
acc_type varchar2(1) not null,
folio_id number ENCRYPT USING 'AES128',
sub_acc_type varchar2(30),
acc_open_dt date not null,
acc_mod_dt date,
acc_mgr_id number
)

  在这里,您在列 SSN 和 FOLIO_ID 上使用了 TDE,它们现在以加密方式存储在表本身。但是,当用户从表中选择时,她看到以明文表示的数据,因为在检索过程中已经完成了解密。如果磁盘被盗,则包含在表段中的信息仍然保持加密状态。盗窃者需要表密钥才能看到加密的值,但是要获得表密钥,他需要万能密钥,而万能密钥存储在外部,因此无法获得。

  注意列 SSN 和 FOLIO_ID 后面的子句,这些子句指定 ENCRYPT 使用 128 位高级加密标准。

  数据库拥有预先配置的钱夹。要设置钱夹口令,可使用命令:

alter system set encryption key authenticated BY "topSecret";

  如果还未创建钱夹,该命令将先创建钱夹,然后将口令设置为“topSecret”(区分大小写)。然后您就可以开始在表的创建和更改期间将加密用于列定义。

  为外部表加密

  在以上示例中,我使用散列表为列加密。您还可以在外部表上使用 TDE。例如,如果您希望生成一个包含 ACCOUNTS 的数据的转储文件,以便发送到不同的地点,则可以使用简单的 ENCRYPT 子句。

create table account_ext
organization external
(
type oracle_datapump
default directory dump_dir
location ('accounts_1_ext.dmp',
'accounts_2_ext.dmp',
'accounts_3_ext.dmp',
'accounts_4_ext.dmp')
)
parallel 4
as
select
ACC_NO,
FIRST_NAME,
LAST_NAME,
SSN ENCRYPT IDENTIFIED BY "topSecret",
ACC_TYPE,
FOLIO_ID ENCRYPT IDENTIFIED BY "topSecret",
SUB_ACC_TYPE,
ACC_OPEN_DT,
ACC_MOD_DT
from accounts;

  在文件 accounts_*_ext.dmp 中,SSN 和 FOLIO_ID 的值不会是明文,而是加密形式。如果您希望使用这些文件作为外部表,则必须提供 topSecret 作为口令以读取这些文件。

  在这里您可以看到,TDE 是访问控制的理想补充(而不是替代)。

相关文章
  • Oracle 10g第2版新特性之可管理性特性
  • Oracle 10g第2版新特性之性能特性
  • Oracle 10g R2新特性之备份和可用性特性
  • 官方视频教程演示 3DS Max 9 新特性
  • 国外虚拟主机PHP+(MySQL和PostgreSQL)型
【评论】【收藏本文】【打印】【关闭】
上一篇文章:信息周刊:AJAX的优势
下一篇文章:Spring2.0技巧之活用FactoryBean
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Atlas快速入门之实战Atlas
Atlas快速入门之实战Atlas
.net页面间的参数传递简单实例
.net页面间的参数传递简单实例
推荐阅讯
  • Oracle 10g Release2新功能之Ref Cursor
  • J2ME中多线程网络连接编程的分析
  • Access2000迁移到Oracle9i要点
  • Oracle数据安全面面观
  • Web2.0开始试探钱途 视频广告逐渐增多
  • 怎样才能限制SQL Server只能让指定的机器连
  • Sun向更多PC厂商授权Java销售
  • 将Oracle 10g内置的安全特性用于PHP
  • Ruby程序快速入门之数据结构
  • OpenGL编程轻松入门之使用光照和材质
阅读排行
  • 1..net页面间的参数传递简单实例
  • 2.VC++与Matlab混合编程之引擎操作详解
  • 3.Oracle数据库数据对象分析
  • 4.Eclipse3.2+Tomcat5.5.17+Oracle9配置
  • 5.Oracle数据库中索引的维护
  • 6.在Oracle的网络结构中解决连接问题
  • 7.Oracle数据安全面面观
  • 8.Oracle数据库的ORA-00257故障解决过程
  • 9.Oracle数据库备份与恢复的三种方法
  • 10.Oracle与SQL Server在企业应用中的比较
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载