在數(shù)據(jù)庫開辟過程中,假定研發(fā)人員良多,進(jìn)行相干的權(quán)限治理是很是首要的工作,可以大年夜大年夜削減對(duì)數(shù)據(jù)庫的誤把持。
某天,公司出產(chǎn)環(huán)境中的某一個(gè)產(chǎn)品庫被研發(fā)人員truncate一張很是首要的表,研發(fā)總監(jiān)知道后很是生氣,要求嚴(yán)格節(jié)制研發(fā)人員的權(quán)限標(biāo)題問題,每小我用本身的用戶名稱把持?jǐn)?shù)據(jù)庫,審計(jì)每小我的把持權(quán)限,將每個(gè)研發(fā)人員對(duì)出產(chǎn)庫的把持進(jìn)行記實(shí)。
在這類環(huán)境下,需要嚴(yán)格節(jié)制研發(fā)人員的DDL權(quán)限,限制用戶對(duì)數(shù)據(jù)庫進(jìn)行DDL等把持。假定純真的進(jìn)行限制,可以經(jīng)由過程觸發(fā)器來進(jìn)行節(jié)制,語句以下:
CREATEORREPLACETRIGGERDDL_RESTRICT
BEFOREDROPORCREATEORTRUNCATEORALTERONDATABASE
DECLARE
BEGIN
IFORA_SYSEVENT()IN('DROP','CREATE','ALTER','TRUNCATE')
ANDORA_DICT_OBJ_OWNER()IN('BUPTDREAM'AND
ORA_DICT_OBJ_TYPEIN('TABLE') AND
ORA_DICT_OBJ_NAME()NOTLIKE'%a%'AND
ORA_DICT_OBJ_NAME()NOTLIKE'%b%'AND
ORA_DICT_OBJ_NAME()NOTLIKE'%c%'THEN
RAISE_APPLICATION_ERROR(NUM => -20000,
MSG =>'避免'|| ORA_SYSEVENT() ||' '||
ORA_DICT_OBJ_OWNER() ||'用戶下的'||
ORA_DICT_OBJ_NAME() ||'表,請(qǐng)與DBA聯(lián)系');
ENDIF;
END;
經(jīng)由過程觸發(fā)器可以節(jié)制開辟人員對(duì)出產(chǎn)庫的DDL把持,假定想要避免delete的DML把持,也能夠用觸發(fā)器來實(shí)現(xiàn)。
在Oracle數(shù)據(jù)庫中對(duì)用戶的治理是利用權(quán)限的編制,也就是說,假定直接將出產(chǎn)庫的權(quán)限給某個(gè)用戶,我們必需要已授權(quán)的表的名稱前鍵進(jìn)該表所有者的名稱,所以比較麻煩。
Oracle數(shù)據(jù)庫中同義詞是數(shù)據(jù)庫方案對(duì)象的一個(gè)別號(hào),經(jīng)常常利用于簡(jiǎn)化對(duì)象拜候和進(jìn)步對(duì)象拜候的安然性。在利用同義詞時(shí),Oracle數(shù)據(jù)庫將它翻譯成對(duì)應(yīng)方案對(duì)象的名字。與視圖近似,同義詞其實(shí)不占用實(shí)際存儲(chǔ)空間,只有在數(shù)據(jù)字典中保留了同義詞的定義。在Oracle數(shù)據(jù)庫中的大年夜部門數(shù)據(jù)庫對(duì)象,如表、視圖、同義詞、序列、存儲(chǔ)過程、包等等,數(shù)據(jù)庫治理員都可以按照實(shí)際環(huán)境為他們定義同義詞。
批量成立同義詞的語句以下:
select' create public synonym '|| OBJECT_NAME ||
' for CMAPP_PRODUCTION.'|| OBJECT_NAME ||';'
fromuser_objects
whereobject_typein
('TABLE','VIEW','PROCEDURE','TRIGGER','FUNCTION','PACKAGE');
同義詞賦權(quán)的語句以下:
SELECT'grant select,insert,update,delete on '||
OBJECT_NAME ||' to buptdream;'
FROMUSER_OBJECTS
WHEREOBJECT_TYPE ='TABLE';
SELECT'grant select,insert,update,delete on '|| OBJECT_NAME ||
' to buptdream;'
FROMUSER_OBJECTS
WHEREOBJECT_TYPE ='VIEW';
SELECT'grant EXECUTE on '|| OBJECT_NAME ||' to buptdream;'
FROMUSER_OBJECTS
WHEREOBJECT_TYPE ='PROCEDURE';
SELECT'grant EXECUTE on '|| OBJECT_NAME ||' to buptdream;'
FROMUSER_OBJECTS
WHEREOBJECT_TYPE ='FUNCTION';
SELECT'grant select on '|| OBJECT_NAME ||' to buptdream;'
FROMUSER_OBJECTS
WHEREOBJECT_TYPE ='SEQUENCE';
經(jīng)由過程上述編制,可以節(jié)制研發(fā)人員對(duì)出產(chǎn)庫的把持,一旦權(quán)限被節(jié)制,就大年夜大年夜降落了數(shù)據(jù)庫面對(duì)的風(fēng)險(xiǎn)。在這個(gè)過程中,我們可以采取審計(jì)編制記實(shí)下每個(gè)把持。
在數(shù)據(jù)庫開辟過程中,假定研發(fā)人員良多,進(jìn)行相干的權(quán)限治理是很是首要的工作,可以大年夜大年夜削減對(duì)數(shù)據(jù)庫的誤把持。觸發(fā)器是一個(gè)別例,別的經(jīng)由過程同義詞,可覺得每個(gè)用戶伶仃成立用戶,進(jìn)步研發(fā)人員把持?jǐn)?shù)據(jù)庫時(shí)的專心程度,避免誤把持的產(chǎn)生。
啟明星斗公司數(shù)據(jù)庫審計(jì)專家點(diǎn)評(píng)
本案例比較活潑,且具體描述了權(quán)限節(jié)制編制。從數(shù)據(jù)庫安然的角度來講,除成立杰出的權(quán)限節(jié)制機(jī)制,還要考慮治理上的風(fēng)險(xiǎn)(賬號(hào)共用)及數(shù)據(jù)庫本身弱點(diǎn)(縫隙操縱等),數(shù)據(jù)庫本身的安然查抄、系統(tǒng)加固、審計(jì)等辦法都很有需要。