教你如何成为Oracle 10g OCP - 第二十章 安全

本文详细介绍Oracle数据库的安全特性,包括审计功能的不同层次、虚拟专用数据库(VPD)、透明数据加密(TDE)以及备份加密方法。文章深入讲解了如何通过各种安全措施保护数据库免受未授权访问。


20.1 审计

Oracle的审计功能非常强大,分为5个层次: 强制审计,标准数据库审计,
基于值的审计,精细化审计以及对DBA的审计 。

20.1.1  强制审计

这种审计始终生效,只要以sysdba登入,就会对此进行记录,信息包括何时,
哪个用户哪个客户端登入到库中。

这种审计在DB关闭时也生效,所以它不是记录在DB表中,而是在操作系统文件
中,对linux或unix而言,则由初始化参数audit_file_dest的值决定,

SQL> show parameter audit_file_dest

NAME              TYPE     VALUE
------------     ------ ----------- ---------------------------
audit_file_dest   string      /u01/product/admin/mxdell/adump


mxrac01$ls 
ora_12893.aud  ora_15393.aud  ora_19054.aud  ora_23252.aud

上面这些文件都是以sysdba登陆后产生的,名称为ora_进程号.aud 。 

而对于windows来说,强制审计信息记录在事件查看器中,没有记录在aud
文件中。

 

20.2 标准数据库审计

默认情况下 audit_trail= NONE,是静态参数,修改需要重新启动DB生效 。

AUDIT_TRAIL = { db | os | none | true | false | db_extended }

none or false
Disables database auditing.

os
Enables database auditing and directs all audit records to the
operating system's audit trail. 如果是windows, 放在event log中。

db or true
Enables database auditing and directs all audit records to the
database audit trail (the SYS.AUD$ table). 信息放在DB中,可
通过表SYS.AUD$或dba_audit_trail视图查询。

db_extended
Enables database auditing and directs all audit records to the
database audit trail (the SYS.AUD$ table). In addition, populates
the SQLBIND and SQLTEXT CLOB columns of the SYS.AUD$ table.

XML
审计信息写入xml文件中,文件位于参数指定路径,通过v$xml_audit_trail
可以查询xml文件信息。

 


审计选项(audit option) 表示审计内容。我们通过以下4个方面进行设置:

1. 审计范围,默认为by session,如果当前session执行了审计的SQL命令,
则记录一次审计信息,如果下次还是相同类型的SQL,则不记录,所以生成
数据量较小,如果by access为单位,则每次都记录要审计的SQL命令,记录
的审计信息量比较大。默认为by session .

2. 审计类型: 指定对执行成功的语句进行审计还是对执行失败的语句进行,
或者不管怎样都记录。默认是成功或失败都记录。

3. 审计特定用户,只有特定用户执行了要审计的SQL命令才记录,其他不记录,
比如HR用户。

4. 审计内容: 包括对SQL审计,对系统权限进行审计,或对对象权限进行审计。

在启用审计时,必须设置审计内容,即必须说明要审计的SQL语句,系统权限,
还是审计对象权限,这叫做审计选项。 其他几个审计方面都有默认值。可以
不用设置。 具体设置如下:

A. 审计SQL语句
例子:  SQL> audit table by hr ;
表示用户HR执行和表有关的命令,只要成功,就会进行审计。可以查询
dba_audit_trail 。 关闭审计选项: SQL>noaudit table ;
启用对session的登陆进行跟踪。
SQL> audit session ;

B. 审计系统权限
例子:
SQL> audit select any table by hr ;
SQL> noaudit select any table by hr ;  (关闭)
注意: 如果HR访问自己用户下的表是不会有审计记录的。


B. 审计对象权限 
例子:
SQL> audit select on hr.credit_card_info by access ;
SQL> audit select on hr.credit_card_info by session ;
SQL> noaudit select on hr.credit_card_info ;  (关闭)
我们也可以审计DML操作:
SQL> audit insert on hr.credit_card_info by session ;
SQL> audit update on hr.credit_card_info by session ;
SQL> audit delete on hr.credit_card_info by session ;

 


20.1.3 基于值的审计

标准审计中,只是记录用户做过啥,不能记录变化前后的值,基于值的审计
可以记录操作前后的实际值,原理上讲,这种审计方法是通过触发器完成的,
需要用户自己编写程序。   所以这种方式可能对系统性能有一些影响,不过
记录的审计信息要多很多。

