95992828九五至尊2

行使技术手段限制DBA的摇摇欲坠操作

三月 26th, 2019  |  九五至尊ii

 

 

概述

鲜明,在事情高峰期,某个针对Oracle数据库的操作具有很高的风险,比如修改表结构、修改实例参数等等,若是没有丰硕评估和询问这个操作所推动的震慑,这么些操作不小概会造成故障,轻则导致应用错误,重则导致数据库服务不可用。

除此以外,在非业务高峰期,有个别看似风险相当的小的操作也或许会招致严重后果,比如不按管理流程修改表结构,假如那个表正好是Oracle
高尔德enGate复制组的一有的,修改了源端结构而尚未公告OGG的连锁人口,没有在指标端实行相同的操作,而DDL复制成效也并未打开的情事下,就会造成复制进度故障,导致数据差别,在少数应用场景下,那也是很要紧的生育事故。

现阶段,古板的回答方法可能强调管理,不管是客户如故服务商都在不停强调制度和规范,希望从制度建设和工程师的工作素养上最先,幸免DBA的那种随意的惊险操作。

而是,管理制度毕竟是“软性”的,把梦想寄托在工程师自觉地遵守制度和“自笔者修养”上,并无法担保万无一失。

Oracle提供的安全组件,能够用来限制、阻断那种随意的安危操作,用技术手段保险管理制度被遵从。

概述

名高天下,在事情高峰期,某个针对Oracle数据库的操作具有很高的危害,比如修改表结构、修改实例参数等等,假若没有足够评估和询问这么些操作所推动的震慑,这个操作很恐怕会造成故障,轻则导致应用错误,重则导致数据库服务不可用。

其它,在非业务高峰期,某个看似风险十分小的操作也大概会招致严重后果,比如不按管理流程修改表结构,假使这几个表正好是Oracle
高尔德enGate复制组的一片段,修改了源端结构而没有通告OGG的相干人口,没有在指标端举行相同的操作,而DDL复制作用也并未打开的图景下,就会造成复制进度故障,导致数据不等同,在少数应用场景下,那也是很严重的生育事故。

此时此刻,古板的对答方法可能强调管理,不管是客户依旧服务商都在不断强调制度和正规,希望从制度建设和工程师的生意素养上入手,幸免DBA的那种随意的生死存亡操作。

然而,管理制度毕竟是“软性”的,把希望寄托在工程师自觉地遵守制度和“自小编修养”上,并无法确定保证万无一失。

Oracle提供的长治组件,能够用来限制、阻断那种自由的高危操作,用技术手段保障管理制度被遵循。

Oracle Database Vault简介

我们要钻探的是Oracle数据库的海东组件之一: Oracle Database
Vault(DV),它的关键职能是维护敏感数据和天职务开。

DV爱惜敏感数据主要通过Realm(安全域),Realm可以大约明了为灵活数据的汇集,DV通过realm的安插来钦赐用户是还是不是能够访问Realm爱抚的数据,假若在DV中没有给访问权限,尽管是sysdba也无权访问受Realm爱抚的数目,那是DV的基本功用,但不是本文的机要。

DV还有一个很关键的成效,Command
Rules,正是足以按一定的论断标准,允许或堵住数据库用户执行DDL、DML以及DCL命令,而且对特权用户,包罗sysdba都灵验。那一个效应正好能够满意大家限制dba的急需。

图片 1

世家假若想详细摸底DV的机能,能够访问Oracle官网:http://www.oracle.com/technetwork/database/options/database-vault/index-085211.html

Oracle Database
Vault最低帮助的数据库版本是9.2.0.8,早期是单独的2个安装包。从11g始发,Oracle的数据库安装介质中富含了这几个组件,想要使用这一个组件的用户须求在装置时勾选Database
Vault选项。除了安装相关的软件组件,还亟需在创设数据库时,成立连锁的数据库对象。

Database
Vault能够使用相关的蕴藏进程来完成命令行格局的布局、管理,也得以经过web管理界面来治本,在早期,必须安装EM,才能利用web管理界面,从11gHighlander2起,数据库自带的dbcontrol也得以进行web界面包车型地铁田管了。

