你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
oracle 基础(27)
 

注意:诊断代码“01”代表病人 id 1 和诊断 id 1,这是唯一允许的诊断代码;因此显示得很清晰。 其它的显示已经显示为孔,并且得到有效地屏蔽。

提示
如果您想屏蔽敏感列,程序也没有提及到它们,就没有提示。

如果您使用视图方法(这里敏感列只是从该视图中删除),则将会引发一个问题,这里程序使用像 SELECT * FROM TABLE ... 一样的结构。 因为已经没有明确对列进行命名,缺少一列将影响到程序执行。 但是,这不是一个关于修改视图方法(在这里列仍然存在但是为空)的问题。

有一个您应该意识到的很重要的提示。 假如您有一个称为“CONTRACT_AMOUNT”的列;如果数值小于某个特定值(比如 500),该列就显示。如果数值大于 500,该列就显示为空。 该表有三行,这三行所在列的数值分别为 300, 300, 600。 在列屏蔽之前,如果用户提交以下查询

select avg (contract_amount) from contracts;

他将得到 400 (就是 300,300 和 600 的平均值)。 在列屏蔽之后,数值为 $600 的列的值将变为空,因此用户将看到的值分别为 300,300 和空。 现在,输入同样的查询,将会显示 200 (300,300 和空)。 请注意一个重要的区别: 所显示的值为 200;而不是 400

请意识到列屏蔽可能引入的这种重要区别。

操作计划

  1. 在所有敏感的表上列出所有敏感的列。
  2. 确定将要屏蔽的敏感的列。
  3. 确定权限模式。
  4. 如果您使用的是 Oracle 数据库 10g 第 1 版或更高版本,请选择 VPD 方法。
    另外,
    选择基于视图的方法。
  5. 如果您选择 VPD 方法:
    1. 给各个表构建策略函数。
    2. 给各个表构建策略。 这将帮助您在特定的表上对屏蔽进行控制。
  6. 如果您选择基于视图的方法:
    1. 在各个表(表的名字通常为 VW_<table_name>)上创建视图,
    2. 创建指向该视图的同义词(同义词的名称和表的名称相同)。
    3. 在表上撤消给用户授予的权限。
    4. 再次给视图授予权限。
    5. 重新编译所有依赖的无效对象。



4.4 对敏感的数据进行加密

背景
正如我前面提到的,安全就好比在寒冷的冬天里,您穿上好几件衣服或穿最庞大的冬天使用的夹克御寒。 但是,构建各防御层可能阻止不了最坚决的恶意入侵者,当然这也不会总能够防御合法用户盗窃公司财产。 这里的组最后一道防线是加密,通过加密,用户(或者恶意入侵者)只有使用密码才可以访问到数据。 没有密码的数据是无效的。 如果您保护了密码,您就保护了数据。

请记住,加密不能替代其它层次的安全性。 不管怎样,您必须有那些防御。

而且,加密是一个很大的课题,但是我将在这里给您一个可引发操作的概述。

Oracle 提供两种加密方式:

  1. 加密 API 例如包 dbms_obfuscation_toolkit 和 dbms_crypto (在 Oracle 数据库 10g 第 1 版和更高版本中)。 使用这些包,您可以构建您自己的基础架构,对数据进行加密。 这种方法的灵活性最强,但是构建和管理却相当复杂。

  2. 透明的数据加密是 Oracle 数据库 10g 第 2 版和更高版本的一个特性;使用该特性后,您就不必手动进行密码管理了。 数据库管理密码,但是正如名称所指,加密是透明的——数据仅仅以加密的方式存储而已。 当您选择了这种方式,就会明白的。

我建议在您阅读策略部分之前,请分别察看 Oracle 文档(Oracle 数据库安全指南的 第 17 章 和 Oracle 数据库高级安全管理员指南的 第 3 章)。

策略
选择常规加密,还是透明的数据加密是很重要的。 (然而,在 Oracle 数据库 10g 第 2 版之前, 您只能选择常规加密。)
  • 不论哪种方式,您都必须识别要加密的表,尤其是要加密的列。 因为例行加密毁坏 CPU 周期,所以对所有列进行加密可能并不好。
  • 下一步是选择加密算法。 通常是选择 156 位加密的三重数据加密标准 (DES3)。 然而,以 Oracle 数据库 10g 第 1 版开始,您可以访问更新、更快和更安全的高级加密标准 (AES) 算法,使用该算法要有 128 位密码。
  • Oracle9i 数据库提供 dbms_obfuscation_toolkit;您可以使用 Oracle 数据库 10g 第 1 版访问一个更好的工具 dbms_crypto。 您仍然可用更老的包,但是如果您第一次构建加密基础架构,请不要使用。
  • 在这一点,您必须选择 TDE 或您自己的例行使用的(如果可以应用的话)。 下表可以帮助您作出决定。
  透明的数据加密 用户构建的加密

灵活性

最小 — 例如,如果 SALARIES 表中的 SALARY 列加密了,那么 任何 能够对该表进行访问的用户都将能够清晰地察看数据。 您不能按照角色和级别对那个列进行有选择性的控制。 该数据库中的数据可以加密,但是用户访问时要能解密。

强健 — 例如,只有 用户为经理时,您才可以定义以明文方式显示列;否则进行加密。 这将确保不同的用户使用同样的应用程序察看不同的数据。 这种灵活性也可以扩展到其它变量,例如访问数据库的时间和客户机器。

设置

最小 — 该工具的确是透明的 — 您只需执行该命令(假定所有一次性的工作都已经完成,例如创建钱夹):

ALTER TABLE SALARIES MODIFY (SALARY ENCRYPT)

广泛的 — 要向用户提供无缝的界面,您必须创建对列进行解密的视图。 接着应该对该视图进行授权。 在管理上这添加了复杂性。

密码管理

自动化—该数据库使用钱夹处理密码管理。

人工—因为您必须管理密码,所以您必须决定如何平衡两种相互冲突的需求:

  • 确保密码的安全,恶意入侵者无法获取该密码。
  • 应用程序可以访问密码。

对列的限制

一些—某些列不能加密,例如有些列有分区密钥、数据类型 BLOB,等等,这样的列不能加密。

仅仅限制为 LONG。

对索引的支持

N/A—因为数据是以加密的方式存储的,所以在查询中索引不可能发挥作用。

支持—因为

 

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089