oracle 12配置安全与更新,Oracle 12c 数据库安全核心技术讨论

01fac6460a22031b8af8da5848698a70.png

Oracle AdvancedSecurity新功能 =>Oracle Data Redaction

Oracle Data Redaction

对应用户权限的实时访问控制

根据用户的权限以及客户端信息,Redaction实时数据

修正应用代码代表在不必要的数据库中完成列访问的控制

根据客服中心以及技术支持的职责不同,对访问客户信息进行控制,以及控制表示对应PCIDSS的信用卡编号、控制应用开发者的直接访问等

fc7f6b5d3dfa3476f7f518a37948e236.png

受支持的Redaction的种类

根据用途定义数据的参考范围

7ca85daf4c98eb487b98a1ef947d8225.png

Oracle Database的访问控制的特徴

Data Redaction

Virtual Private Database

Database Vault

功能概要

列的访问控制 &Redaction

行・列的访问控制

表的访问控制

特权用户管理

必要许可证

Advanced Security Option

Enterprise Edition

Database Vault Option

版本

12c~

8i~(列在10gR1)

10gR2~

对象访问

列(SELECT)

列・行(DML)

对象・SQL命令

説明

根据表中定义的Redaction对策的条件,不在列中展示,或者Redaction到任意值

根据表中定义的VPD对策的条件,自动追加WHERE语句,不表示出行。

这时还可以将特定的列表示为NULL

使用Realm、规则、命令规则等各种要素,访问对象(表、视图以及PL/SQL等),可以控制,并强制访问AQL命令自身的执行

特权用户

对策不适用

对策不适用

对任何用户都适用对策

设定

DBMS_REDACTpackage

或者、Oracle Enterprise Manager

DBMS_RLSpackage

或者、Oracle Enterprise Manager

DVSYS.DBMS_MACADMpackage

或者、Oracle Enterprise Manager

与Oracle Data Masking的差异

Oracle Data Masking

Oracle Data Redaction

安装方法

Oracle Enterprise Manager

DBMS_REDACTpackage

或者、Oracle Enterprise Manager

目的

直接对表masking,正式制成相近的测试数据

根据用户权限不同Redaction表以及视图的访问控制

执行时机

online

制成表、数据库的拷贝后,执行masking

online

实时理解查询结果

执行mask处理

存储数据的影响

永久变更数据

没有影响

Oracle Data Redaction的架构

对于表以及视图的Redaction对策,通过DBMS_REDACT procedure进行定义

对象中可以做到的列为CHAR/VARCHAR2、 NUMBER、 DATE、 BLOB/CLOB型

根据Redaction对策的条件将列Redaction到任意值

500d0a3c6cf2ef5fafc9b28930e40f1d.png

Redaction对策的制成

DBMS_REDACT.ADD_POLICY procedure

DBMS_REDACT.ADD_POLICY

object_schema

应用Redaction对策的schema名

object_name

应用Redaction对策的表或者视图名

policy_name

想制成的Redaction对策名

column_name

应用Redaction对策的列名

※想指定多个的话,请另外追加DBMS_REDACT.ADD_POLICY

function_type

DBMS_REDACT.FULL

DBMS_REDACT.RANDOMDBMS_REDACT.PARTIAL

DBMS_REDACT.REGEXP

expression

基于SYS_CONTEXT的值,定义Boolean型的条件式。

仅限条件的结果值为“True”时可以执行Redaction

function_parameters

使用DBMS_REDACT.PARTIAL时数据的IN与OUT的定义

regexp…….

function_type为DBMS_REDACT.REGEXP时的选项群

Expression(条件式)的制成方法

DB用户名为SCOTT的情况

SYS_CONTEXT(‘USERENV’,’SESSION_USER’) = ‘SCOTT’

IP地址为NULL的情况

SYS_CONTEXT(’SERENV’,’IP_ADRESS’)  IS NULL

客户端信息中不包含MGR的用户名的情况

SYS_CONTEXT(’USERENV’, CLIENT_IDENTIFIER’) not like ‘MGR%’

用户没有MGR 角色的情况

SYS_CONTEXT(‘SYS_SESSION_ROLES’,’MGR’) = FALSE

Full Redaction (full・Redaction)

除HR用户之外在访问EMPLOYEES表的SALARY列时执行Redaction

BEGIN

DBMS_REDACT.ADD_POLICY(

object_schema  => ‘HR',

object_name  => ‘EMPLOYEES',

policy_name  => ‘EMPLOYEE _POLICY_SAL’,

expression  => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') != ‘’HR''',

column_name  => ‘SALARY',

function_type  => DBMS_REDACT.FULL);

END;

执行结果

SELECT SALARY FROM EMPOYEES;

SALARY

--------------

0

根据数据型,用固定值来执行Redaction以下为初始值。可以变更为任意值

文字列: 单一空间

数值: 零(0)

日期: 01-JAN-01

LOB: [redacted]

Random Redaction(随机・Redaction)

除HR用户之外在访问EMPLOYEES表的SALARY列时执行Redaction

BEGIN

DBMS_REDACT.ADD_POLICY(

object_schema=> ‘HR',

object_name=> ‘EMPLOYEES',

policy_name=> ‘EMPLOYEE _ POLICY_EMPID’,

expression=> 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') != ‘’HR''',

column_name=> ‘EMPLOYEE_ID ',

function_type=> DBMS_REDACT.RANDOM);

END;

执行结果

SELECT EMPLOYEE_ID FROM EMPOYEES;

EMPLOYEE_ID

-----------------------

167

根据不同数据型,根据各自的形式来Redaction

文字列: 随机文字

数值: 随机数值

日期: 随机日期

LOB: 无法使用

Partial Redaction (部分Redaction)

