操作计划
- 确定您是否真的需要对整个备份集进行加密,而不是对某些表中的某些列加密。
- 如果对 RMAN 备份进行加密,请选择整个数据库或特定表空间。
- 选择基于密码的方法、透明方法,以及混合模式方法。
- 如果采用透明方法,或混合模式方法,则
- 配置钱夹。
- 打开钱夹。
- 在 RMAN 中,配置表空间或者整个数据库进行备份加密。
- 如果是基于密码的方法,或者混合模式方法,则
- 选择密码,并将它放入 RMAN 脚本中。 使用第 2 阶段中说明的任一密码隐藏技术。
- 只使用那些脚本进行备份。
4.6 从存档日志中挖掘历史 背景 数据库安全实施的一个很重要的方面是确保数据库上不发生未授权的 DDL 活动。 恶意入侵者获取连接数据库的合法路由后,可以很方便的写几段代码来对数据库实施简单的拒绝服务攻击。
在第 3 阶段中,您了解了如何保护主要对象,所以没有 DBA 的同意是不能更改主要对象的。 但是,如果非法更改得到同意,但在后来才得知发生了攻击,该怎么办呢? 这就要用到安全的第四个方面——责任可查性。
一个选项是开启 DDL 审计以跟踪 DDL 活动。 总而言之,这是最容易的方法——易于设置,更易于浏览,可以进行归档,等等。 然而,审计会影响性能,这是我们正试图避免的。 问题是如何重新跟踪 DDL 语句,而不用对审计进行设置。
策略 可以使用称为 Log Miner 的工具(或特性)。 Oracle8i 数据库中推出了 Log Miner,利用它可以搜索在线重做日志或者归档日志。
下文告诉您如何设置日志挖掘以挖掘 DDL 详细信息。 首先,获取要挖掘的在线日志文件或者归档日志文件,并将它们添加到 Log Miner 会话中。 sqlplus / as sysdba
begin
dbms_logmnr.add_logfile (
'C:\ORACLE\DATABASE\ANANDA\REDO03.LOG');
dbms_logmnr.add_logfile (
'C:\ORACLE\DATABASE\ANANDA\REDO02.LOG');
dbms_logmnr.add_logfile (
'C:\ORACLE\DATABASE\ANANDA\REDO01.LOG');
end;
/
添加文件之后,启动 Log Miner 会话。 您必须传递数据字典源;在这里我们已经将在线类别指定为源。 begin
dbms_logmnr.start_logmnr (
options => dbms_logmnr.dict_from_online_catalog
);
end;
被挖掘的内容放在称为 V$LOGMNR_CONTENTS 的视图中;但是该视图是临时的——仅仅启动 Log Miner 的会话可以看到该视图。 因此,如果以后您想进行分析,您需要将它保存在永久表中。 create table lm_contents
nologging
as
select * from v$logmnr_contents;
Now for the analysis. To find the DDL commands you would issue the following query: select sql_redo
from lm_contents
where operation = 'DDL'
and seg_owner not in ('SYS','SYSTEM','PUBLIC');
下面是一个样例输出: 注意:没有 DROP TABLE 语句——在 Oracle 数据库 10g中,删除的表实际上没有被删除,而是进行了重新命名。 SQL_REDO 将反映这点。 实际上,用户使用 PURGE 子句删除表时,列 SQL_REDO 将会反映正确的命令。 为了保存空间,我已经修剪了输出,所以函数和过程的 DDL 出现了一部分。 我也已经使用 RECSEPCHAR '.'以显示多行记录中的设计行。) SQL_REDO
-------------------------------------------------------------------------------
(编辑:aniston)
|