例子: 略,需要自己创建trigger .

 


20.1.4  精细化审计

前面讨论的都是针对某种操作进行审计,如果需要审计更新某些行,其他行的
更新不需要审计,或者查询的某些列需要审计。 Oracle根据此需要提供了精细
化审计(Fined-Grained Auditing,FGA),该功能从Oracle9i引入。

精细化审计是通过DBMS_FGA包来实现的,并将审计的数据内容作为一个策略,在
数据库中进行定义,审计信息记录在数据字典fga_log$中,可以查询视图
dba_fga_audit_trail 来查询审计数据 。 
例子:
begin
   dbms_fga.add_policy(
     object_schema=>'HR',
     object_name=>'employees',
     policy_name=>'audit_emps_salary',
     audit_condition=>'department_id=100', -- 满足条件的需要审计
     audit_column=>'SALARY', -- 满足条件的需要审计
     enable=>'true',
     statement_types=>'SELECT,UPDATE'  -- 操作类型审计 
 );
end ;
/

删除审计策略:
SQL> exec dbms_fga.drop_policy('HR','EMPLOYEES','audit_emps_salary') ;

 

 

20.1.5  对DBA的审计

前面的所有审计对sys用户都不生效,我们如果需要对SYS用户进行审计,那么需要
设置参数 audit_sys_operations=true , 重启实例生效,因为sys在DB关闭时也能
对数据库操作,对于sys的审计信息不能放在数据字典表中,需要audit_file_dest
路径下的文件记录。

SQL> alter system set audit_sys_operations=true scope=spfile ;
重新启动数据库。
以SYS执行命令,然后在adump目录下找到相关aud 文件即可。

 

 

20.2  虚拟专用数据库(VPD, Virtual Private Database)

VPD, 即通过设置数据库,让不同用户只能查看表中的部分数据,VPD分为两个级别:

行级别: 控制某些用户只能查询某些行,比如销售人员只能查询自己的销售数据。
列级别: 控制某些用户不能查询某些列的值,比如Salary.

20.2.1  基于行的VPD

基于行的VPD也是精细化访问控制(FGAC: Fined Grained Access Control)通过定义
规则实现,规则集合叫做FGAC政策。 如果对某个表设置了FGAC, 当用户发出查询后
DML时,Oracle会根据定义的策略,自动改写SQL, 自动添加where条件。

在使用FGAC,会涉及到一个数据库对象:应用程序上下文(Application Context),可以
理解为数据库中每个session的全局环境变量,比如对于表sals_list,我们创建一个
应用程序上下文,将用户ID号作为属性放入应用程序上下文中,然后在定义FGAC的时候
将该用户ID取出作为限定条件短语,返回给Oracle .

具体例子参考 P415 .

 

20.2.2 基于列的VPD
某些敏感数据列比如工资,可以通过创建基于列的VPD, 屏蔽敏感列数据。
和基于行的VPD一样,设置FGAC政策。我们还需要指定两个参数来设置要屏蔽
的列名,比如sec_relevant_cols,多列以逗号隔开,sec_relevant_cols_opt
设置为all_rows, 表示对表中所有记录都屏蔽salary列 。

具体例子参考 P417 .

 


20.3 透明数据加密(TDE) 

VPD阻止不了用户对数据文件的直接访问。Oracle10g推出的透明数据加密(Transparent
Database Encryption), 加密方法内嵌在数据库中,简化了过程。通过使用TDE, 应用
程序不需要进行任何修改,当数据插入表的时候,Oracle在把数据写入磁盘前,自动对
数据进行加密,下次查询时候自动解密。 加密的同时对相关索引条目也进行了加密。

不过虽然对数据进行了加密,但是如果用户登陆DB查看的话,还是可以看到信息的,那么
TDE不能代替其他的安全措施, 需要和VPD等其他安全手段结合使用。

使用 TDE时,需要借助“钱包”(wallet), 加密解密都需要调用存放了加密密钥的文件。

只需要简单几步实现对TDE的使用。

A. 指定钱包所在路径, 可以通过图形界面Oracle Wallet Mananger来实现。可以输入owm
   打开图形界面,或者也可以编辑sqlnet.ora指定目录。 默认钱包路径在admin/SID/wallet下。