通过SQL*PLUS访问EMPLOYEES表的PHONE_NUMBER列时使其Redaction

BEGIN

DBMS_REDACT.ADD_POLICY (

object_schema=> ‘HR',

object_name => ‘EMPLOYEE ',

policy_name => ‘EMPLOYEE _ POLICY_PHONE',

expression       => 'UPPER(SYS_CONTEXT(''USERENV'',''MODULE'')) like ''%SQL*PLUS%''',

column_name => ' PHONE_NUMBER ',

function_type => DBMS_REDACT.PARTIAL,

function_parameters => ‘VVVFVVVFVVVV,VVV-VVV-VVVV,*,1,6 ');

END;

执行结果

SELECT PHONE_NUMBER FROM EMPOYEES;

PHONE_NUMBER

----------------------------

***-***-8080

根据数据型以及各自的不同形式来Redaction

文字列: Redaction为一部分任意字符串

数值: 将一部分Redaction为任意值

日期: 将一份Redaction为任意日期

LOB : 无法使用

Function_parameters的设定方法

3528 3589 1231 0001=》****-****-****-0001

部分Redaction字符串的情况

function_parameters => ‘VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV,*,1,12’,

– Input format  –> 定义现在的格式。V是Redaction可能、F为固定格式

– Output format –> Redaction后的格式定义。 V为可以Redaction hyphen等固定化的字符

-Mask Character  –> 表示Redaction结果的字符

— Starting digit position –> Redaction的开始位置

– Ending digit position –> Redaction终止位置。Input中包含F的话无法计数

部分Redaction数字的情况

0123456789 =》9999456789

function_parameters => ‘9,1,4’

-Mask Character  –> 表示Redaction结果的字符

— Starting digit position –> Redaction的开始位置

– Ending digit position –> Redaction终止位置。Input中包含F的话无法计数

Regular Expression-based Redaction(正式表现Redaction)

BEGIN

DBMS_REDACT.ADD_POLICY(

object_schema=> ‘HR',

object_name => ‘'EMPLOYEES',

policy_name => ‘'EMPLOYEE _POLICY_REG',

expression => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ‘HR''',

column_name => ‘'PHONE_NUMBER',

function_type => DBMS_REDACT.REGEXP,

regexp_pattern => '([0-3][0-3][0-3])',

regexp_replace_string=> ‘***',

regexp_position => 1,

regexp_occurrence => DBMS_REDACT.RE_ALL,

regexp_match_parameter => 'i');

END;

执行结果

SELECT PHONE_NUMBER FROM EMPOYEES

PHONE_NUMBER

------------------------

650.###.5234

650.124.###4

EMPLOYEES表的PHONE_NUMBER列的值中如果存在0-3,3行连续数字的话,就会对那个值进行Redaction

正则表现的指定方法

仅仅Redaction特定数值的情况

603.123.6666=》603.###.6666

– regexp_pattern    => ‘([0-3][0-3][0-3])’

定义合适数据的搜索模式。意味着0-3的数字是连续排列的

– regexp_replace_string     => ‘#’

定义适合情况的Redaction字符

– regexp_position  => 1

指定搜索开始位置

– regexp_occurrence    => 0

Redaction次数。如果是0的话就将适合的部分全部转换

– regexp_match_parameter    => ‘i‘

指定合适的方法。比如i可以识别大小写

Redaction对策的列追加

DBMS_REDACT.ALTER_POLICY procedure

DBMS_REDACT.ADD_POLICY

object_schema

Redaction对策中追加的schema名

object_name

追加Redaction对策的表或者视图名

policy_name

追加的Redaction对策名

action

DBMS_REDACT.ADD_COLUMN

column_name

追加Redaction对策的列名

function_type

DBMS_REDACT.FULL

DBMS_REDACT.RANDOMDBMS_REDACT.PARTIAL

DBMS_REDACT.REGEXP

function_parameters

所有DBMS_REDACT.PARTIAL时,数据的IN与OUT的定义

regexp…….

function_type DBMS_REDACT.REGEXP的情况的选项群

※条件为使用通过DBMS_REDACT.ADD_POLICY制成的项目

追加Redaction对策列

在EMPLOYEES表的EMPLOYEE_ID列中制成Redaction对策

BEGIN

DBMS_REDACT.ADD_POLICY(

object_schema =>'HR ',

object_name =>'EMPLOYEES',

policy_name =>'EMPLOYEE _POLICY_EMPID',

expression =>'SYS_CONTEXT(''USERENV'',''SESSION_USER'') !=''HR''',

column_name => 'EMPLOYEE_ID',

function_type => DBMS_REDACT.RANDOM);

END;

PL/SQL procedure正常完成。

追加PHONE_NUMBER列

BEGIN

DBMS_REDACT.ALTER_POLICY (

object_schema =>'HR ',

object_name =>'EMPLOYEES',

policy_name =>'EMPLOYEE _POLICY_EMPID',

action => DBMS_REDACT.ADD_COLUMN,

column_name => 'PHONE_NUMBER',

function_type => DBMS_REDACT.PARTIAL,

function_parameters => 'VVVFVVVFVVVV,VVV-VVV-VVVV,*,1,6');

END;

PL/SQL procedure正常完成。

删除Redaction对策

DBMS_REDACT.DROP_POLICY procedure

DBMS_REDACT.DROP_POLICY

object_schema

删除Redaction对策的schema名

object_name

删除Redaction对策的表、或者视图名

policy_name

想删除的Redaction对策名

BEGIN

DBMS_REDACT.DROP_POLICY (

object_schema  => 'HR',

object_name    => 'EMPLOYEES',

policy_name    => 'EMPLOYEE _POLICY_SAL');

END;

PL/SQL procedure正常完成。

Oracle Data Redaction的限制

仅限表中可以定义的一个Redaction对策

表中设定了Redaction对策的话,就会对那个表派生的视图进行Redaction

对以下的数据库的操作不执行Redaction

Backup, Restore

Export, Import

Upgrade, Patch

Dataguard, Replication

拥有SYSDBA权限的用户不会被Redaction

拥有系统权限 EXEMPT REDACTION POLICY的用户不会被Redaction

制成物化视图,刷新时不会被Redaction

前提是适当管理数据库的权限

想控制SYSDBA的强制访问的话需要通过同时使用Oracle Database Vault来实现

Oracle Data Redaction的负载

验证环境

纯粹作为数据库的过载的处理时间=> Elapsed Time

作为应用的总计过载所花费的处理时间=>响应时间

0fac51afb7b3db81f8fe945800e98e38.png

Redaction的种类差异

70de96a2d327d336e2f18a279cdd359a.png

Redaction的对象列数造成的差异

4a0b3df52b14e04b18992c6214d1d17b.png

实际应用情况

通过连接的用户所拥有的角色来控制,不需要对应用进行修改,通过

expression => ‘SYS_CONTEXT(’‘SYS_SESSION_ROLES’‘,’‘MGR’‘) = ’‘FALSE’‘‘来控制

数据库审计新功能Unified Auditing

传统的数据库审计功能的课题audit_trail架构

需要通过Audit命令来进行细致设置

无法获得指定的会话信息中限制的日志

担心由于Audit对性能造成的影响

由于数据库的功能以及utility输出地址也不同

不仅是传统的AUDIT功能扩展,还需要

“使用便利性”&”高速”新架构

Unified Auditing简答&高速, 新设计的数据库审计功能

48bc06f1c249ac2244c8cd4b8d2b5e68.png

与传统的审计功能的比较

传统

Unified Auditing(12c)

1.审计的定义

用每个审计对象进行定义

用对策定义

可以使用一个对策中审计DB中的所有内容

2.审计条件

无法指定

可以指定条件与以及审计频率

3.审计用户的指定

可以通过BY指定审计用户

可以通过BY指定审计用户

可以通过EXCEPT排除审计用户

4.初始化参数

必须设定

不需要设定

5.审计记录

・SYS.AUD$与SYS.FGA_LOG$

・OS审计记录文件

・DB审计记录文件

・XML形式的OS审计记录文件

・作为AUDSYS schema,在SYSAUX表区域中存储

在审计记录文件中存储、可以输入到UNIFIED_AUDIT_TRAIL中

Unified Auditing的新架构 2个的SGA队列造成的并列处理非同步写入

37fed97e81f96dcae9a8324a89d71592.png

无法刷新时的架构

防止遗漏日志

无法刷新SYSAUX时,就会作为二进制文件写入到$ORACLE_BASE/audit /$ORACLE_SID中

被输出的审计文件可以通过UNIFIED_AUDIT_TRAILDBMS_AUDIT_MGMT.

LOAD_UNIFIED_AUDIT_FILES输入

输入完成后,删除审计文件

dc29b7c7ba1190411b0202312913e9bb.png

审计日志的写入方法

同步・非同步模式

写入方法

特性

Queued-write mode

队列写入

•通过SGA队列的非同步写入方法

•默认

•通过UNIFIED_AUDIT_SGA_QUEUE_SIZE参数,可以将SGA队列的尺寸从1MB扩展到30MB。默认值为1MB

•实例故障以及SHUTDOWN ABORT等等

数据库没有正常关闭时,SGA队列中可能失去审计日志

Immediate-write mode

即时写入

•传统的同步写入方法

•可以获得所有日志,但可能对性能造成影响

审计日志的写入方法的设定

DBMS_AUDIT_MGMTpackage

Queued-write mode的设定

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY( DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE, DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);

END;

Immediate-write mode的设定

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY( DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE, DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE);

END;

审计对策的制成~有效化

审计对策的制成

CREATE AUDIT POLICY对策名

ROLES   角色名,・・

PRIVILEGES  系统权限,・・

ACTIONS 对象权限 ON 对象名,・・

ACTIONS COMPONENT = DATAPUMP, DV, DIRECT_LOAD, OLS

WHEN  执行审计的条件

EVALUATE PER [STATEMENT, SESSION, INSTANCE]

CONTAINER = [CURRENT, ALL]

审计对策的有效化

AUDIT POLICY对策名[ BY,EXCEPT ] 用户名

条件式的制成例通过WHEN句指定审计条件

以前只能通过Fine-grained审计指定的审计条件,现在可以也通过Unified Auditing完成

审计条件

仅限本地连接

SYS_CONTEXT(‘USERENV’,’IP_ADDRESS’) IS NULL

应用为SQL*Plus

SYS_CONTEXT(‘USERENV’,’MODULE’) =‘SQL*Plus’

连接客户端在Client001之外

SYS_CONTEXT(‘’USERENV’,HOST’)  <> ‘Client001’

OS用户在Oracle之外

SYS_CONTEXT(‘’USERENV’,OS_USER’)  <> ‘oracle’

客户端识别码格式为ID_XXXX

SYS_CONTEXT(’USERENV’, CLIENT_IDENTIFIER’)

like  ‘ID_%’

没有ADMIN的角色

SYS_CONTEXT(‘SYS_SESSION_ROLES’,’ADMIN’)  =FALSE

※ 列単位中的审计条件、执行审计后的操作仅限(例发送邮件等) Fine-grained审计

审计对策制成例

以数据库的所有的操作为对象

CREATE AUDIT POLICY all_actions ACTIONS ALL;

AUDIT POLICY all_actions ;

以对HR用户的EMPPLOYEES表的所有的操作为对象

CREATE AUDIT POLICY all_actions_emp ACTIONS ALL ON HR.EMPLOYEES;

AUDIT POLICY all_actions_emp;

(条件)本地连接的情况中以特定的系统权限、以表的访问为对象

CREATE AUDIT POLICY custom_audit

PRIVILEGES  SELECT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE

ACTIONS ALL ON SCOTT.EMP, ALL ON SCOTT.DEPT

WHEN ‘SYS_CONTEXT(”USERENV”,”IP_ADDRESS”) IS NULL’

EVALUATE PER STATEMENT;

AUDIT POLICY custom_audit;

通过一个视图访问所有的审计日志

UNIFIED_AUDIT_TRAIL

e674dcf09c21d33abcb6dfa978be6328.png

UNIFIED_AUDIT_TRAIL的主要項目

说明

AUDIT_TYPE

审计类型

Standard,

Fine Grained Audit

Database Vault

RMAN AUDIT

Data Pump

SESSIONID

审计会话中被分配的识别ID

650971863

OS_USERNAME

OS用户名 (连接客户端)

oracle

USERHOST

主机名 (连接客户端)

client001.jp.oracle.com

TERMINAL

端末的识别码 (连接客户端)

pts/1

INSTANCE_ID

实例编号

1

DBID

Database的识别ID

1417811312

AUTHENTICATION_TYPE

会话用户的认证类型

(TYPE=(DATABASE));(CLIENT ADDRESS=((ADDRESS=(PROTOCOL=tcp)(HOST=10.185.146.20)(PORT=50713))));

DBUSERNAME

数据库用户名

SCOTT

説明

CLIENT_PROGRAM_NAME

客户端程序名

sqlplus@secvm3.jp.oracle.com (TNS V1-V3)

DBLINK_INFO

数据库链接信息

SOURCE_GLOBAL_NAME=dblink_src_global_name…..

EVENT_TIMESTAMP

event时间(UTC)

13-04-25 15:16:45.513780000

ACTION_NAME

action名

SELECT,INSERT, UPDATE,EXECUTE….

CREATE USER, LOGOFF,LOGON…..

RETURN_CODE

错误编号 (ORA-XXXXX)

1031

OS_PROCESS

OS的进程编号

30422

SCN

System Change Number

5742707

OBJECT_SCHEMA

受到action影响的schema名

HR

OBJECT_NAME

受到action影响的对象名

EMPLOYEES

SQL_TEXT

被执行的SQL

select count(*) from emp where empno=:v1

SQL_BINDS

SQL_TEXT中包含的bind变量的值

#1(7):1001

APPLICATION_CONTEXTS

应用context值

custno_ctx

CLIENT_IDENTIFIER

会话中被设定的客户端识别码

app001

説明

UNIFIED_AUDIT_POLICIES

审计日志的出力对策名

ORA_SECURECONFIG

FGA_POLICY_NAME

审计日志的出力FGA名

FGA_EMP_POLICY

DV_XXXXX (略)

Database Vault相关的日志信息

RMAN_XXXX  (略)

Recovery Manager相关的日志信息

DP_XXXX  (略)

Data Pump相关的日志信息

DIRECT_PATH_NUM_COLUMNS_LOADED

SQL*Loader Direct Path Load 相关的日志信息

OLS_XXXX  (略)

Oracle Lable Security相关的日志信息

XS_XXXX  (略)

Oracle Real Application Security相关的日志信息

审计对策的无效化~删除

审计对策的无效化

NOAUDIT POLICY对策名

审计对策的删除

DROP AUDIT POLICY对策名

NOAUDIT POLICY all_actions_emp;

审计取消成功。

drop audit policy all_actions_emp;

审计对策已删除。

完成定义的默认对策

ORA_SECURECONFIG

PRIVILEGES

ALTER  ANY TABLE

CREATE ANY TABLE

DROP ANY TABLE

CREATE ANY PROCEDURE

DROP ANY PROCEDURE

ALTER ANY PROCEDURE,

GRANT ANY PRIVILEGE

GRANT ANY OBJECT PRIVILEGEGRANT ANY ROLE

AUDIT SYSTEM

CREATE EXTERNAL JOB

CREATE ANY JOB

CREATE ANY LIBRARY

EXEMPT ACCESS POLICY

CREATE USER

DROP USER

ALTER DATABASE

ALTER SYSTEM

CREATE PUBLIC SYNONYM

DROP PUBLIC SYNONYM

CREATE ANY SQL TRANSLATION PROFILE

ALTER ANY SQL TRANSLATION PROFILE

DROP ANY SQL TRANSLATION PROFILE

TRANSLATE ANY SQL

EXEMPT REDACTION POLICY

ADMINISTER KEY MANAGEMENT

PURGE DBA_RECYCLEBIN

LOGMINING

ACTIONS

ALTER USER

CREATE ROLE

ALTER ROLE

DROP ROLE

SET ROLE

CREATE PROFILE

ALTER PROFILE

DROP PROFILE

CREATE DATABASE LINK

ALTER DATABASE LINK

DROP DATABASE LINK

LOGON

LOGOFF

CREATE DIRECTORY

DROP DIRECTORY

強制的审计的用户、命令

管理者的访问、审计设定的变更历史为默认审计

用户

SYS, SYSDBA, SYSOPER

SYSASM, SYSBACKUP, SYSDG, SYSKM

命令

CREATE AUDIT POLICY

ALTER AUDIT POLICY

DROP AUDIT POLICY

AUDIT, NOAUDIT

EXECUTE DBMS_FGA, DBMS_AUDIT_MGMT

ALTER TABLE (AUDSYS用户拥有的表)

RMAN event的审计

执行RMAN命令

$ rman target /

RMAN> backup tablespace users;

RMAN> restore tablespace users;

RMAN> recover tablespace users;

参考UNIFIED_AUDIT_TRAIL的RMAN列

SELECT event_timestamp,action_name,rman_operation,rman_object_type FROM unified_audit_trail

WHERE rman_operation IS NOT NULL;

EVENT_TIMESTAMP  ACTION_NAME  RMAN_OPERATION  RMAN_OBJECT_TYPE

———————————————————————————————————————————————-

13-02-14 02:19:26  RMAN ACTION  Backup  DF Full

13-02-14 02:19:26  RMAN ACTION  Restore  DF Full

13-02-14 02:19:26  RMAN ACTION  Recover  DF Full

Data pump  event的审计

设定Datapump的对策

SQL> CREATE AUDIT POLICY audit_dp_all_pol ACTIONS COMPONENT=DATAPUMP ALL;

SQL> AUDIT POLICY audit_dp_all_pol;

EXPORT的执行

$ expdp scott/tiger dumpfile=scott_tables tables=emp,dept directory=dp_dir

Export: Release 12.1.0.1.0 - Production on 木 2月 14 11:44:52 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

连接地址: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics, Real Application Testing and Unified Auditing options

启动"SCOTT"."SYS_EXPORT_TABLE_01":

scott/******** dumpfile=scott_tables tables=emp,dept directory=dp_dir

・・

. . “SCOTT”.“DEPT”                                  6 KB       4行被输出

. . “SCOTT”.“EMP”                               8.671 KB      12被输出

主表“SCOTT”.“SYS_EXPORT_TABLE_01”正常加载/卸载完成

******************************************************************************

参考UNIFIED_AUDIT_TRAIL 的DP列

SELECT event_timestamp,dp_text_parameters1,dp_boolean_parameters1

FROM unified_audit_trail WHERE dp_text_parameters1 is not null

EVENT_TIMESTAMP

--------------------------------

13-02-14 11:44:56

DP_TEXT_PARAMETERS1

------------------------------------------------------------------------------------------------------------------------------------------------

MASTER TABLE:  "SCOTT"."SYS_EXPORT_TABLE_01" , JOB_TYPE: EXPORT, METADATA_JOB_MODE: TABLE_EXPORT,JOB VERSION: 12.0.0.0.0, ACCESS METHOD: AUTOMATIC,

DATA OPTIONS: 0, DUMPER DIRECTORY: NULL  REMOTE LINK: NULL, TABLE EXISTS: NULL,

PARTITION OPTIONS: NONE

DP_BOOLEAN_PARAMETERS1

------------------------------------------------------------------------------------------------------------------------------------------------

MASTER_ONLY: FALSE, DATA_ONLY: FALSE, METADATA_ONLY: FALSE,

DUMPFILE_PRESENT: TRUE, JOB_RESTARTED: FALSE

SQL*Loader Direct Path Load event的审计

设定SQL*Loader Direct Path Load的对策

SQL> CREATE AUDIT POLICY audit_sqlldr_load_pol ACTIONS COMPONENT=DIRECT_LOAD LOAD;

SQL> AUDIT POLICY audit_sqlldr_load_pol ;

执行SQL*Loader Direct Path Load

$ sqlldr userid=hr/hr control=emp.ctl data=emp.csv direct=y

参考UNIFIED_AUDIT_TRAIL

select event_timestamp,audit_type,dbusername,action_name,object_schema,object_name,sql_text,

direct_path_num_columns_loaded from unified_audit_trail where audit_type='Direct path API‘

EVENT_TIMESTAMP    AUDIT_TYPE       ACTION_NAME  OBJECT_SCHEMA      OBJECT_NAME

----------------------------------------------------------------------------------------------------------------------------------------------

13-02-14 13:05:31         Direct path API      LOAD                  HR                                EMP

SQL_TEXT

----------------------------------------------------------------------------------------------------------------------------------------------

INSERT /*+ SYS_DL_CURSOR */ INTO "HR"."EMP" ("EMP_ID","EMP_NAME") VALUES (NULL,NULL)

DIRECT_PATH_NUM_COLUMNS_LOADED

--------------------------------------------------------------

2

审计DatabaseVault event

设定Database Vault的对策

对象: Realm, the rule set, factor

访问失败/成功等

SQL> CREATE AUDIT POLICY audit_dv  ACTIONS COMPONENT=DV Realm Violation

ON “HR Application”;

SQL> AUDIT POLICY audit_dv;

参考UNIFIED_AUDIT_TRAIL 的DV列

SELECT dbusername,object_name,sql_text,dv_action_name FROM unified_audit_trail

WHERE db_return_code <> 0;

DBUSERNAME  OBJECT_NAME  SQL_TEXT  DV_ACTION_NAME

-----------------------------------------------------------------------------------------------------------------------------------------------

HR  EMPLOYEE  select * from hr.employee  Realm Violation Audit

Mixed Mode Auditing

下位兼容性support

12c的数据库可以使用传统的Audit或者Unified Auditing

安装时都是以可以使用的Mixed 模式来运行

Mixed 模式的情况下,AUDIT_SYS_OPERATION的SYSDBA的日志文件在

传统OS的目录中被输出

另外,RMAN以及Datapump等的utility的日志无法在Unified Auditing中整合

确认审计模式

SELECT VALUE FROM V$OPTION WHERE PARAMETER = ‘Unified Auditing’;

——————————————-

TRUE   –>  Unified Auditing

FALSE –>  Mixed Mode

Mixed模式因为Unified Auditing的对象范围被Audit Policy限制了,所以推荐以以下顺序完成

关闭数据库、终止listener

cd $ORACLE_HOME/rdbms/lib

make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME

启动listener、数据库的起動

只想使用传统的Audit时,以Mixed模式使得所有的Unified Audit对策无效化,通过audit_trail参数与Audit命令来设定

追加的AUDIT专用角色

数据库利用者与审计的权限分离

3e3ab26673843f70b1b6e8d06c5e96d8.png

对跨越间隔的审计日志进行清理

DBMS_AUDIT_MGMT package

指定基准日期时间

BEGIN

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(

AUDIT_TRAIL_TYPE       =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

LAST_ARCHIVE_TIME   =>  '2013-02-15 10:00:00.00');

END;

制成对超过了两周(336H)的审计日志进行清理的job

BEGIN

DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (

AUDIT_TRAIL_TYPE              => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

AUDIT_TRAIL_PURGE_INTERVAL    => 336,

AUDIT_TRAIL_PURGE_NAME        => 'Audit_Trail_Purge_Job’,

USE_LAST_ARCH_TIMESTAMP       => TRUE);

END;

审计日志的归档

清理之前,对审计日志进行备份的方法

在UNIFIED_AUDIT_TRAIL视图中作为其他表来抽出,取出EXPDP

归档到Oracle Audit Vault and Database Firewall (12.1.1)

c343834251354c24def16eb6426e788a.png

Unified Auditing的负载

fef4cafc38545c618c6e4cd4ac9d0e5f.png

查看・更新SQL造成的差异

21a360dbb87db0c826d6594186fec1bb.png

OTLP应用的情况

f6549809c510a143053994313c834385.png

Unified Auditing中生成的日志尺寸SYSAUX表区域的尺寸

fb4dda3997751b9aad642f4f375f55c3.png

权限管理新功能Privilege Analysis

Privilege Analysis

不正常访问的原因一般都是检测到过度的权限赋予

清理出赋予用户以及角色的系统权限、对象权限,确认是否使用,进行报告

赋予应用以及开发者・管理者真正需要的权限

原则上以最小权限来实现。防止不正常访问

d8db8be5e202ab5eb9dea7a86c55c0a9.png

权限分析的对象

找出被执行的系统/对象权限

角色

分析指定角色权限的使用状況 (可以指定多个)

条件指定

分析适合指定条件的情况,分析权限的使用状況

(特定的用户以及应用等)

角色+条件指定

适合指定角色以及条件的情况,分析权限的使用状況

数据库

分析数据库内的所有的权限的使用状況

(除去SYS用户)

权限分析的顺序

通过DBMS_PRIVILEGE_CAPTURE开始捕获

制成分析对策

DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE

name

对策名

description

说明(任意)

type

选择任意一个

DBMS_PRIVILEGE_CAPTURE.G_DATABASE

DBMS_PRIVILEGE_CAPTURE.G_ROLE

DBMS_PRIVILEGE_CAPTURE.G_CONTEXT

DBMS_PRIVILEGE_CAPTURE.G_ROLE_AND_CONTEXT

roles

Ex)  role_name_list(‘role1’, ‘role2’)

