SlideShare a Scribd company logo
1 of 24
Essential Oracle Security Internal For DBA(V1.0)




刘相兵 (Maclean Liu)
liu.maclean@gmail.com

                                              www.oracledatabase12g.com
介绍

允许或禁止 Oracle DB 中的用户行为,包括其中的对象
通过以下实现:
登录身份验证 (Authentication) ,连接到数据库
访问控制,访问模式对象和数据 (access control)
审计,记录用户行为 (audit)




                   www.oracledatabase12g.com   www.oracledatabase12g.com
  www.oracledatabase12g.com
基础身份验证

数据库管理员 ( 以 SYSDBA/SYSOPER) 身份在 DB 之外被身份验证
操作系统身份验证
密码文件身份验证
举例来说 sqlplus “/ as sysdba” 登录, OS 用户在 Unix 上为 DBA 组用
户,在 Windows 上是 ORADBA 组用户


普通数据库用户只能在数据库启动 (alter database open) 后身份验证并等
登录
也可以采用 OS 身份验证


例如 : create user maclean identified externally .




                    www.oracledatabase12g.com      www.oracledatabase12g.com
   www.oracledatabase12g.com
基础身份验证

数据库身份认证
例如:  create user maclean identified by oracle;
可以通过数据字典视图来查看用户信息
DBA_USERS describes all users of the database.
ALL_USERS Lists users visible to the current user, but does not
describe them
USER_TS_QUOTAS Describes tablespace quotas for users
 V$SESSION Lists session information for each current session,
includes user name
PROXY_USERS Describes users who can assume the identity of other
users
V$PWFILE_USERS lists users granted SYSDBA and SYSOPER
privileges as derived from the password file


                    www.oracledatabase12g.com     www.oracledatabase12g.com
   www.oracledatabase12g.com
访问控制

对象级别的安全(最小权限原则)
-通过对象权限
-通过角色


数据级别的安全 ( 细粒度访问控制 )
- 通过 RLS(Row Level Security)




                    www.oracledatabase12g.com   www.oracledatabase12g.com
   www.oracledatabase12g.com
对象级别的安全控制

将自身拥有对象的权限显示地授权给其他用户,包括查询和修改数据


举例来说:      CONN MACLEAN/ORACLE
          GRANT SELECT ON wallet to hanna;


角色 (roles) 是一组已被命名的权限,可以直接授权给用户或者其他角色 :


举例来说: CREATE ROLE developer;
         GRANT SELECT ON wallet1 to developer;
         GRANT INSERT ON wallet1 to developer;
         GRANT role1 to hanna;



                   www.oracledatabase12g.com   www.oracledatabase12g.com
  www.oracledatabase12g.com
对象级别的安全控制

内核函数 Kzpchkbu() 负责完成为给定用户检查某个对象上权限的任务。
该函数可能被多种路径调用,以检查对象上的必要权限。


大致的算法如下:
If   检查需要被授权的用户是否对象的拥有者
则 返回授权验证成功 ( 表示不需要做权限检查 )
Else 该对象权限是否被授予了 PUBLIC
        若是,则返回 授权验证成功
Else 检查该用户是否被显示地授予了该对象权限或角色
        若是,则返回 授权验证成功
Else 检查该用户是否被显示地授予了对应的系统权限
        若是,则返回 授权验证成功
否则 报错 , ORA_01031,ORA-00942
                      www.oracledatabase12g.com   www.oracledatabase12g.com
     www.oracledatabase12g.com
对象级别的安全控制

普通用户访问 SYS schema 下的对象?               ( 越来越困难! )


从 9i 开始,’ ANY’ 权限无法访问 SYS 用户对象
默认 O7_DICTIONARY_ACCESSIBILITY=false ,设置为 TRUE 可以让
’ ANY’ 权限访问 SYS 对象
否则普通用户必须显示地拥有 SYS 对象的权限。




                   www.oracledatabase12g.com   www.oracledatabase12g.com
  www.oracledatabase12g.com
对象级别的安全控制

常用数据字典视图,帮助了解对象和系统权限的信息:
- DBA_SYS_PRIVS describes system privileges granted to           users
and roles (USER_SYS_PRIVS for connected user).
  - SESSION_PRIVS lists the privileges that are currently available to
the user.
  - SESSION_ROLES lists the roles that are currently enabled to the
user.
  - DBA_TAB_PRIVS describes all object grants in the database.
(USER_TAB_PRIVS for connected user).




                   www.oracledatabase12g.com      www.oracledatabase12g.com
  www.oracledatabase12g.com
数据级别的安全 (RLS/VPD)

Virtual Private Database(VPD) 有时候也叫做 Fine Grained Access
Control (FGAC) ,亦即 Row Level Security (RLS) ,在 Oracle 8i 中被引
入; 由于该特性是基于实际的数据内容而非数据库对象,因此被叫做
RLS 。


仅在 discretionary access control (DAC) 满足的情况下 RLS 生效,例如
user1 尝试访问 user2 所拥有的存在 RLS policy 的表,前提是在 user2 的
表上有 SELECT 权限


其内部工作原理是 透明地将 SQL 语句修改成基于预定义准则的临时视
图。在运行时,谓词会被附加到原查询上以便过滤查询所能看到的数据




                   www.oracledatabase12g.com   www.oracledatabase12g.com
  www.oracledatabase12g.com
数据级别的安全 (RLS/VPD)

通过 Oracle 提供的标准 DBMS_RLS Package 的过程来将表 / 视图 / 同
义词等对象和策略关联起来


