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错误)另一个实例…

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

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

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;用runlevelinit 运行级别 就可以改变系统运行级别系统默认级别&#xff0c;也就是开机进入哪个级别&#xff0c;在/etc/inittab中二 启动过程首先是BIOS加载MBR&#xff0c;MBR里有个扇区&#xff0c;里面有启动引导程序&#xf…

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

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

存储器块清零c语言版,存储器块清零实验报告

有关单片机存储器块清零实验的试验报告存储器块清零实验报告班级&#xff1a; 11级计科班 姓名&#xff1a;苏靖 学号&#xff1a;1120070544 日期&#xff1a;2012-12-19一、实验目的&#xff1a;1、掌握存储器读写方法2、了解存储器的块操作方法.二、实验要求&#xff1a; 设…

C语言exchange函数,C++指针作为函数参数

函数的参数不仅可以是整型、浮点型、字符型等数据&#xff0c;还可以是指针类型。它的作用是将一个变量的地址传送给被调用函数的形参。【例6.3】题目同例6.2&#xff0c;即对输入的两个整数按大小顺序输出。这里用函数处理&#xff0c;而且用指针类型的数据作函数参数。程序如…

android自定义阴影,Android自定义边框加阴影

一、前言Android自定义边框&#xff0c;可以设置任意边框的角度和阴影。我下面分为 四个角度设置边框、两个角度设置边框、半圆球设置边框加两层阴影等。二、边框分类&#xff1a;1、四个角度设置边框效果图&#xff1a;图片.png2、两个角度设置边框android:topLeftRadius"…

鸿蒙形容欣欣向荣发展,比喻事业蓬勃发展繁荣兴旺的成语蒸蒸日上

2020-03-13阅读(79)1.《RE从零开始的异世界生活》作者&#xff1a;长月达平。2.《魔法少女小圆》作者&#xff1a;新房昭之。3.《命运石之门》作者&#xff1a;冈部伦太郎。4.《寒蝉鸣泣之时》作者&#xff1a;前原圭一。5.《目隐都市的演绎者》作者&#xff1a;新房昭之。6.《…

c语言深度解剖 pdf,c语言深度解剖(解密).pdf.pdf

c语言深度解剖(解密).pdf.pdf还剩130页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;* Stru…

html中链接不自动变色,HTML 点击 标签 链接 点击之后变色-转发【已解决】

可以利用CSS的伪类实现&#xff1a;a:link&#xff0c;定义正常链接的样式&#xff1b;a:visited&#xff0c;定义已访问过链接的样式&#xff1b;a:hover&#xff0c;定义鼠标悬浮在链接上时的样式&#xff1b;a:active&#xff0c;定义鼠标点击链接时的样式。例子&#xff1a…

一张纸厚度是多少毫米_大洼20毫米水泥纤维板多少钱一张追求至善

大洼20毫米水泥纤维板多少钱一张追求至善而且强度和硬度随时间而增强&#xff0c;保证有超长的使用寿命。近年来&#xff0c;我国对loft复式阁楼板的研究较为深入。与龙骨的配合&#xff0c;有效降低工程和装修成本&#xff0c;外观颜色均匀&#xff0c;表面平整&#xff0c;直…

html中删除代码怎么写,html空格代码怎么写?

html空格代码怎么写&#xff1f;html空格代码是 为html空格字符代码&#xff0c;由“ ”组成&#xff0c;记住最后一个分号不要忘记了。CSS中当 white-space 属性取值为pre时&#xff0c;浏览器会保留文本中的空格和换行,例如&#xff1a;AA BB显示效果为&#xff1a; AA BBCS…

管程由哪三部分组成_黄蜀葵烘干机是由哪几个部分组成的

黄蜀葵在近几年有大量的需求增加&#xff0c;市面上有大量的黄蜀葵烘干机的需求产生&#xff0c;黄蜀葵烘干机一般用的都是网带机的形式结构来对黄蜀葵进行烘干&#xff0c;那么黄蜀葵烘干机的重要组成部分有哪些呢&#xff1f;1 上料端上料端是黄蜀葵烘干机的前段部分&#xf…

在线js拼接html代码,关于js拼接html元素?

你的意思是 小明和 888888这样的学号都是从数据中来的&#xff1f;然后要展现到前端页面中其实有很多方法&#xff1a;一. 直接全HTML拼接(你可能想到的方法)// 假设 有 name 和 xueID 分别代表名字和学号的变量var HTMLbankname xueID name 上学校&#xff0c;天天不迟到&…

用php 用拼出一个菱形_这可是我没来过的杭州呀!远在开封的他,用一种特殊的方式,拼出一个彩色杭州...

天气晴好的日子&#xff0c;一起骑车出游。西湖&#xff0c;除了美&#xff0c;还有爱情。杭友圈达人“幽默之余”&#xff1a;我并不是杭州人&#xff0c;在河南开封工作&#xff0c;但和杭州&#xff0c;和都市快报&#xff0c;已经有近10年的感情了。因为喜欢摄影&#xff0…

html文字自动消失了,为什么从网页上复制的文字到word上一修改后面的字就自动消失了...

word打字时后面的字会消失是什么原因?如何解决?出现这种问题多半是发生设置错误或误触键盘某些键导致的,由于插入键与退格键距离非常的接近,于是,误触插入键是最常导致这种问题。而导致word打字后面的字会消失由于两方面的原因引起&#xff0c;一是insert键&#xff0c;二是W…

apache license 2.0如何使用防止法律纠纷_Thinkphp + queue 使用队列进行 邮件通知

环境thinkphp5.1redis"topthink/think-queue": "2.0.*"复制代码queue 配置环境 config/queue.php<?php // ----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]// ----------------…

.net core 正则表达式 获取 等号后面的值_Python3 正则表达式

Python人工智能 - python 人工智能-神经网络 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - Day2:Python世界中的封装与异常 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - Python开发必备之网络编程 - 创客学院直播室​www.makeru.com.cnpython高级…