condition

Ex)  SYS_CONTEXT(”USERENV”, ”SESSION_USER”)=‘SCOTT’

分析对策的有效化

DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (‘对策名‘)

权限分析的顺序捕获终止~报告

68cf1fa050374f754360de7a582c0e52.png

分析对策的无效化

EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE (‘对策名)

分析报告的制成 (执行后,可以在专用的视图中查看分析结果)

EXEC DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (‘对策名‘)

分析报告的删除 (会删除已制成的报告的信息)

EXEC DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE(‘对策名‘)

Privilege Analysis的专用视图

结果表

説明

DBA_USED_PRIVS

DBA_UNUSED_PRIVS

所有的使用/未使用的权限。

(包含系统权限、用户权限、对象权限与PUBLIC权限)

DBA_USED_OBJPRIVS

DBA_UNUSED_OBJPRIVS

DBA_USED_OBJPRIVS_PATH

DBA_UNUSED_OBJPRIVS_PATH

所有的使用/未使用的对象权限。

对有「PATH」的表赋予权限。

DBA_USED_SYSPRIVS

DBA_UNUSED_SYSPRIVS

DBA_USED_SYSPRIVS_PATH

DBA_UNUSED_SYSPRIVS_PATH

所有的使用/未使用的系统权限。

对有「PATH」的表赋予权限