除去前方讲到的Realm和Command
Rules,还有两个概念要介绍一下,三个是Factor(认证因子),另一个是Rule
sets(规则集)。

Factor(认证因子)正是足以用来开始展览标准化判断的成分,比如客户端主机名,客户端IP等等,Oracle内置了一些常用的Factor,用户也得以协调成立Factor,Factor能够是3个表明式,也能够是多少个囤积进度的再次回到值。

Rule
Sets简单说便是衡量准则的聚合,类似SQL的where之后的判定标准,当规则集的判定标准再次来到为true时,DV允许用户访问数据或施行一定的命令。Rule
sets中的Rule可以引用Factor做判定。

Oracle Database Vault简介

咱俩要商讨的是Oracle数据库的安全组件之一: Oracle Database
Vault(DV),它的重庆大学作用是保卫安全敏感数据和天职分开。

DV爱慕敏感数据首要通过Realm(安全域),Realm能够简简单单精晓为灵活数据的聚众,DV通过realm的配备来内定用户是或不是能够访问Realm爱慕的多少,假设在DV中尚无给访问权限,就算是sysdba也无权访问受Realm尊崇的数据,这是DV的着力功用,但不是本文的首要。

DV还有二个很要紧的遵从,Command
Rules,正是足以按一定的衡量圭表,允许或堵住数据库用户执行DDL、DML以及DCL命令,而且对特权用户,包蕴sysdba都使得。那几个功能正好能够知足大家限制dba的要求。

图片 2

世家借使想详细精晓DV的功效,能够访问Oracle官网:http://www.oracle.com/technetwork/database/options/database-vault/index-085211.html

Oracle Database
Vault最低帮衬的数据库版本是9.2.0.8,早期是单身的三个安装包。从11g起来,Oracle的数据库安装介质中包括了那些组件,想要使用这么些组件的用户供给在设置时勾选Database
Vault选项。除了设置相关的软件组件,还需求在开创数据库时,成立连锁的数据库对象。

Database
Vault能够利用相关的仓库储存进程来落到实处命令行形式的布署、管理,也可以通过web管理界面来保管,在先前时代,必须安装EM,才能使用web管理界面,从11g昂Cora2起,数据库自带的dbcontrol也足以拓展web界面包车型客车管制了。

除了那么些之外前方讲到的Realm和Command
Rules,还有八个概念要介绍一下,2个是Factor(认证因子),另1个是Rule
sets(规则集)。

Factor(认证因子)正是足以用来开始展览标准判断的要素,比如客户端主机名,客户端IP等等,Oracle内置了某个常用的Factor,用户也能够团结创办Factor,Factor能够是3个表明式,也得以是叁个存款和储蓄进程的重返值。

Rule
Sets简单说正是判定标准的集结,类似SQL的where之后的论断标准,当规则集的评定准则重返为true时,DV允许用户访问数据或实行一定的下令。Rule
sets中的Rule能够引用Factor做判断。

示范1:只同意在非业务时间实施drop命令

这一个例子是最简便的,不供给利用Factor,只行使Rule Sets和Command
Rules就能够形成。大家用数据库用户test来演示:

登录DV的军管页面:

图片 3

创立三个Rule Set,名字叫”Can not drop table in business time”,选拔Any
True,意思是说规则集中的条条框框(测量圭臬)任何3个为True,规则集判断结果就为True。其实All
True就一定于and,Any True就一定于or

图片 4

图片 5

那些RULE也很好通晓,正是判定当前时刻是或不是为作业时间,在那里,为了便利做尝试,把作业时间概念为11:45~11:55,这么些规则集判断当前时刻,借使当明日子不在业务时间内,规则集重返True。

然后制造Command Rule,如下图:

图片 6

其一Command Rule的意趣正是钦点的Rule Set 再次回到True时,允许drop
test用户下的表,不然就是是sysdba或表的owner也无权drop table。

效果:

图片 7

图片 8

其余大家想控制的Alter Table等Command Rule的安装格局类似。