RLS 策略包含一个 PL/SQL 函数以返回谓词串,这个谓词串会被在语句被
执行前被加入到查询条件中
例如: : CONNECT scott/tiger
     create table t1 (c1 int);
     insert into t1 values (10);
     insert into t1 values (10);
     insert into t1 values (20);
     insert into t1 values (30);
     commit;


                   www.oracledatabase12g.com   www.oracledatabase12g.com
  www.oracledatabase12g.com
数据级别的安全 (RLS/VPD)

CREATE OR REPLACE FUNCTION func1 (schema_name
VARCHAR2,
       table_name VARCHAR2) RETURN VARCHAR2 IS
       BEGIN
         RETURN 'c1 = 10';
       END;
     /

SQL> EXEC DBMS_RLS.ADD_POLICY ('scott','t1','pol1','scott','func1');

PL/SQL procedure successfully completed.

SQL> select * from t1;

       C1
----------
       10
       10


                    www.oracledatabase12g.com   www.oracledatabase12g.com
   www.oracledatabase12g.com
数据级别的安全 (RLS/VPD)

内核函数 kzrtevw() 完成为存在 RLS policy 的表 / 视图 / 同义词创建临时视
图的工作

在语义解析阶段,从数据字典层 kkmfcblo() 调用 kzrtevw()

一个查询语句” select * from maclean” 在语义解析阶段被装换为
Select * from (select * from maclean where t1=10);
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  临时视图


kzrtevw() 生成的临时视图会再次被硬解析 hard parse




                   www.oracledatabase12g.com   www.oracledatabase12g.com
  www.oracledatabase12g.com
数据级别的安全 (RLS/VPD)

若存在参考完整性约束

例如一张启用了 RLS Policy 的子表上有外键约束, RLS 机制会检查相关
的父表上是否有 RLS Policy 以判断是否真的可以从父表上读取数据以验
证约束。这通过内核函数 kzrtppg() 完成,若无法从父表读取到数据,则
报错 ORA-28117 。


[oracle@vrh8 ~]$ oerr ora 28117
28117, 00000, "integrity constraint violated - parent record not found"
// *Cause: try to update/insert a child record with new foreign key
//      values, but the corresponding parent row is not visible
//      because of fine-grained security in the parent.
// *Action: make sure that the updated foreign key values must also
visible in the parent




                   www.oracledatabase12g.com       www.oracledatabase12g.com
  www.oracledatabase12g.com
数据级别的安全 (RLS/VPD)

SYS 对任何行级安全策略 (RLS) 均享有豁免权
可以通过系统权限 “ EXEMPT ACCESS POLICY” 让普通用户也对 RLS
Policy 豁免

RLS policies 相关的一些有用字典视图:


ALL_POLICIES describes the security policies on the synonyms, tables,
and views accessible to the current user.

DBA_POLICIES describes all security policies in the database.


USER_POLICIES describes the security policies on the synonyms,
tables, and views owned by the current user.




                   www.oracledatabase12g.com    www.oracledatabase12g.com
  www.oracledatabase12g.com
Audit 审计记录用户行为

在部署安全措施后仍有发生恶意数据库行为的可能性

审计和记录用户行为可以发现各种可疑的或伪装的恶意行为

有助于进一步加强安全措施




                  www.oracledatabase12g.com   www.oracledatabase12g.com
 www.oracledatabase12g.com
Audit 审计记录用户行为

Audit 审计的种类

强制审计:为每一次实例启动写出审计记录到 OS 文件, shutdown 以及
权限登录的记录存放在 $ORACLE_HOME/rdbms/audit 目录下 ( 注意定期
清理哦,亲! )

SYS 审计 : 记录 SYSDBA/SYSOPER 等权限用户的操作,审计记录存放
在 OS 文件, SYSLOG 中。


标准审计:记录用户针对数据库对象、语句、权限级别的行为。审计记录
可以存放在 OS 文件、 XML 文件或数据库中 (AUD$ 基表 )

•对象级别审计
•权限级别审计
•语句级别审计

细粒度控制:基于用户访问的数据记录用户行为。 审计记录存放在数据
库内 (FGA_LOG$) 或者 XML 文件中。

                  www.oracledatabase12g.com   www.oracledatabase12g.com
 www.oracledatabase12g.com
Audit 审计记录用户行为

示例审计文件 :

Audit file /s01/admin/G10R25/adump/g10r25_ora_3724_1.aud
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /s01/oracle/product/10.2.0.5/db_1
System name: Linux
Node name:        vrh8.oracle.com
Release:        2.6.32-200.13.1.el5uek
Version:       #1 SMP Wed Jul 27 21:02:33 EDT 2011
Machine:        x86_64
Instance name: G10R25
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 3724, image: oracle@vrh8.oracle.com (TNS V1-V3)

Sat Jul 7 02:29:41 2012
LENGTH : '160'
ACTION :[7] 'CONNECT'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/0'
STATUS:[1] '0'
DBID:[10] '2652277393'

Sat Jul 7 02:29:42 2012
LENGTH : '173'
ACTION :[19] 'ALTER DATABASE OPEN'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/0'
STATUS:[1] '0'
DBID:[10] '2652277393'

Sat Jul 7 02:29:46 2012
LENGTH : '172'
ACTION :[18] 'select * from dual'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/0'
STATUS:[1] '0'
DBID:[10] '2652277393'
                      www.oracledatabase12g.com                                 www.oracledatabase12g.com
     www.oracledatabase12g.com