DBA_USED_PUBPRIVS

所有的使用过的PUBLIC权限。

DBA_USED_USERPRIVS

DBA_UNUSED_USERPRIVS

DBA_USED_USERPRIVS_PATH

DBA_UNUSED_USERPRIVS_PATH

所有的使用/未使用的用户权限。

「对有「PATH」的表赋予权限

例)用户没有Any权限的调査

BEGIN

DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(

name            => 'ANY_priv_analysis_pol',

type              => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT,

condition      => 'SYS_CONTEXT(''USERENV'', ''SESSION_USER'')=''APP_USER''');

END;/

EXEC DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE ('ANY_priv_analysis_pol');

-----处理执行-----

EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ('ANY_priv_analysis_pol');

EXEC DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT('ANY_priv_analysis_pol');

SELECT USERNAME, SYS_PRIV, OBJECT_OWNER, OBJECT_NAME FROM DBA_USED_PRIVS;

USERNAME   SYS_PRIV                     OBJECT_OWNER  OBJECT_NAME

----------------    ----------------------------     -----------------------    -----------------------

APP_USER    SELECT ANY TABLE     HR                           EMPLOYEES

APP_USER    CREATE SESSION

APP_USER                                           SYS                         ORA$BASE

APP_USER                                           SYS                         DUAL

