關(guān)于數(shù)據(jù)庫(kù)權(quán)限設(shè)置深入剖析
一、必要性
隨著近年來數(shù)據(jù)庫(kù)技術(shù)的深入發(fā)展,以Unix平臺(tái)為代表的Informix Dynamic Server和以NT平臺(tái)為代表的MS SQL Server得到了廣泛的應(yīng)用。在一個(gè)公共的環(huán)境中,存在大量的用戶操作,有數(shù)據(jù)庫(kù)管理員,主要做數(shù)據(jù)管理維護(hù)工作,也有普通用戶,做一定授權(quán)下的數(shù)據(jù)修改和數(shù)據(jù)查詢。我們知道,每個(gè)數(shù)據(jù)庫(kù)服務(wù)器上可建立多個(gè)不同類別的數(shù)據(jù)庫(kù),而每個(gè)數(shù)據(jù)庫(kù)中也可以生成多個(gè)存儲(chǔ)過程、表、視圖等。如何保證數(shù)據(jù)的安全可靠,防止非法存取所造成的破壞和數(shù)據(jù)泄露,如何進(jìn)行權(quán)限的劃分和設(shè)置,這是安全管理的重點(diǎn),也是數(shù)據(jù)庫(kù)可靠運(yùn)行的保證。本文以Informix Dynamic Server為例做詳細(xì)說明。
二、權(quán)限的劃分
Informix Dynamic Server使用了三級(jí)權(quán)限來保證數(shù)據(jù)的安全性,它們分別是數(shù)據(jù)庫(kù)級(jí)權(quán)限、表級(jí)權(quán)限和字段級(jí)權(quán)限,具體為:
1.數(shù)據(jù)庫(kù)級(jí)權(quán)限
包括Connect、Resource、DBA三種類別,其中:
Connect:最低級(jí),僅允許用戶訪問數(shù)據(jù)庫(kù)中的表和索引,但不能創(chuàng)建和刪除它們;
Resource: 建立在Connect之上,允許用戶在數(shù)據(jù)庫(kù)中創(chuàng)建、刪除表和索引;
DBA:即數(shù)據(jù)庫(kù)管理員,擁有數(shù)據(jù)庫(kù)管理的全部權(quán)限,包括訪問數(shù)據(jù)庫(kù)表、創(chuàng)建和刪除索引、修改表結(jié)構(gòu)、授予數(shù)據(jù)庫(kù)權(quán)限給其他用戶等。
2.表/字段(視圖)級(jí)權(quán)限
指允許進(jìn)行何種具體操作,主要包括:
Select: 從表或字段中檢索信息;
Update: 修改指定字段的值;
Insert: 向數(shù)據(jù)庫(kù)表中添加記錄;
Delete: 從數(shù)據(jù)庫(kù)表中刪除記錄;
Index: 為一個(gè)數(shù)據(jù)庫(kù)表創(chuàng)建索引;
Alter: 增加、刪除數(shù)據(jù)庫(kù)表中的字段,或修改字段的數(shù)據(jù)類型;
All: 以上所有權(quán)限。
三、權(quán)限的設(shè)置
Informix Dynamic Server通過一系列SQL控制語(yǔ)句來實(shí)施對(duì)用戶權(quán)限的設(shè)置,使得不同的用戶只能在各自限定的范圍內(nèi)存取數(shù)據(jù)。以下命令格式中Grant表示授予權(quán)限,Revoke表示撤消權(quán)限,User-List指用戶名列表,多個(gè)用戶以逗號(hào)(,)分隔,對(duì)大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)而言,PUBLIC代表所有用戶。
1.對(duì)于數(shù)據(jù)庫(kù),其格式為:
Grant { DBA Resource Connect } to { PUBLIC User-List };
Revoke { DBA Resource Connect } from { PUBLIC User-List }
缺省情況下,建立數(shù)據(jù)庫(kù)的用戶就是數(shù)據(jù)庫(kù)管理員(DBA),除其本身和Informix用戶外,其它用戶不對(duì)該數(shù)據(jù)庫(kù)擁有任何權(quán)限,因此也就不能進(jìn)行任何形式的訪問。數(shù)據(jù)庫(kù)管理員可根據(jù)其他用戶的業(yè)務(wù)分工、操作范圍授予或撤消DBA、Resource、Connect三種不同的權(quán)限。
2.對(duì)于表及視圖,其格式為:
Grant TAB-PRI on [ tab_name view_name ] to { PUBLIC User-List };
Revoke TAB-PRI on [ tab_name view_name ] from { PUBLIC User-List }
其中TAB_PRI表示select、update、delete等操作權(quán)限,tab_name、 view_name分別代表數(shù)據(jù)庫(kù)表名和視圖名。
缺省情況下,新建的數(shù)據(jù)庫(kù)表和視圖對(duì)能夠訪問該數(shù)據(jù)庫(kù)的用戶賦予了除alter外的所有權(quán)限,有時(shí)這是比較危險(xiǎn)的,比如對(duì)普通查詢用戶,應(yīng)該有針對(duì)性地對(duì)權(quán)限重新定義。此外,對(duì)一些重要的表或視圖,為防止敏感信息泄露,也應(yīng)該重新授權(quán)。具體做法是:先用Revoke命令撤消原來所有的權(quán)限,再用Grant授予新的權(quán)限。
3.對(duì)于字段:
字段級(jí)權(quán)限的授予和撤消同表級(jí)的命令方式基本一致,所不同的僅在于必須把賦予權(quán)限的字段名列在操作權(quán)限如select、insert、update等之后,通過這樣細(xì)化可以實(shí)施更有效的數(shù)據(jù)保護(hù)。
4.對(duì)于存儲(chǔ)過程:
存儲(chǔ)過程由SQL語(yǔ)句編寫,存放于數(shù)據(jù)庫(kù)中,常與觸發(fā)器配合,可以對(duì)數(shù)據(jù)進(jìn)行批量處理,使用非常方便。但如果授權(quán)不嚴(yán)格,將導(dǎo)致非法修改現(xiàn)有數(shù)據(jù)。其權(quán)限設(shè)置格式為:
Grant Execute on proc_name to { PUBLIC User-List };
Revoke Execute on proc_name from { PUBLIC User-List }
其中proc_name表示存儲(chǔ)過程名。
四、角色(role)的使用
在數(shù)據(jù)庫(kù)用戶的管理中,我們可以根據(jù)用戶對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的需要情況把用戶分為幾組,每一組用戶可以作為一個(gè)角色,每個(gè)用戶就是角色的成員。通過使用角色,數(shù)據(jù)庫(kù)系統(tǒng)更容易進(jìn)行安全性管理,因?yàn)橐坏┠硞€(gè)用戶屬于某一個(gè)角色,對(duì)權(quán)限的授予和撤消只需針對(duì)角色便可。具體使用方法為:
1.創(chuàng)建角色:
Create Role role_name1
其中role_name1表示角色名。
2.劃分用戶角色:
即將相關(guān)用戶加入到角色中使之成為角色的成員。
Grant role_name1 to { User-List Role_List }
其中Role_List表示角色列表,因?yàn)橐粋€(gè)角色可以是另外一個(gè)或一組角色的成員。
3.授權(quán)角色權(quán)限:
同授權(quán)用戶權(quán)限的方法相同,但只能對(duì)表級(jí)和字段級(jí)權(quán)限有效,不能授予數(shù)據(jù)庫(kù)級(jí)權(quán)限給一個(gè)角色。
4.激活角色:
執(zhí)行以下語(yǔ)句,使以上定義的角色成為可用狀態(tài):
Set Role role_name1
五、結(jié)束語(yǔ)
以Internet技術(shù)為代表的網(wǎng)絡(luò)業(yè)務(wù)的迅猛增長(zhǎng)為數(shù)據(jù)庫(kù)應(yīng)用開辟了新的發(fā)展空間,同時(shí)也對(duì)數(shù)據(jù)庫(kù)的安全性管理提出了更高的要求,網(wǎng)絡(luò)的開放性導(dǎo)致非法存取常有發(fā)生,因而深刻領(lǐng)會(huì)和理解數(shù)據(jù)庫(kù)權(quán)限的具體設(shè)置方法,結(jié)合自身實(shí)際應(yīng)用,制定出一套完整的安全保護(hù)策略具有重要意義。Informix Dynamic Server對(duì)以上控制語(yǔ)句的使用除角色外,嚴(yán)格執(zhí)行SQL ANSI 標(biāo)準(zhǔn),因此對(duì)建立在NT平臺(tái)上的MS SQL Server同樣有效。
CSDN聲明:此消息系轉(zhuǎn)載自CSDN合作媒體,其中細(xì)節(jié)未經(jīng)CSDN證實(shí),特此聲明
評(píng)論