演示1:只允许在非业务时间执行drop命令

其一例子是最简便易行的,不须要动用Factor,只行使Rule Sets和Command
Rules就足以做到。我们用数据库用户test来演示:

签到DV的管制页面:

图片 9

创造三个Rule Set,名字叫”Can not drop table in business time”,采纳Any
True,意思是说规则集中的条条框框(度量圭表)任何三个为True,规则集判断结果就为True。其实All
True就相当于and,Any True就一定于or

图片 10

图片 11

那三个RULE也很好领会,正是判断当前时光是或不是为业务时间,在那里,为了方便做试验,把业务时间概念为11:45~11:55,这么些规则集判断当前岁月,即使当前岁月不在业务时间内,规则集再次来到True。

然后创制Command Rule,如下图:

图片 12

其一Command Rule的情致就是点名的Rule Set 再次回到True时,允许drop
test用户下的表,不然正是是sysdba或表的owner也无权drop table。

效果:

图片 13

图片 14

此外大家想操纵的Alter Table等Command Rule的安装方法类似。

实例2:只同意用户选取一定工具(应用)登录数据库

实际工作中,我们日常遇上那样的情景:应用开发人士都有使用用户的口令,他们得以任意用SQL*PLUS或PL/SQL
Developer那样的工具连接到生产库上,要是权且搞混了生产库和测试库,就大概有正剧发生。最佳的化解办法就是限量使用用户所用的工具,应该只允许中间件以那几个用户连接,别的工具都不容许连接。

本条例子会用到Factor,首先大家创造三个Factor,取用户会话的Module:

图片 15

用SQL*PLUS登录数据库,验证那么些Factor取出的值:

图片 16

引用Factor的方法就是DVF.F$+Factor
name,在Linux本机登录,Module正是下面展现的那么,在windows上长途登录,Module的值是“SQLPLUS.EXE”。

上面创造Rule Set,名字叫“Limit SQL*PLUS“,

图片 17

注意是“Any True”

创建RULE:

图片 18

创建Command Rule:

图片 19

按部就班那种规则,除了SYS,SYSTEM,DV_MANAGERAV4之外的用户,不管是当地依旧长途,都无法用SQL*PLUS登录。

图片 20

用SQL Developer登录常常:

图片 21

实例2:只允许用户使用一定工具(应用)登录数据库

其实工作中,大家平常境遇这么的气象:应用开发人员都有应用用户的口令,他们能够任意用SQL*PLUS或PL/SQL
Developer那样的工具连接到生产库上,假若暂且搞混了生产库和测试库,就大概有悲剧产生。最佳的缓解措施便是限制使用用户所用的工具,应该只同意中间件以那几个用户连接,其余工具都区别意连接。

其一例子会用到Factor,首先大家成立一个Factor,取用户会话的Module:

图片 22

用SQL*PLUS登录数据库,验证那么些Factor取出的值:

图片 23

引用Factor的法子正是DVF.F$+Factor
name,在Linux本机登录,Module便是地点展现的那样,在windows上远程登录,Module的值是“SQLPLUS.EXE”。

上边创立Rule Set,名字叫“Limit SQL*PLUS“,

图片 24

注意是“Any True”

创建RULE:

图片 25

创建Command Rule:

图片 26

遵守那种规则,除了SYS,SYSTEM,DV_MANAGE冠道之外的用户,不管是本土依旧长途,都无法用SQL*PLUS登录。

图片 27

用SQL Developer登录不荒谬:

图片 28

实例3:使用Dual Key安全作用

实际情形中,大家盼望DBA服从制度,比如在修改表结构从前,通告OGG相关人。大概为了充实安全性,必要DBA做的显要操作,必须得到CEO的批准。DV能够应用Dual
Key功用满意那种须要。

简易说,大家能够写2个储存进度,判断流程中必要布告的人是或不是在线,假使在线,才允许实施相应的操作。而十分须求被通报的人,只要拥有connect数据库的权杖就行,他(她)的登录动作就改成了一种授权或被公告后的承认。

具体步骤:

首先给DV的总指挥授权,让用户能够访问字典视图和编排存款和储蓄进度:

SQL> GRANT CREATE PROCEDURE TO dv_manager;

Grant succeeded.

SQL> GRANT SELECT ON V_$SESSION TO dv_manager;

Grant succeeded.

咱们只要授权的用户是“BOSS“,而进行操作的用户是”TEST“,相应的判定BOSS是不是在线的积存进程如下:

CREATE OR REPLACE FUNCTION check_boss_logged_in

return varchar2

authid definer as

v_session_number number := 0;

v_allow varchar2(10) := ‘TRUE’;

v_deny varchar2(10) := ‘FALSE’;

BEGIN

SELECT COUNT(*) INTO v_session_number

FROM SYS.V_$SESSION

WHERE USERNAME = ‘BOSS’;

IF v_session_number > 0

THEN RETURN v_allow;

ELSE

RETURN v_deny;

END IF;

END check_boss_logged_in;

/

采用DV管理员创立那么些Function,然后方授助权给DVSYS:

SQL>GRANT EXECUTE ON check_boss_logged_in to DVSYS;

创建Rule Set:

Name:Dual Key

Evaluation Options:Any True

规则如下:

图片 29

创建Command Rule:

图片 30

其一Command Rule达到的功效是,假诺test用户想alter
owner为test的table,必须boss用户同时在线,不然报错,无权力。如果是其余人修改test用户下的表,不受这几个界定。

最终的效益:

BOSS用户没有在线,那么TEST用户alter table报错

图片 31

除非在test用户通报了boss用户,也许根据流程,获得了boss用户的准许,boss用户用登录数据库那一个动作来代表承认,test用户才得以修改表结构:

图片 32

实例3:使用Dual Key安全成效

实际景况中,大家目的在于DBA遵循制度,比如在修改表结构此前,公告OGG相关人。或许为了充实安全性,须求DBA做的基本点操作,必须得到COO的特许。DV能够应用Dual
Key功能满足那种要求。

简简单单说,大家能够写一个囤积进程,判断流程中须要通告的人是或不是在线,固然在线,才允许实施相应的操作。而极度部必要要被打招呼的人,只要拥有connect数据库的权位就行,他(她)的报到动作就改成了一种授权或被通报后的肯定。

具体步骤:

首先给DV的管理员授权,让用户可以访问字典视图和编辑存款和储蓄进程:

SQL> GRANT CREATE PROCEDURE TO dv_manager;

Grant succeeded.

SQL> GRANT SELECT ON V_$SESSION TO dv_manager;

Grant succeeded.

大家只要授权的用户是“BOSS“,而实施操作的用户是”TEST“,相应的论断BOSS是不是在线的囤积进程如下:

CREATE OR REPLACE FUNCTION check_boss_logged_in

return varchar2

authid definer as

v_session_number number := 0;

v_allow varchar2(10) := ‘TRUE’;

v_deny varchar2(10) := ‘FALSE’;

BEGIN

SELECT COUNT(*) INTO v_session_number

FROM SYS.V_$SESSION

WHERE USERNAME = ‘BOSS’;

IF v_session_number > 0

THEN RETURN v_allow;

ELSE

RETURN v_deny;

END IF;

END check_boss_logged_in;

/

动用DV管理员成立这几个Function,然后方授助权给DVSYS:

SQL>GRANT EXECUTE ON check_boss_logged_in to DVSYS;

创建Rule Set:

Name:Dual Key

Evaluation Options:Any True

平整如下:

图片 33

创建Command Rule:

图片 34

这么些Command Rule达到的职能是,要是test用户想alter
owner为test的table,必须boss用户同时在线,不然报错,无权力。假若是其余人修改test用户下的表,不受这一个界定。

最终的效用:

BOSS用户没有在线,那么TEST用户alter table报错

图片 35

唯有在test用户通报了boss用户,大概根据流程,得到了boss用户的许可,boss用户用登录数据库这一个动作来表示认可,test用户才方可修改表结构:

图片 36

Your Comments

近期评论

    功能


    网站地图xml地图