发现APP_USER以

SELECT ANY TABLE权限在

HR用户的EMPLYEES表中访问过

-> SELECT ANY TABLE是否不必要?

例) 调查DBA角色的使用状況

BEGIN

DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(

name        => 'dba_role_analysis',

type          => DBMS_PRIVILEGE_CAPTURE.G_ROLE,

roles         => role_name_list('dba'));

END;/

EXEC DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE('dba_role_analysis');

-----处理执行-----

EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE('dba_role_analysis');

EXEC DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT('dba_role_analysis');

SELECT USERNAME, USED_ROLE,SYS_PRIV,PATH FROM DBA_USED_SYSPRIVS_PATH;

USER     USED_ROLE                   SYS_PRIV                    PATH

----------   ----------------------------        -----------------------          -----------------------

SCOTT   OLAP_DBA                      DROP ANY TABLE     SYS.GRANT_PATH(SCOTT,DBA,OLAP_DBA)

SELECT USERNAME, SYS_PRIV, OBJECT_OWNER, OBJECT_NAME FROM DBA_USED_PRIVS

USERNAME   SYS_PRIV                     OBJECT_OWNER  OBJECT_NAME

----------------    ----------------------------     -----------------------    -----------------------

SCOTT     SELECT ANY TABLE   HR                           TEST