Audit 审计记录用户行为

内核函数 Kzasydmp() 为强制的 SYSDBA/SYSOPER 审计写出审计记录
到 OS 文件、 SYSLOG 或者 XML 文件


在 windows 系统上,打印审计记录到 EventLog(DB_User, OS_Privilege,
Client_User, Client_Termninal, Status, SQL_Text)


在 Unix 平台上若设置了 AUDIT_SYSLOG_LEVEL ,审计记录发送给
syslog 这个后台服务

否则生成一个审计文件 <program_code>_<OS_processid>.aud




                  www.oracledatabase12g.com   www.oracledatabase12g.com
 www.oracledatabase12g.com
Audit 审计记录用户行为


对象级别的审计
例如: AUDIT SELECT ON MACLEAN.TEST;


语句级别的审计
例如: AUDIT CREATE TABLE BY MACLEAN;


权限级别的审计
例如: AUDIT SELECT ANY TABLE BY MACLEAN;




                  www.oracledatabase12g.com   www.oracledatabase12g.com
 www.oracledatabase12g.com
Audit 审计记录用户行为

部分标准审计选项:

AUDIT BY SESSION— 针对用户和会话
例如 :AUDIT SELECT ON MACLEAN.TAB BY SESSION;

AUDIT BY ACCESS— 针对每一个可审计的操作
例如: AUDIT SELECT ON MACLEAN.TAB BY ACCESS;

AUDIT WHENEVER SUCCESSFUL— 仅审计执行成功的操作
例如: AUDIT CONNECT WHENEVER SUCCESSFUL;

Audit WHENEVER NOT SUCCESSFUL— 仅审计执行失败的操作
例如: AUDIT CONNECT WHENEVER NOT SUCCESSFUL




                  www.oracledatabase12g.com   www.oracledatabase12g.com
 www.oracledatabase12g.com
Audit 审计记录用户行为

细粒度审计 Fine Grained Auditing (FGA)
FGA 策略通过 DBMS_FGA 包与表 / 视图 / 同义词关联起来

例如: begin
 DBMS_FGA.ADD_POLICY(object_schema => 'scott',
          object_name      => 'emp',
          policy_name     => 'mypolicy1',
          audit_condition => 'sal < 100',
          audit_column     => 'comm,sal',
          handler_schema => NULL,
          handler_module => NULL,
          enable        => TRUE,
          statement_types => 'INSERT, UPDATE',
          audit_trail   => DBMS_FGA.XML +
DBMS_FGA.EXTENDED,
          audit_column_opts => DBMS_FGA.ANY_COLUMNS);
end;



                   www.oracledatabase12g.com   www.oracledatabase12g.com
  www.oracledatabase12g.com
Audit 审计记录用户行为

标准审计:
audsucc()/audfail() 是审计的主要入口,针对成功 / 不成功的审计操作会进
一步调用 auddft()

例如 maclean 用户下的 test 表为成功操作审计
… -> opiexe() -> audsucc() -> auddft() -> audsel() -> audfro() …

auddft() 判断行为代码决定合适的审计路径

audsel() 调用 audfro() ,记录审计链上的信息

audfro() 首先设置已使用的对象权限, 进一步检查该对象相关的审计选
项,例如到底这个对象是 audit by access 还是 by session 。 By access
调用 audins() , By session 调用 audses()




                   www.oracledatabase12g.com      www.oracledatabase12g.com
  www.oracledatabase12g.com
Audit 审计记录用户行为

启动审计必要的 Init.ora 实例初始化参数
AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }.

AUDIT_SYS_OPERATIONS Oracle 9i 以后版本中通过设置该参数为
TURE 可以记录不限于 CONNECT,STARTUP,SHUTDOWN 的以
SYSDBA 或 SYSOPER 进行的操作。

AUDIT_FILE_DEST 指定审计目录 ( 默认为 $ORACLE_BASE/admin/
$SID/adump)


一些有用的字典视图:
DBA_AUDIT_POLICIES – Lists FGA policies in the database.
DBA_AUDIT_TRAIL – Lists all audit trail entries.
DBA_AUDIT_OBJECT - Lists audit trail records for all objects in the
database.
DBA_FGA_AUDIT_TRAIL - Lists all audit records for fine-grained
auditing.
DBA_COMMON_AUDIT_TRAIL - Lists all standard and fine-grained
audit trail entries, mandatory and SYS audit records written in XML
format.               www.oracledatabase12g.com    www.oracledatabase12g.com
   www.oracledatabase12g.com

More Related Content

What's hot

Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Zianed Hou
 
Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期yiditushe
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 zmaclean liu
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研lorisjand
 
了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinitionmaclean liu
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220Jinrong Ye
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
分区表基础知识培训
分区表基础知识培训分区表基础知识培训
分区表基础知识培训maclean liu
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410maclean liu
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
Mysql 高级优化之 逻辑处理
Mysql 高级优化之 逻辑处理Mysql 高级优化之 逻辑处理
Mysql 高级优化之 逻辑处理nigel889
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangmaclean liu
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法maclean liu
 
11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delay11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delaymaclean liu
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践guestf5121c
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocketpwesh
 

What's hot (20)

Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1
 
Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期
 
Oracle SGA 介紹
Oracle SGA 介紹Oracle SGA 介紹
Oracle SGA 介紹
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研
 
了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
分区表基础知识培训
分区表基础知识培训分区表基础知识培训
分区表基础知识培训
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
 
