应用技艺花招限制DBA的险象环生操作管理制度

 

概述

不问可知,在事情高峰期,有些针对Oracle数据库的操作具备非常高的危害,比如修改表结构、修改实例参数等等,如若未有足够评估和询问那一个操作所带动的震慑,那些操作相当大概会形成故障,轻则导致应用错误,重则导致数据库服务不可用。

其余,在非业务高峰期,某个看似风险比极小的操作也恐怕会招致严重后果,比方不按管理流程修改表结构,假使那几个表正好是Oracle
戈尔德enGate复制组的一有的,修改了源端结构而尚未文告OGG的连带职员,未有在目的端进行同样的操作,而DDL复制功用也未有张开的情景下,就会促成复制进度故障,导致数据不1致,在少数应用场景下,那也是很要紧的生产事故。

日前,古板的答疑方式或许重申解和处理理,不管是客户照旧服务商都在相连重申制度和行业内部,希望从制度建设和程序猿的差事素养上入手,幸免DBA的那种自由的险恶操作。

然则,处理制度终究是“软性”的,把希望寄托在程序员自觉地遵守制度和“自己修养”上,并不能够担保万无一失。

Oracle提供的安全组件,能够用来限制、阻断这种自由的朝不保夕操作,用才能花招保险管理制度被听从。

Oracle Database Vault简介

咱俩要探讨的是Oracle数据库的安全组件之1: Oracle Database
Vault(DV),它的入眼功用是保卫安全敏感数据和天职责开。

DV保养敏感数据首要透过Realm(安全域),Realm能够大约通晓为机警数据的聚众,DV通过realm的配置来钦命用户是还是不是能够访问Realm尊敬的数据,假使在DV中未有给访问权限,即便是sysdba也无权访问受Realm珍贵的数目,那是DV的大旨作用,但不是本文的主要。

DV还有3个很关键的作用,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最低援助的数据库版本是九.2.0.八,早期是单独的二个安装包。从1一g上马,Oracle的数据库安装介质中含有了那么些组件,想要使用这么些组件的用户必要在安装时勾选Database
Vault选项。除了安装相关的软件组件,还索要在创造数据库时,成立连锁的数据库对象。

Database
Vault可以采纳有关的仓库储存进度来促成命令行情势的安插、管理,也能够经过web管理分界面来保管,在先前时代,必须安装EM,手艺使用web管理分界面,从1一g本田CR-V2起,数据库自带的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做判定。

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

本条例子是最轻巧易行的,不需求采纳Factor,只行使Rule Sets和Command
Rules就可以成功。大家用数据库用户test来演示:

登六DV的管住页面:

管理制度 2

始建三个Rule Set,名字叫”Can not drop table in business time”,接纳Any
True,意思是说规则集中的条条框框(剖断规范)任何贰个为True,规则集推断结果就为True。其实All
True就一定于and,Any True就一定于or

管理制度 3

管理制度 4

那四个RULE也很好掌握,正是剖断当前时间是还是不是为作业时间,在此地,为了方便抓牢验,把业务时间概念为1一:四伍~1一:5五,这些规则集剖断当前时间,要是当前时刻不在业务时间内,规则集再次回到True。

下一场创设Command Rule,如下图:

管理制度 5

其1Command Rule的情趣正是钦赐的Rule Set 重临True时,允许drop
test用户下的表,不然便是是sysdba或表的owner也无权drop table。

效果:

管理制度 6

管理制度 7

任何大家想调节的Alter Table等Command Rule的装置情势类似。

实例二:只同意用户使用一定工具(应用)登6数据库

实则工作中,我们平时遇上那样的状态:应用开垦职员都有利用用户的口令,他们得以自由用SQL*PLUS或PL/SQL
Developer那样的工具连接到生产库上,假如暂且搞混了生产库和测试库,就或许有喜剧发生。最棒的消除措施正是限制使用用户所用的工具,应该只同意中间件以这么些用户连接,别的工具都不容许连接。

那么些事例会用到Factor,首先大家成立三个Factor,取用户会话的Module:

管理制度 8

用SQL*PLUS登六数据库,验证那几个Factor收取的值:

管理制度 9

引用Factor的格局正是DVF.F$+Factor
name,在Linux本机登入,Module正是上边展现的那么,在windows上长途登入,Module的值是“SQLPLUS.EXE”。

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

管理制度 10

注意是“Any True”

创建RULE:

管理制度 11

创建Command Rule:

管理制度 12

遵照那种规则,除了SYS,SYSTEM,DV_MANAGE奇骏之外的用户,不管是地点依旧长途,都不能够用SQL*PLUS登录。

管理制度 13

用SQL Developer登入符合规律:

管理制度 14

实例三:使用Dual Key安全功效

切实景况中,我们希望DBA遵守制度,例如在修改表结构此前,文告OGG相关人。或然为了扩充安全性,必要DBA做的显要操作,必须取得COO的批准。DV能够动用Dual
Key功用满意那种必要。

简易说,大家能够写2个囤积进程,决断流程中要求公告的人是还是不是在线,就算在线,才允许推行相应的操作。而非常供给被打招呼的人,只要具备connect数据库的权能就行,他(她)的报到动作就形成了1种授权或被通报后的肯定。

具体步骤:

先是给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

平整如下:

管理制度 15

创建Command Rule:

管理制度 16

以此Command Rule达到的功力是,纵然test用户想alter
owner为test的table,必须boss用户同时在线,不然报错,无权力。若是是别的人修改test用户下的表,不受那几个限制。

最后的效益:

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

管理制度 17

唯有在test用户通报了boss用户,或许遵照流程,得到了boss用户的准许,boss用户用登六数据库那些动作来表示确认,test用户才得以修改表结构:

管理制度 18

发表评论

电子邮件地址不会被公开。 必填项已用*标注