SCOTT用户使用

DROP ANY TABLE权限

(DBA - >OLAP_DBA角色)

删除了HR用户的TEST表

Database Vault新功能

Oracle Database Vault特权用户管理

控制数据库内的特权用户(SYS用户、DBA角色等)的強制访问

特权用户无法访问应用数据

将应用进行bypass的访问,也可以在数据库中包含数据

可以制成包含用户以及IP地址等等的客户端信息以及星期几・时间等详细信息的对策

提供SAP以及SIEBEL等的应用的访问对策的提供

e7fdfdacc83c20549f09d188eafa1372.png

DV的起动设定

默认已经安装好所有必须的部件

制成DV的管理者用户与账户管理者 (提供SYS用户执行)

GRANT CREATE SESSION TO dbv_owner IDENTIFIED BY password;

GRANT CREATE SESSION TO dbv_acctmgr IDENTIFIED BY password;

BEGIN

DVSYS.CONFIGURE_DV (

dvowner_uname         => 'dbv_owner',

dvacctmgr_uname       => 'dbv_acctmgr');

END;

DV的有效化 (需要以DV管理者执行、重启)

EXEC DVSYS.DBMS_MACADM.ENABLE_DV;

DV的无效化 (需要以DV管理者执行、重启)

EXEC DVSYS.DBMS_MACADM.DISABLE_DV;