Zoo keeper
Zoo keeperZoo keeper
Zoo keeper
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
Mysql 高级优化之 逻辑处理
Mysql 高级优化之 逻辑处理Mysql 高级优化之 逻辑处理
Mysql 高级优化之 逻辑处理
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法
 
11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delay11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delay
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocket
 
Asm+aix
Asm+aixAsm+aix
Asm+aix
 
Refactoring 重构
Refactoring 重构Refactoring 重构
Refactoring 重构
 

Viewers also liked

【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321maclean liu
 
你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能maclean liu
 
了解Oracle rac brain split resolution
了解Oracle rac brain split resolution了解Oracle rac brain split resolution
了解Oracle rac brain split resolutionmaclean liu
 
11g新特性 在线实施补丁online patching
11g新特性 在线实施补丁online patching11g新特性 在线实施补丁online patching
11g新特性 在线实施补丁online patchingmaclean liu
 
了解Oracle critical patch update
了解Oracle critical patch update了解Oracle critical patch update
了解Oracle critical patch updatemaclean liu
 
Permen tahun2013 nomor81a_lampiran1
Permen tahun2013 nomor81a_lampiran1Permen tahun2013 nomor81a_lampiran1
Permen tahun2013 nomor81a_lampiran1Irma Muthiara Sari
 
контекстная реклама
контекстная рекламаконтекстная реклама
контекстная рекламаИлья Ялунин
 
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24maclean liu
 
New Zealand Franchising Confidence Index | January 2016
New Zealand Franchising Confidence Index | January 2016New Zealand Franchising Confidence Index | January 2016
New Zealand Franchising Confidence Index | January 2016Franchize Consultants
 
Asymmetric Volatility
Asymmetric VolatilityAsymmetric Volatility
Asymmetric VolatilityVito Turitto
 
04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaian
04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaian04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaian
04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaianIrma Muthiara Sari
 
Oracle prm dul, jvm and os
Oracle prm dul, jvm and osOracle prm dul, jvm and os
Oracle prm dul, jvm and osmaclean liu
 
04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaian
04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaian04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaian
04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaianIrma Muthiara Sari
 
Theme 3 part 2
Theme 3 part 2Theme 3 part 2
Theme 3 part 2jrizo87
 
Overwhelming Numbers
Overwhelming NumbersOverwhelming Numbers
Overwhelming Numbersredskelington
 

Viewers also liked (20)

【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
 
你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能
 
了解Oracle rac brain split resolution
了解Oracle rac brain split resolution了解Oracle rac brain split resolution
了解Oracle rac brain split resolution
 
11g新特性 在线实施补丁online patching
11g新特性 在线实施补丁online patching11g新特性 在线实施补丁online patching
11g新特性 在线实施补丁online patching
 
了解Oracle critical patch update
了解Oracle critical patch update了解Oracle critical patch update
了解Oracle critical patch update
 
Permen tahun2013 nomor81a_lampiran1
Permen tahun2013 nomor81a_lampiran1Permen tahun2013 nomor81a_lampiran1
Permen tahun2013 nomor81a_lampiran1
 
контекстная реклама
контекстная рекламаконтекстная реклама
контекстная реклама
 
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
 
Eigrp
EigrpEigrp
Eigrp
 
2
22
2
 
Ads
AdsAds
Ads
 
New Zealand Franchising Confidence Index | January 2016
New Zealand Franchising Confidence Index | January 2016New Zealand Franchising Confidence Index | January 2016
New Zealand Franchising Confidence Index | January 2016
 
Газар доорхи бүтээц
Газар доорхи бүтээцГазар доорхи бүтээц
Газар доорхи бүтээц
 
Emprender no es para todos - Semana ISW
Emprender no es para todos - Semana ISWEmprender no es para todos - Semana ISW
Emprender no es para todos - Semana ISW
 
Asymmetric Volatility
Asymmetric VolatilityAsymmetric Volatility
Asymmetric Volatility
 
04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaian
04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaian04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaian
04. b. salinan lampiran permendikbud no. 66 th 2013 tentang standar penilaian
 
Oracle prm dul, jvm and os
Oracle prm dul, jvm and osOracle prm dul, jvm and os
Oracle prm dul, jvm and os
 
04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaian
04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaian04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaian
04. a. salinan permendikbud no. 66 th 2013 ttg standar penilaian
 
Theme 3 part 2
Theme 3 part 2Theme 3 part 2
Theme 3 part 2
 
Overwhelming Numbers
Overwhelming NumbersOverwhelming Numbers
Overwhelming Numbers
 

Similar to Essential oracle security internal for dba

lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫建興 王
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程yiditushe
 
Oracle使用者安全設定
Oracle使用者安全設定Oracle使用者安全設定
Oracle使用者安全設定Chien Chung Shen
 
1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能WASecurity
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle securityted-xu
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作maclean liu
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步WASecurity
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptjames tong
 
第10章 权限管理
第10章 权限管理第10章 权限管理
第10章 权限管理zhang shuren
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析mysqlops
 
山頂洞人日記 - 回歸到最純樸的開發
山頂洞人日記 -  回歸到最純樸的開發山頂洞人日記 -  回歸到最純樸的開發
山頂洞人日記 - 回歸到最純樸的開發koji lin
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review郁萍 王
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性liu sheng
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
Basic oracle for developer&beginner
Basic oracle for developer&beginnerBasic oracle for developer&beginner
Basic oracle for developer&beginnermaclean liu
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践xcq
 
