95992828九五至尊2

选拔技术手段限制DBA的危急操作

三月 25th, 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的急需。

九五至尊ii 1

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

Oracle Database
Vault最低支持的数据库版本是9.2.0.8,早期是单独的1个安装包。从11g始于,Oracle的数据库安装介质中含有了那一个组件,想要使用那个组件的用户需求在装置时勾选Database
Vault选项。除了安装相关的软件组件,还需求在开立数据库时,创设连锁的数据库对象。

Database
Vault能够选用有关的囤积进程来达成命令行格局的配备、管理,也得以通过web管理界面来治本,在中期,必须安装EM,才能采用web管理界面,从11g兰德酷路泽2起,数据库自带的dbcontrol也得以拓展web界面包车型地铁保管了。

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

Factor(认证因子)就是能够用来开始展览规范判断的要素,比如客户端主机名,客户端IP等等,Oracle内置了有的常用的Factor,用户也能够友善创造Factor,Factor能够是三个表明式,也得以是一个仓库储存进度的再次回到值。

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还有2个很重庆大学的功力,Command
Rules,就是能够按自然的论断标准,允许或堵住数据库用户执行DDL、DML以及DCL命令,而且对特权用户,包含sysdba都有效。这些功用正好能够满足我们限制dba的要求。

九五至尊ii 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锐界2起,数据库自带的dbcontrol也足以拓展web界面包车型客车军管了。

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

Factor(认证因子)正是能够用于开始展览标准化判断的成分,比如客户端主机名,客户端IP等等,Oracle内置了一部分常用的Factor,用户也得以友善创造Factor,Factor能够是三个表达式,也足以是四个仓库储存过程的重临值。

Rule
Sets简单说正是判定标准的联谊,类似SQL的where之后的论断标准,当规则集的衡量规范重临为true时,DV允许用户访问数据或施行一定的指令。Rule
sets中的Rule能够引用Factor做判断。

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

以此事例是最简便易行的,不需求利用Factor,只利用Rule Sets和Command
Rules就足以做到。大家用数据库用户test来演示:

报到DV的军管页面:

九五至尊ii 3

创办2个Rule Set,名字叫”Can not drop table in business time”,选用Any
True,意思是说规则集中的规则(测量尺度)任何1个为True,规则集判断结果就为True。其实All
True就一定于and,Any True就一定于or

九五至尊ii 4

九五至尊ii 5

那五个RULE也很好领会,正是判断当前时光是不是为业务时间,在此间,为了便利做试验,把工时概念为11:45~11:55,那些规则集判断当前时光,假若当前岁月不在业务时间内,规则集再次回到True。

接下来创制Command Rule,如下图:

九五至尊ii 6

以此Command Rule的意思就是钦赐的Rule Set 再次来到True时,允许drop
test用户下的表,不然固然是sysdba或表的owner也无权drop table。

效果:

九五至尊ii 7

九五至尊ii 8

任何大家想操纵的Alter Table等Command Rule的装置方法类似。

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

以此事例是最简便易行的,不须要选拔Factor,只行使Rule Sets和Command
Rules就足以做到。大家用数据库用户test来演示:

登录DV的田管页面:

九五至尊ii 9

开创1个Rule Set,名字叫”Can not drop table in business time”,选用Any
True,意思是说规则集中的平整(测量规范)任何2个为True,规则集判断结果就为True。其实All
True就一定于and,Any True就一定于or

九五至尊ii 10

九五至尊ii 11

那五个RULE也很好理解,正是判断当前几日子是否为工时,在此间,为了有利于压实验,把工时概念为11:45~11:55,那个规则集判断当今日子,假若当前光阴不在业务时间内,规则集重回True。

然后创制Command Rule,如下图:

九五至尊ii 12

本条Command Rule的意趣就是钦赐的Rule Set 重回True时,允许drop
test用户下的表,否则固然是sysdba或表的owner也无权drop table。

效果:

九五至尊ii 13

九五至尊ii 14

任何我们想控制的Alter Table等Command Rule的设置方法类似。

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

实在工作中,大家平日遭遇这么的意况:应用开发人员都有使用用户的口令,他们得以无限制用SQL*PLUS或PL/SQL
Developer那样的工具连接到生产库上,尽管一时搞混了生产库和测试库,就也许有正剧产生。最棒的缓解方法正是限制使用用户所用的工具,应该只同意中间件以这些用户连接,其余工具都分歧意连接。

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

九五至尊ii 15

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

九五至尊ii 16

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

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

九五至尊ii 17

注意是“Any True”

创建RULE:

九五至尊ii 18

创建Command Rule:

九五至尊ii 19

依照这种规则,除了SYS,SYSTEM,DV_MANAGE中华V之外的用户,不管是地点依然长途,都不可能用SQL*九五至尊ii,PLUS登录。

九五至尊ii 20

用SQL Developer登录平常:

九五至尊ii 21

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

实在工作中,大家平时遭受这么的气象:应用开发人士都有接纳用户的口令,他们能够随意用SQL*PLUS或PL/SQL
Developer那样的工具连接到生产库上,要是一时半刻搞混了生产库和测试库,就大概有喜剧产生。最佳的化解情势就是限量使用用户所用的工具,应该只允许中间件以那些用户连接,其他工具都不相同意连接。

这一个事例会用到Factor,首先大家创立1个Factor,取用户会话的Module:

九五至尊ii 22

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

九五至尊ii 23

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

上面成立Rule Set,名字叫“Limit SQL*PLUS“,

九五至尊ii 24

注意是“Any True”

创建RULE:

九五至尊ii 25

创建Command Rule:

九五至尊ii 26

安分守纪那种规则,除了SYS,SYSTEM,DV_MANAGECRUISER之外的用户,不管是当地依旧长途,都不能够用SQL*PLUS登录。

九五至尊ii 27

用SQL Developer登录寻常:

九五至尊ii 28

实例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

平整如下:

九五至尊ii 29

创建Command Rule:

九五至尊ii 30

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

说到底的效果:

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

九五至尊ii 31

除非在test用户通报了boss用户,或许依据流程,拿到了boss用户的许可,boss用户用登录数据库那些动作来代表承认,test用户才足以修改表结构:

九五至尊ii 32

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

实际处境中,大家愿意DBA遵循制度,比如在修改表结构以前,通告OGG相关人。可能为了增添安全性,供给DBA做的显要操作,必须获得老董的认同。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

规则如下:

九五至尊ii 33

创建Command Rule:

九五至尊ii 34

本条Command Rule达到的效益是,借使test用户想alter
owner为test的table,必须boss用户同时在线,不然报错,无权力。要是是其余人修改test用户下的表,不受那一个限制。

终极的功能:

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

九五至尊ii 35

只有在test用户通报了boss用户,恐怕依据流程,获得了boss用户的认同,boss用户用登录数据库这么些动作来代表承认,test用户才得以修改表结构:

九五至尊ii 36

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图