切断特权用户的访问

通过Realm理论地定义对象防御范围

为了访问Realm中的对象,需要满足

Realm的认可、规则的許可、对象的访问权等条件

c8293ab14b2be672c79eada6aa757ff8.png

強制Realm

更严格的、不遗漏的默认隔断

对于对象的所有者(制成者)、即使是有对象权限的用户,

只要Realm不认可,就不能访问

e90a184e94bfd54acf17225846b80783.png

对应Multi-tenant架构更安全地管理集约数据库

6a01f88407c30c52dcb8daccaaa0c773.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle11gR版本GI中新增,Oracle11g新特性MemberKillEscalation简介

从oracle 11gR1 开始&#xff0c;Member Kill Escalation的出现成功的解决了前面提到的情况。当实例eviction在指定的时间内(默认20秒)不能首先我们介绍一下历史。在Oracle 9i/10g 中&#xff0c;如果一个数据库实例需要驱逐(evict, alert 文件中会出现ora-29740错误)另一个实例…

Oracle存储使用情况,我收藏的oracle中一些分析空间使用情况的存储过程!

tom写了个好工具show_space,这个工具对于oracle来讲其实就是个存储过程&#xff0c;这个存储过程可以用来分析空间使用情况&#xff0c;有了此工具&#xff0c;就不用再通过写sql语句来看每条记录或表占用表空间的大小了&#xff0c;使用起来很方便。具体使用过程如下&#xff…

linux iso的引导文件,Linux_从硬盘启动Desktop ISO所需的引导文件,一、仅从硬盘启动Destdop ISO 并 - phpStudy...

从硬盘启动Desktop ISO所需的引导文件一、仅从硬盘启动Destdop ISO 并安装1、从后面的链接下载相关引导文件并解压&#xff1b;2、在任意盘的根目录中新建一个文件夹&#xff0c;并重命名(如feisty、edgy等&#xff0c;menu.lst中用fd_dir变量把要找的文件夹传给系统)把下载的桌…

linux命令为什么这么快,为什么这么多Linux用户更喜欢命令行而不是GUI?

为什么这么多 Linux 用户更喜欢 CLI 而非 GUI&#xff1f; 上次我在 Reddit 关注该问题时&#xff0c;遇到了一些有帮助的投稿&#xff1a;“处于相同的原因我更喜欢谈论指指点点和七嘴八舌。 可以很好的传达并给出很好的反馈。这不是一团糟&#xff0c;而是富有诗意的精确。 你…

Linux下golang的编译,golang Linux下编译环境搭建