数据访问层开发实践
数据访问层开发实践数据访问层开发实践
数据访问层开发实践xcq
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页liu sheng
 

Similar to Essential oracle security internal for dba (20)

lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
Oracle使用者安全設定
Oracle使用者安全設定Oracle使用者安全設定
Oracle使用者安全設定
 
1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle security
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.ppt
 
第10章 权限管理
第10章 权限管理第10章 权限管理
第10章 权限管理
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析
 
山頂洞人日記 - 回歸到最純樸的開發
山頂洞人日記 -  回歸到最純樸的開發山頂洞人日記 -  回歸到最純樸的開發
山頂洞人日記 - 回歸到最純樸的開發
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
Basic oracle for developer&beginner
Basic oracle for developer&beginnerBasic oracle for developer&beginner
Basic oracle for developer&beginner
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
 
数据访问层开发实践
数据访问层开发实践数据访问层开发实践
数据访问层开发实践
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
 

More from maclean liu

Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルOracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルmaclean liu
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略maclean liu
 
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案maclean liu
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例maclean liu
 
PRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health CheckPRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health Checkmaclean liu
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案maclean liu
 
Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响maclean liu
 
【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案maclean liu
 
Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2maclean liu
 
Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2maclean liu
 
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1maclean liu
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?maclean liu
 
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践maclean liu
 
Prm dul is an oracle database recovery tool database
Prm dul is an oracle database recovery tool   databasePrm dul is an oracle database recovery tool   database
Prm dul is an oracle database recovery tool databasemaclean liu
 
Oracle dba必备技能 使用os watcher工具监控系统性能负载
Oracle dba必备技能   使用os watcher工具监控系统性能负载Oracle dba必备技能   使用os watcher工具监控系统性能负载
Oracle dba必备技能 使用os watcher工具监控系统性能负载maclean liu
 
Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3maclean liu
 
Oracle prm安装说明
Oracle prm安装说明Oracle prm安装说明
Oracle prm安装说明maclean liu
 
诗檀软件 Oracle数据块损坏知识
诗檀软件 Oracle数据块损坏知识诗檀软件 Oracle数据块损坏知识
诗檀软件 Oracle数据块损坏知识maclean liu
 

More from maclean liu (20)

Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルOracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
 
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
 
PRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health CheckPRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health Check
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
 
Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响
 
【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案
 
Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2
 
Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2
 
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?
 
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
 
Prm dul is an oracle database recovery tool database
Prm dul is an oracle database recovery tool   databasePrm dul is an oracle database recovery tool   database
Prm dul is an oracle database recovery tool database
 
Oracle dba必备技能 使用os watcher工具监控系统性能负载
Oracle dba必备技能   使用os watcher工具监控系统性能负载Oracle dba必备技能   使用os watcher工具监控系统性能负载
Oracle dba必备技能 使用os watcher工具监控系统性能负载
 
Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3
 
Oracle prm安装说明
Oracle prm安装说明Oracle prm安装说明
Oracle prm安装说明
 
诗檀软件 Oracle数据块损坏知识
诗檀软件 Oracle数据块损坏知识诗檀软件 Oracle数据块损坏知识
诗檀软件 Oracle数据块损坏知识
 

