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

如果您决定使用 TDE,请采取以下步骤:

  1. 配置钱夹: 钱夹一般位于文件夹 $ORACLE_BASE/admin/$ORACLE_SID/wallet 中,但是您可以通过将以下行放入文件 SQLNET.ORA 中使用任何位置:
    ENCRYPTION_WALLET_LOCATION=
     (SOURCE=
        (METHOD=file)
        (METHOD_DATA=
           (DIRECTORY=/orawall)     )  ) 
    

    在这里,将钱夹位置设置为 /orawall。

  2. 打开该钱夹,分配一个密码: 执行以下命令:
    alter system set encryption key authenticated by "53cr3t";
  3. 选择的密码要难以猜测,容易记忆。 (为了安全,您可能不想让 DBA 了解钱夹密码,所以需要另一个人打开该钱夹。) 现在,从现在开始,每次数据库打开时,您必须使用以下方式打开该钱夹:
    alter system set encryption wallet open authenticated by "53cr3t";

之后,您创建的表可以包含经过加密的列:

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
)

当用户将数据插进该表时,数据就自动转化为加密的数据并放置到磁盘上。 类似地,当选择语句检索到数据时,数据自动转化为加密的值,并且向用户显示。

提示
和任何重要的更改一样,有一些重要的提示。

  • 加密是非常占用 CPU 的操作。 如果系统已经受 CPU 所限,这会使系统更糟。
  • 索引不会和加密的列配合得很好,尤其是谓词,比如 WHERE <ColumnName> LIKE 'XYZ%'。该谓词应该已经在未加密的列中使用索引范围扫描,但是还将使用全面的表扫描。
  • 密码管理是一个很重要的问题。 如果您丢失了密码,就访问不到该数据。

操作计划
操作计划位于策略部分。



4.5 安全备份

背景
许多情况下,DBA 会忽略最容易受到攻击的要害: 数据库备份。 一旦数据不在服务器的安全范围内,您将不再能控制这些数据。 如果恶意入侵者可以盗窃磁带,他就可以将它们安装到一个不同的服务器上,恢复数据库,再慢慢地浏览数据。

幸运地是,即使这样您只要使用加密备份还是可以消除这种风险的。

策略
在 Oracle 数据库 10g 第 2 版和更高版本中,您可以以三种不同的模型在 RMAN 上对备份进行加密: 透明模式、基于密码的模式和混合模式。

透明模式。 按照这种方法(也是最常用的方法),RMAN 从加密钱夹中获取加密密码(在前面讨论过了),并使用它对备份集进行加密。 不必说,在备份和恢复中钱夹必须是打开的。 如果钱夹没有打开,您将看到以下错误:

ORA-19914: unable to encrypt backup
ORA-28365: wallet is not open
  1. 执行以下命令打开钱夹:
    alter system set encryption wallet open authenticated by "53cr3t";

    当然,可以设置不同于 "53cr3t" 密码。 请记住,这是区分大小写的,因此必须带有双引号。

  2. 确保启动整个数据库的加密。 您可以执行以下命令启动加密:
    RMAN> configure encryption for database on;
  3. 另外,如果您想对几个表空间进行加密,您可以为所有的表空间执行以下命令。
    RMAN> configure encryption for tablespace users on;
  4. 之后,您可以使用常规的备份命令而无需其他用户的干预。
    RMAN> backup tablespace users;
  5. 当您恢复该备份时,该钱夹必须是打开的。 如果钱夹没有打开,恢复备份时您将看到以下错误:
    RMAN> restore tablespace users;
    
    Starting restore at 26-MAY-05
    using channel ORA_DISK_1
    
    ... messages ...
    ORA-19870: error reading backup piece C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AR
    EA\ANANDA\BACKUPSET\2006_02_09\O1_MF_NNNDF_TAG20060209T221325_1YR16QLT_.BKP
    ORA-19913: unable to decrypt backup
    ORA-28365: wallet is not open  
    

    错误信息是很清楚的;该钱夹必须是打开的。 如果您需要在其它服务器上恢复表空间,您必须拷贝该钱夹,使用正确的密码打开该钱夹。 如何恶意入侵者盗窃了磁带,他将不能恢复备份。

基于密码的模式。 这种情况下,不需要将钱夹用于密码管理。 密码加密备份,同时密码本身也使用密码加密。 命令如下:

RMAN> set encryption on identified by "53cr3t" only;
RMAN> backup tablespace users;

密码将对上面产生的备份集进行加密。 为了在恢复中对密码进行加密,您必须使用如下密码:

RMAN> set decryption identified by "53cr3t ";
RMAN> restore tablespace users;

这种方法就不需要使用钱夹了。 因此在任何服务器上恢复备份,您只需要密码,不再需要钱夹。 然而,您的密码在脚本中必须是可见的。这样,任何能访问数据库服务器的恶意入侵者将能够读取该密码。 请参阅第 2 阶段,其中涉及了如何隐藏密码的内容。

混合模式。由名称可知,该模式两种方法的结合体。 您按照以下方式进行备份:

RMAN> set encryption on identified by "53cr3t";
RMAN> backup tablespace users;

注意:在命令 set encryption 中没有“only”语句。 这样就可以使用两种方法之一来恢复备份: 使用密码“tiger”,或者打开钱包。 例如,请注意以下命令。 没有提供密码,但是成功地进行了恢复。

RMAN> sql 'alter tablespace users offline';
RMAN> restore tablespace users;

Starting restore at 26-MAY-05
allocated channel:ORA_DISK_1
... restore command output comes here ...

当您使用脚本处理备份时,经常不得不将数据库恢复到不同的服务器(例如 QA 服务器)上时,这种方法将派上大用场。 但是一般来说,这种方法通常没有太大的实际用处。

如果您使用透明模式进行备份加密,您也可以备份钱夹。 即使对手获得了钱夹,他没有密码也打不开钱夹。

问题

  • 我以前提到加密是非常占用 CPU 的过程。因此,对整个 RMAN 备份集进行加密将是高度占用 CPU 的操作。 您可以通过部分地对备份进行加密缩短 CPU 周期——仅仅选择包含敏感数据的表空间。 一个更好的方法是将透明数据加密用于列级加密。
  • 透明方法中的钱夹和基于密码方法的密码是很重要的。 如果您将它们都丢失了,您将不再能对备份进行加密;因此,要有一个计划对它们进行备份。
  • 如果您使用基于密码的加密,该密码必须在脚本中。 但是可能很容易被盗。

(编辑: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