B. 创建钱包 SQL> alter system set encryption key identified by "a1e@d879" ;
C. 打开钱包,具体方式参考P420 .

 

20.4 对备份进行加密
Oracle10g中可以使用3种方式对RMAN备份进行加密。

A. 透明加密模式 : 默认的,借助钱包实现。
B. 基于密码的加密模式,备份前指定密码,恢复时提供密码才能继续。
例子:
RMAN >set encryption on identified by "passwordxxxx"  only ; 
RMAN >backup tablespace users ; 
RMAN >set encryption identified by "passwordxxxx" ; (恢复前)
C. 混合加密模式: 同时使用钱包和密码。

对备份进行加密时,只能对备份集进行加密,不能对镜像副本加密。
详细设置参考 P422 .

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-676357/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-676357/

标题基于Python的汽车之家网站舆情分析系统研究AI更换标题第1章引言阐述汽车之家网站舆情分析的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义说明汽车之家网站舆情分析对汽车行业及消费者的重要性。1.2国内外研究现状概述国内外在汽车舆情分析领域的研究进展与成果。1.3论文方法及创新点介绍本文采用的研究方法及相较于前人的创新之处。第2章相关理论总结和评述舆情分析、Python编程及网络爬虫相关理论。2.1舆情分析理论阐述舆情分析的基本概念、流程及关键技术。2.2Python编程基础介绍Python语言特点及其在数据分析中的应用。2.3网络爬虫技术说明网络爬虫的原理及在舆情数据收集中的应用。第3章系统设计详细描述基于Python的汽车之家网站舆情分析系统的设计方案。3.1系统架构设计给出系统的整体架构,包括数据收集、处理、分析及展示模块。3.2数据收集模块设计介绍如何利用网络爬虫技术收集汽车之家网站的舆情数据。3.3数据处理与分析模块设计阐述数据处理流程及舆情分析算法的选择与实现。第4章系统实现与测试介绍系统的实现过程及测试方法,确保系统稳定可靠。4.1系统实现环境列出系统实现所需的软件、硬件环境及开发工具。4.2系统实现过程详细描述系统各模块的实现步骤及代码实现细节。4.3系统测试方法介绍系统测试的方法、测试用例及测试结果分析。第5章研究结果与分析呈现系统运行结果,分析舆情数据,提出见解。5.1舆情数据可视化展示通过图表等形式展示舆情数据的分布、趋势等特征。5.2舆情分析结果解读对舆情分析结果进行解读,提出对汽车行业的见解。5.3对比方法分析将本系统与其他舆情分析系统进行对比,分析优劣。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括本文的主要研究成果及对汽车之家网站舆情分析的贡献。6.2展望指出系统存在的不足及未来改进方向,展望舆情
【磁场】扩展卡尔曼滤波器用于利用高斯过程回归进行磁场SLAM研究(Matlab代码实现)内容概要:本文介绍了利用扩展卡尔曼滤波器(EKF)结合高斯过程回归(GPR)进行磁场辅助的SLAM(同步定位与地图构建)研究,并提供了完整的Matlab代码实现。该方法通过高斯过程回归对磁场空间进行建模,有效捕捉磁场分布的非线性特征,同时利用扩展卡尔曼滤波器融合传感器数据,实现移动机器人在复杂环境中的精确定位与地图构建。研究重点在于提升室内等无GPS环境下定位系统的精度与鲁棒性,尤其适用于磁场特征明显的场景。文中详细阐述了算法原理、数学模型构建、状态估计流程及仿真实验设计。; 适合人群:具备一定Matlab编程基础,熟悉机器人感知、导航或状态估计相关理论的研究生、科研人员及从事SLAM算法开发的工程师。; 使用场景及目标:①应用于室内机器人、AGV等在缺乏GPS信号环境下的高精度定位与地图构建;②为磁场SLAM系统的设计与优化提供算法参考和技术验证平台;③帮助研究人员深入理解EKF与GPR在非线性系统中的融合机制及实际应用方法。; 阅读建议:建议读者结合Matlab代码逐模块分析算法实现细节,重点关注高斯过程回归的训练与预测过程以及EKF的状态更新逻辑,可通过替换实际磁场数据进行实验验证,进一步拓展至多源传感器融合场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值