1、下载golang1.4和1.10源码(1.4以后的版本都用1.4go编译安装&#xff0c;所以先安装1.4)2、解压后我的目录结构是&#xff1a;/opt/xxx/golang|-------gopath //开发工作目录|     |------src       //开发源码|     |------p…

linux数据库怎么import,mysqlimport

mysqlimport命令为mysql数据库服务器提供了一种命令行方式导入数据工具&#xff0c;它从特定格式的文本文件中读取数据插入MySQL数据库表中。常用参数:--columns第一列对应的数据表列名,第二列对应的数据表列名,…定义被导入文件中的每一列对应的数据库表列名--fields-terminat…

linux查看rsync的命令,Linux rsync 命令学习

Rsync命令和cp命令很像&#xff0c;但是功能似乎更加复杂点&#xff0c;主要用来备份数据。看了网上一堆介绍的文章&#xff0c;感觉不是很通俗易懂。下面按照我的理解&#xff0c;做一些笔记&#xff1a;同步方式之前接触过一些同步软件&#xff0c;例如坚果云、百度云盘等等&…

linux远程挽救模式,linux – 如何在远程重启Redhat后进入SSH并进入恢复模式?

我需要进入我的红帽框的恢复模式,该模式在虚拟机上远程运行.我使用RedHat 5 64位企业版.我使用SSH登录到该框.我可以使用restart命令重新启动,但我需要知道我是否能够通过SSH连接它,因为我远程使用它并且无法通过UI登录.真正的问题是,我在根目录上做了一个-R $USER /.我试图将此…

mac os linux 桌面快捷键,Mac之快捷键

接触Mac不久&#xff0c;很多东西都没了解过&#xff0c;对于快捷键完全不熟悉&#xff0c;查了些资料&#xff0c;顺便做下笔记&#xff5e;&#xff5e;&#xff5e;按键符号Shift&#xff1a;⇧Ctrl&#xff1a;⌃Alt(Option)&#xff1a;⌥Command&#xff1a;⌘Mac按键符号…

linux 等待进程,Linux 进程等待队列

Linux内核的等待队列是以双循环链表为基础数据结构&#xff0c;与进程调度机制紧密结合&#xff0c;能够用于实现核心的异步事件通知机制。在这个链表中&#xff0c;有两种数据结构&#xff1a;等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列…

linux 终端 朗读,使Linux终端朗读文字的小技巧分享

对于那些不能文字朗读的设备&#xff0c;有个小工具可以实现文字说话的转换器。用各种语言写一些东西&#xff0c;espeak就可以朗读给你。系统应该默认安装了Espeak&#xff0c;如果你的系统没有安装&#xff0c;你可以使用下列命令来安装&#xff1a;代码如下:# apt-get insta…

linux 进程崩溃 wait,Linux信号机制有关问题

代码如下:#include#include#includevoid waiting(),stop();int wait_mark;main(){int p1,p2,stdout;while((p1fork())-1); /*创建子进程p1*/if (p1>0){wait_mark1;signal(SIGINT,stop); /*接收到^c信号&#xff0c;转stop*/waiting();kill(p1,16); /*向p1发软…

linux启动管理,Linux启动管理 详述

一 系统运行级别如果想查看运行级别&#xff0c;用runlevelinit 运行级别 就可以改变系统运行级别系统默认级别&#xff0c;也就是开机进入哪个级别&#xff0c;在/etc/inittab中二 启动过程首先是BIOS加载MBR&#xff0c;MBR里有个扇区&#xff0c;里面有启动引导程序&#xf…

weblogic 10.3.0.0 for linux下载地址,weblogic10.3下载地址

Oracle WebLogic Server 10.3.1 OEPE - Package Installer 单语言版带OEPEMicrosoft Windows x86: 756 MB http://download-llnw.oracle.com/otn/nt/middleware/11g/wls/oepe11_wls1031.exeLinux x86: 773 MB http://download.oracle.com/otn/linux/…

linux vfs 根节点名称,Linux:文件,目录项,索引节点,超级块,VFS,具体文件系统...

【笔记&#xff1a;http://m.blog.csdn.net/blog/zhouzhou135】在了解文件系统之前&#xff0c;先了解磁盘格式化的知识。所以要理解文件系统的数据结构&#xff0c;要从两个方向来理解&#xff1a;1&#xff1a;磁盘中的数据结构&#xff1a;因为在磁盘格式化的时候&#xff0…

简单的eda实验vga在linux系统中,EDA实验报告-VGA彩条显示.doc

VGA彩条信号显示控制一、实验目的&#xff1a;1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用&#xff1b;2. 理解状态机的工作原理和设计方法&#xff1b;3. 熟悉 VGA 接口协议规范。4.通过对VGA接口的显示控制设计&#xff0c;理解VGA接口的时序工作原理&#xff0c;掌握…

c语言中陶陶摘苹果while,洛谷 P1478 陶陶摘苹果(升级版) C语言实现

题目描述又是一年秋季时&#xff0c;陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果&#xff0c;这次她有一个a公分的椅子。当他手够不着时&#xff0c;他会站到椅子上再试试。这次与NOIp2005普及组第一题不同的是&#xff1a;陶陶之前搬凳子&#xff0c;力气只剩下s了。当然&am…

c语言程序设计报告用于医院食品加工等部,南开(本部)《C语言程序设计》14春在线作业答案...

南开(本部)14春《C语言程序设计》在线作业 , W. v1 o) p. J2 n0 I试卷总分&#xff1a;100 测试时间&#xff1a;--4 v8 D, }8 e! w: D6 Y0 m一、单选题(共40道试题&#xff0c;共80分。)8 U: } j% ^2 T) F( q1.以下对一维整型数组 a 的正确说明是( ) C! f | }# n$ t7 g, z…

c语言中二分法100中找30,c语言中的二分法

\\\题外&#xff1a;对于printf引号中的内容一定要细心书写 ; 数组由a[0]开始计数&#xff0c;切记&#xff1b;尤其是与for循环中i1 搞混运用a[i1]等超前数据时 需先用for(i0;i<n-1;i){scanf("%d",&a[i]);}给数组全部赋值题目&#xff1a;对于方程 8*x^47*x^…

c语言 乘除法优先级,运算符运算符优先级 - C语言教程

运算符优先级运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级&#xff0c;例如&#xff0c;乘除运算符具有比加减运算符更高的优先级。例如 x 7 3 * 2&#xff0c;在这里&#xff0c;x 被赋值为 13&#xff0c;而不…