Essential oracle security internal for dba

  • 1. Essential Oracle Security Internal For DBA(V1.0) 刘相兵 (Maclean Liu) liu.maclean@gmail.com www.oracledatabase12g.com
  • 2. 介绍 允许或禁止 Oracle DB 中的用户行为,包括其中的对象 通过以下实现: 登录身份验证 (Authentication) ,连接到数据库 访问控制,访问模式对象和数据 (access control) 审计,记录用户行为 (audit) www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 3. 基础身份验证 数据库管理员 ( 以 SYSDBA/SYSOPER) 身份在 DB 之外被身份验证 操作系统身份验证 密码文件身份验证 举例来说 sqlplus “/ as sysdba” 登录, OS 用户在 Unix 上为 DBA 组用 户,在 Windows 上是 ORADBA 组用户 普通数据库用户只能在数据库启动 (alter database open) 后身份验证并等 登录 也可以采用 OS 身份验证 例如 : create user maclean identified externally . www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 4. 基础身份验证 数据库身份认证 例如:  create user maclean identified by oracle; 可以通过数据字典视图来查看用户信息 DBA_USERS describes all users of the database. ALL_USERS Lists users visible to the current user, but does not describe them USER_TS_QUOTAS Describes tablespace quotas for users V$SESSION Lists session information for each current session, includes user name PROXY_USERS Describes users who can assume the identity of other users V$PWFILE_USERS lists users granted SYSDBA and SYSOPER privileges as derived from the password file www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 5. 访问控制 对象级别的安全(最小权限原则) -通过对象权限 -通过角色 数据级别的安全 ( 细粒度访问控制 ) - 通过 RLS(Row Level Security) www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 6. 对象级别的安全控制 将自身拥有对象的权限显示地授权给其他用户,包括查询和修改数据 举例来说: CONN MACLEAN/ORACLE GRANT SELECT ON wallet to hanna; 角色 (roles) 是一组已被命名的权限,可以直接授权给用户或者其他角色 : 举例来说: CREATE ROLE developer; GRANT SELECT ON wallet1 to developer; GRANT INSERT ON wallet1 to developer; GRANT role1 to hanna; www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 7. 对象级别的安全控制 内核函数 Kzpchkbu() 负责完成为给定用户检查某个对象上权限的任务。 该函数可能被多种路径调用,以检查对象上的必要权限。 大致的算法如下: If 检查需要被授权的用户是否对象的拥有者 则 返回授权验证成功 ( 表示不需要做权限检查 ) Else 该对象权限是否被授予了 PUBLIC 若是,则返回 授权验证成功 Else 检查该用户是否被显示地授予了该对象权限或角色 若是,则返回 授权验证成功 Else 检查该用户是否被显示地授予了对应的系统权限 若是,则返回 授权验证成功 否则 报错 , ORA_01031,ORA-00942 www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 8. 对象级别的安全控制 普通用户访问 SYS schema 下的对象? ( 越来越困难! ) 从 9i 开始,’ ANY’ 权限无法访问 SYS 用户对象 默认 O7_DICTIONARY_ACCESSIBILITY=false ,设置为 TRUE 可以让 ’ ANY’ 权限访问 SYS 对象 否则普通用户必须显示地拥有 SYS 对象的权限。 www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 9. 对象级别的安全控制 常用数据字典视图,帮助了解对象和系统权限的信息: - DBA_SYS_PRIVS describes system privileges granted to users and roles (USER_SYS_PRIVS for connected user). - SESSION_PRIVS lists the privileges that are currently available to the user. - SESSION_ROLES lists the roles that are currently enabled to the user. - DBA_TAB_PRIVS describes all object grants in the database. (USER_TAB_PRIVS for connected user). www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 10. 数据级别的安全 (RLS/VPD) Virtual Private Database(VPD) 有时候也叫做 Fine Grained Access Control (FGAC) ,亦即 Row Level Security (RLS) ,在 Oracle 8i 中被引 入; 由于该特性是基于实际的数据内容而非数据库对象,因此被叫做 RLS 。 仅在 discretionary access control (DAC) 满足的情况下 RLS 生效,例如 user1 尝试访问 user2 所拥有的存在 RLS policy 的表,前提是在 user2 的 表上有 SELECT 权限 其内部工作原理是 透明地将 SQL 语句修改成基于预定义准则的临时视 图。在运行时,谓词会被附加到原查询上以便过滤查询所能看到的数据 www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 11. 数据级别的安全 (RLS/VPD) 通过 Oracle 提供的标准 DBMS_RLS Package 的过程来将表 / 视图 / 同 义词等对象和策略关联起来 RLS 策略包含一个 PL/SQL 函数以返回谓词串,这个谓词串会被在语句被 执行前被加入到查询条件中 例如: : CONNECT scott/tiger create table t1 (c1 int); insert into t1 values (10); insert into t1 values (10); insert into t1 values (20); insert into t1 values (30); commit; www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 12. 数据级别的安全 (RLS/VPD) CREATE OR REPLACE FUNCTION func1 (schema_name VARCHAR2, table_name VARCHAR2) RETURN VARCHAR2 IS BEGIN RETURN 'c1 = 10'; END; / SQL> EXEC DBMS_RLS.ADD_POLICY ('scott','t1','pol1','scott','func1'); PL/SQL procedure successfully completed. SQL> select * from t1; C1 ---------- 10 10 www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 13. 数据级别的安全 (RLS/VPD) 内核函数 kzrtevw() 完成为存在 RLS policy 的表 / 视图 / 同义词创建临时视 图的工作 在语义解析阶段,从数据字典层 kkmfcblo() 调用 kzrtevw() 一个查询语句” select * from maclean” 在语义解析阶段被装换为 Select * from (select * from maclean where t1=10); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  临时视图 kzrtevw() 生成的临时视图会再次被硬解析 hard parse www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 14. 数据级别的安全 (RLS/VPD) 若存在参考完整性约束 例如一张启用了 RLS Policy 的子表上有外键约束, RLS 机制会检查相关 的父表上是否有 RLS Policy 以判断是否真的可以从父表上读取数据以验 证约束。这通过内核函数 kzrtppg() 完成,若无法从父表读取到数据,则 报错 ORA-28117 。 [oracle@vrh8 ~]$ oerr ora 28117 28117, 00000, "integrity constraint violated - parent record not found" // *Cause: try to update/insert a child record with new foreign key // values, but the corresponding parent row is not visible // because of fine-grained security in the parent. // *Action: make sure that the updated foreign key values must also visible in the parent www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 15. 数据级别的安全 (RLS/VPD) SYS 对任何行级安全策略 (RLS) 均享有豁免权 可以通过系统权限 “ EXEMPT ACCESS POLICY” 让普通用户也对 RLS Policy 豁免 RLS policies 相关的一些有用字典视图: ALL_POLICIES describes the security policies on the synonyms, tables, and views accessible to the current user. DBA_POLICIES describes all security policies in the database. USER_POLICIES describes the security policies on the synonyms, tables, and views owned by the current user. www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 17. Audit 审计记录用户行为 Audit 审计的种类 强制审计:为每一次实例启动写出审计记录到 OS 文件, shutdown 以及 权限登录的记录存放在 $ORACLE_HOME/rdbms/audit 目录下 ( 注意定期 清理哦,亲! ) SYS 审计 : 记录 SYSDBA/SYSOPER 等权限用户的操作,审计记录存放 在 OS 文件, SYSLOG 中。 标准审计:记录用户针对数据库对象、语句、权限级别的行为。审计记录 可以存放在 OS 文件、 XML 文件或数据库中 (AUD$ 基表 ) •对象级别审计 •权限级别审计 •语句级别审计 细粒度控制:基于用户访问的数据记录用户行为。 审计记录存放在数据 库内 (FGA_LOG$) 或者 XML 文件中。 www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 18. Audit 审计记录用户行为 示例审计文件 : Audit file /s01/admin/G10R25/adump/g10r25_ora_3724_1.aud Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORACLE_HOME = /s01/oracle/product/10.2.0.5/db_1 System name: Linux Node name: vrh8.oracle.com Release: 2.6.32-200.13.1.el5uek Version: #1 SMP Wed Jul 27 21:02:33 EDT 2011 Machine: x86_64 Instance name: G10R25 Redo thread mounted by this instance: 1 Oracle process number: 15 Unix process pid: 3724, image: oracle@vrh8.oracle.com (TNS V1-V3) Sat Jul 7 02:29:41 2012 LENGTH : '160' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/0' STATUS:[1] '0' DBID:[10] '2652277393' Sat Jul 7 02:29:42 2012 LENGTH : '173' ACTION :[19] 'ALTER DATABASE OPEN' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/0' STATUS:[1] '0' DBID:[10] '2652277393' Sat Jul 7 02:29:46 2012 LENGTH : '172' ACTION :[18] 'select * from dual' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/0' STATUS:[1] '0' DBID:[10] '2652277393' www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 19. Audit 审计记录用户行为 内核函数 Kzasydmp() 为强制的 SYSDBA/SYSOPER 审计写出审计记录 到 OS 文件、 SYSLOG 或者 XML 文件 在 windows 系统上,打印审计记录到 EventLog(DB_User, OS_Privilege, Client_User, Client_Termninal, Status, SQL_Text) 在 Unix 平台上若设置了 AUDIT_SYSLOG_LEVEL ,审计记录发送给 syslog 这个后台服务 否则生成一个审计文件 <program_code>_<OS_processid>.aud www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 20. Audit 审计记录用户行为 对象级别的审计 例如: AUDIT SELECT ON MACLEAN.TEST; 语句级别的审计 例如: AUDIT CREATE TABLE BY MACLEAN; 权限级别的审计 例如: AUDIT SELECT ANY TABLE BY MACLEAN; www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 21. Audit 审计记录用户行为 部分标准审计选项: AUDIT BY SESSION— 针对用户和会话 例如 :AUDIT SELECT ON MACLEAN.TAB BY SESSION; AUDIT BY ACCESS— 针对每一个可审计的操作 例如: AUDIT SELECT ON MACLEAN.TAB BY ACCESS; AUDIT WHENEVER SUCCESSFUL— 仅审计执行成功的操作 例如: AUDIT CONNECT WHENEVER SUCCESSFUL; Audit WHENEVER NOT SUCCESSFUL— 仅审计执行失败的操作 例如: AUDIT CONNECT WHENEVER NOT SUCCESSFUL www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 22. Audit 审计记录用户行为 细粒度审计 Fine Grained Auditing (FGA) FGA 策略通过 DBMS_FGA 包与表 / 视图 / 同义词关联起来 例如: begin DBMS_FGA.ADD_POLICY(object_schema => 'scott', object_name => 'emp', policy_name => 'mypolicy1', audit_condition => 'sal < 100', audit_column => 'comm,sal', handler_schema => NULL, handler_module => NULL, enable => TRUE, statement_types => 'INSERT, UPDATE', audit_trail => DBMS_FGA.XML + DBMS_FGA.EXTENDED, audit_column_opts => DBMS_FGA.ANY_COLUMNS); end; www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 23. Audit 审计记录用户行为 标准审计: audsucc()/audfail() 是审计的主要入口,针对成功 / 不成功的审计操作会进 一步调用 auddft() 例如 maclean 用户下的 test 表为成功操作审计 … -> opiexe() -> audsucc() -> auddft() -> audsel() -> audfro() … auddft() 判断行为代码决定合适的审计路径 audsel() 调用 audfro() ,记录审计链上的信息 audfro() 首先设置已使用的对象权限, 进一步检查该对象相关的审计选 项,例如到底这个对象是 audit by access 还是 by session 。 By access 调用 audins() , By session 调用 audses() www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com
  • 24. Audit 审计记录用户行为 启动审计必要的 Init.ora 实例初始化参数 AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }. AUDIT_SYS_OPERATIONS Oracle 9i 以后版本中通过设置该参数为 TURE 可以记录不限于 CONNECT,STARTUP,SHUTDOWN 的以 SYSDBA 或 SYSOPER 进行的操作。 AUDIT_FILE_DEST 指定审计目录 ( 默认为 $ORACLE_BASE/admin/ $SID/adump) 一些有用的字典视图: DBA_AUDIT_POLICIES – Lists FGA policies in the database. DBA_AUDIT_TRAIL – Lists all audit trail entries. DBA_AUDIT_OBJECT - Lists audit trail records for all objects in the database. DBA_FGA_AUDIT_TRAIL - Lists all audit records for fine-grained auditing. DBA_COMMON_AUDIT_TRAIL - Lists all standard and fine-grained audit trail entries, mandatory and SYS audit records written in XML format. www.oracledatabase12g.com www.oracledatabase12g.com www.oracledatabase12g.com

Editor's Notes

  1. SQL&gt; create user maclean_priv identified by oracle; User created. SQL&gt; grant connect ,select any table to maclean_priv; Grant succeeded. SQL&gt; conn maclean_priv/oracle Connected. SQL&gt; select count(*) from sys.obj$; select count(*) from sys.obj$ * ERROR at line 1: ORA-00942: table or view does not exist SQL&gt; alter system set O7_DICTIONARY_ACCESSIBILITY=TRUE scope=spfile; System altered. Reboot instance SQL&gt; conn maclean_priv/oracle Connected. SQL&gt; select count(*) from sys.obj$; COUNT(*) ---------- 52140
  2. SQL&gt; alter session set events &apos;10046 trace name context forever,level 8&apos;; Session altered. SQL&gt; SQL&gt; alter system flush shared_pool; System altered. SQL&gt; / System altered. SQL&gt; select * from t1; C1 ---------- 10 10 10046 trace: select * from t1 begin :con := FUNC1(:sn, :on); end; 10053 trace: sql_id=cvta8kmh9uc3z. Current SQL statement for this session: select * from scott.t1 ============ Plan Table ============ -------------------------------------+-----------------------------------+ | Id | Operation | Name | Rows | Bytes | Cost | Time | -------------------------------------+-----------------------------------+ | 0 | SELECT STATEMENT | | | | 3 | | | 1 | TABLE ACCESS FULL | T1 | 1 | 2 | 3 | 00:00:01 | -------------------------------------+-----------------------------------+ Predicate Information: ---------------------- 1 - filter(&amp;quot;C1&amp;quot;=10)
  3. o Errors in alert.log file:     ORA-07445: exception encountered: core dump [] [] [] [] [] [] o INSERT or UPDATE statements uses Foreign Key/Primary Key enforcement. o The FK / PK enforcement is protected by OLS policies. o kzrtppg exists in the call stack printed in the trace file indicating that a Foreign Key Table is accessing a Parent table with an OLS Policy on it.  A call stack example is: kzrtppg kglsscn kqlsscn kkmfcblo kkmpfcbk qcsprfro qcspafq qcspqb kkmdrv opiSem opiprs kksald Cause The Foreign Key/Primary Key reinforcement is protected by an OLS Policy on the Primary Key column that prevents the Foreign Key column from reading the Primary Key column. @ It can be caused by bug:4620832 Solution To implement the solution, please execute the following steps: 1.Enable OLS so that the FKs can select from the primary key. 2.Do not use OLS @ 3. Look for a solution of bug:4620832 .  A workaround for this bug is to pin the insert or update cursor @ using dbms_shared_pool.keep
  4. [oracle@vrh8 adump]$ cat g10r25_ora_3630_1.aud Audit file /s01/admin/G10R25/adump/g10r25_ora_3630_1.aud Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORACLE_HOME = /s01/oracle/product/10.2.0.5/db_1 System name: Linux Node name: vrh8.oracle.com Release: 2.6.32-200.13.1.el5uek Version: #1 SMP Wed Jul 27 21:02:33 EDT 2011 Machine: x86_64 Instance name: G10R25 Redo thread mounted by this instance: 1 Oracle process number: 18 Unix process pid: 3630, image: oracle@vrh8.oracle.com (TNS V1-V3) Sat Jul 7 02:26:52 2012 LENGTH : &apos;160&apos; ACTION :[7] &apos;CONNECT&apos; DATABASE USER:[1] &apos;/&apos; PRIVILEGE :[6] &apos;SYSDBA&apos; CLIENT USER:[6] &apos;oracle&apos; CLIENT TERMINAL:[5] &apos;pts/0&apos; STATUS:[1] &apos;0&apos; DBID:[10] &apos;2652277393&apos;
  5.   Audit cleanup is implicit in audsucc, but audsucc is never called.
  6. 数据库中由 SYS 用户或其他管理员用户所作的操作均可以被审计且记录到由 root 用户拥有的系统级日志中。这样就可以避免有人使用 Oracle 的 OS 账户修改普通审计日志删除相关操作信息。启用 (AUDIT_TRAIL=OS) 在 Oracle 审计目录中记录日志或启用 ( AUDIT_TRAIL=DB )在数据库中记录审计信息都是不妥当的,显然 DBA 总是可以修改它们。通过 UNIX 系统级的日志组件来进行审计对防止黑客 侵入和“内鬼“捣乱都很有效。 结合 UNIX 中的 SYSLOG 组件记录审计信息是 Oracle 10g 的一个新特性。该组件包括一个守护进程 (daemon) 名叫 syslogd (你可以通过 man syslogd 查询其相关手册),该进程用以接受由应用程序调用 syslog 的 C 函数库所发送的日志信息。 Syslogd 服务 (service) 的配置文 件一般是 /etc/syslog.conf ,日志信息一般被记录在 /var/log 或 /var/adm 视乎不同的 UNIX 发行版本。日志文件名由相关组件 名,重要性和级别组成。在 /etc/syslog.conf 每条记录为特定的组件与重要性指定文件名。在该配置文件中加入记录: user.notice  /var/log/oracle_dbms, 并使 syslogd 进程重启,接下来修改 Oracle 参数 AUDIT_SYSLOG_LEVEL=user.notice ,则相关的审计记录将出现在文件 /var/log/oracle_dbms 中。 在 UNIX 系统上,以 SYSDBA 或 SYSOPER 权限进行的 CONNECT,STARTUP 与 SHUTDOWN 操作均会被无条件地记录 到 $ORACLE_HOME/rdbms/audit 或 AUDIT_FILE_DEST 指定的目录中,并使用扩展名为 .aud 。 Oracle 9i 以后版本中通过设置 AUDIT_SYS_OPERATIONS=TURE 可以记录不限于 CONNECT,STARTUP,SHUTDOWN 的以 SYSDBA 或 SYSOPER 进行的操作。