來源:互聯網 2008-08-05 07:05:02
評論一、必要性
隨著近年來數據庫技術的深入發展,以Unix平台爲代表的Informix Dynamic Server和以NT平台爲代表的MS SQL Server得到了廣泛的應用。在一個公共的環境中,存在大量的用戶操作,有數據庫管理員,主要做數據管理維護工作,也有普通用戶,做一定授權下的數據修改和數據查詢。我們知道,每個數據庫服務器上可建立多個不同類別的數據庫,而每個數據庫中也可以生成多個存儲過程、表、視圖等。如何保證數據的安全可靠,防止非法存取所造成的破壞和數據泄露,如何進行權限的劃分和設置,這是安全管理的重點,也是數據庫可靠運行的保證。本文以Informix Dynamic Server爲例做詳細說明。
二、權限的劃分
Informix Dynamic Server使用了三級權限來保證數據的安全性,它們分別是數據庫級權限、表級權限和字段級權限,具體爲:
1.數據庫級權限
包括Connect、Resource、DBA三種類別,其中:
Connect:最低級,僅允許用戶訪問數據庫中的表和索引,但不能創建和刪除它們;
Resource: 建立在Connect之上,允許用戶在數據庫中創建、刪除表和索引;
DBA:即數據庫管理員,擁有數據庫管理的全部權限,包括訪問數據庫表、創建和刪除索引、修改表結構、授予數據庫權限給其他用戶等。
2.表/字段(視圖)級權限
指允許進行何種具體操作,主要包括:
Select: 從表或字段中檢索信息;
Update: 修改指定字段的值;
Insert: 向數據庫表中添加記錄;
Delete: 從數據庫表中刪除記錄;
Index: 爲一個數據庫表創建索引;
Alter: 增加、刪除數據庫表中的字段,或修改字段的數據類型;
All: 以上所有權限。
三、權限的設置
Informix Dynamic Server通過一系列SQL控制語句來實施對用戶權限的設置,使得不同的用戶只能在各自限定的範圍內存取數據。以下命令格式中Grant表示授予權限,Revoke表示撤消權限,User-List指用戶名列表,多個用戶以逗號(,)分隔,對大多數數據庫系統而言,PUBLIC代表所有用戶。
1.對于數據庫,其格式爲:
Grant { DBA Resource Connect } to { PUBLIC User-List };
Revoke { DBA Resource Connect } from { PUBLIC User-List }
缺省情況下,建立數據庫的用戶就是數據庫管理員(DBA),除其本身和Informix用戶外,其它用戶不對該數據庫擁有任何權限,因此也就不能進行任何形式的訪問。數據庫管理員可根據其他用戶的業務分工、操作範圍授予或撤消DBA、Resource、Connect三種不同的權限。
2.對于表及視圖,其格式爲:
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等操作權限,tab_name、 view_name分別代表數據庫表名和視圖名。
缺省情況下,新建的數據庫表和視圖對能夠訪問該數據庫的用戶賦予了除alter外的所有權限,有時這是比較危險的,比如對普通查詢用戶,應該有針對性地對權限重新定義。此外,對一些重要的表或視圖,爲防止敏感信息泄露,也應該重新授權。具體做法是:先用Revoke命令撤消原來所有的權限,再用Grant授予新的權限。
3.對于字段:
字段級權限的授予和撤消同表級的命令方式基本一致,所不同的僅在于必須把賦予權限的字段名列在操作權限如select、insert、update等之後,通過這樣細化可以實施更有效的數據保護。
4.對于存儲過程:
存儲過程由SQL語句編寫,存放于數據庫中,常與觸發器配合,可以對數據進行批量處理,使用非常方便。但如果授權不嚴格,將導致非法修改現有數據。其權限設置格式爲:
Grant Execute on proc_name to { PUBLIC User-List };
Revoke Execute on proc_name from { PUBLIC User-List }
其中proc_name表示存儲過程名。
四、角色(role)的使用
在數據庫用戶的管理中,我們可以根據用戶對數據庫數據的需要情況把用戶分爲幾組,每一組用戶可以作爲一個"角色",每個用戶就是角色的成員。通過使用角色,數據庫系統更容易進行安全性管理,因爲一旦某個用戶屬于某一個角色,對權限的授予和撤消只需針對角色便可。具體使用方法爲:
1.創建角色:
Create Role role_name1
其中role_name1表示角色名。
2.劃分用戶角色:
即將相關用戶加入到角色中使之成爲角色的成員。
Grant role_name1 to { User-List Role_List }
其中Role_List表示角色列表,因爲一個角色可以是另外一個或一組角色的成員。
3.授權角色權限:
同授權用戶權限的方法相同,但只能對表級和字段級權限有效,不能授予數據庫級權限給一個角色。
4.激活角色:
執行以下語句,使以上定義的角色成爲可用狀態:
Set Role role_name1
五、結束語
以Internet技術爲代表的網絡業務的迅猛增長爲數據庫應用開辟了新的發展空間,同時也對數據庫的安全性管理提出了更高的要求,網絡的開放性導致非法存取常有發生,因而深刻領會和理解數據庫權限的具體設置方法,結合自身實際應用,制定出一套完整的安全保護策略具有重要意義。Informix Dynamic Server對以上控制語句的使用除角色外,嚴格執行SQL ANSI 標准,因此對建立在NT平台上的MS SQL Server同樣有效。
一、必要性
隨著近年來數據庫技術的深入發展,以Unix平台爲代表的Informix Dynamic Server和以NT平台爲代表的MS SQL Server得到了廣泛的應用。在一個公共的環境中,存在大量的用戶操作,有數據庫管理員,主要做數據管理維護工作,也有普通用戶,做一定授權下的數據修改和數據查詢。我們知道,每個數據庫服務器上可建立多個不同類別的數據庫,而每個數據庫中也可以生成多個存儲過程、表、視圖等。如何保證數據的安全可靠,防止非法存取所造成的破壞和數據泄露,如何進行權限的劃分和設置,這是安全管理的重點,也是數據庫可靠運行的保證。本文以Informix Dynamic Server爲例做詳細說明。
二、權限的劃分
Informix Dynamic Server使用了三級權限來保證數據的安全性,它們分別是數據庫級權限、表級權限和字段級權限,具體爲:
1.數據庫級權限
包括Connect、Resource、DBA三種類別,其中:
Connect:最低級,僅允許用戶訪問數據庫中的表和索引,但不能創建和刪除它們;
Resource: 建立在Connect之上,允許用戶在數據庫中創建、刪除表和索引;
DBA:即數據庫管理員,擁有數據庫管理的全部權限,包括訪問數據庫表、創建和刪除索引、修改表結構、授予數據庫權限給其他用戶等。
2.表/字段(視圖)級權限
指允許進行何種具體操作,主要包括:
Select: 從表或字段中檢索信息;
Update: 修改指定字段的值;
Insert: 向數據庫表中添加記錄;
Delete: 從數據庫表中刪除記錄;
Index: 爲一個數據庫表創建索引;
Alter: 增加、刪除數據庫表中的字段,或修改字段的數據類型;
All: 以上所有權限。
三、權限的設置
Informix Dynamic Server通過一系列SQL控制語句來實施對用戶權限的設置,使得不同的用戶只能在各自限定的範圍內存取數據。以下命令格式中Grant表示授予權限,Revoke表示撤消權限,User-List指用戶名列表,多個用戶以逗號(,)分隔,對大多數數據庫系統而言,PUBLIC代表所有用戶。
1.對于數據庫,其格式爲:
Grant { DBA Resource Connect } to { PUBLIC User-List };
Revoke { DBA Resource Connect } from { PUBLIC User-List }
缺省情況下,建立數據庫的用戶就是數據庫管理員(DBA),除其本身和Informix用戶外,其它用戶不對該數據庫擁有任何權限,因此也就不能進行任何形式的訪問。數據庫管理員可根據其他用戶的業務分工、操作範圍授予或撤消DBA、Resource、Connect三種不同的權限。
2.對于表及視圖,其格式爲:
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等操作權限,tab_name、 view_name分別代表數據庫表名和視圖名。
缺省情況下,新建的數據庫表和視圖對能夠訪問該數據庫的用戶賦予了除alter外的所有權限,有時這是比較危險的,比如對普通查詢用戶,應該有針對性地對權限重新定義。此外,對一些重要的表或視圖,爲防止敏感信息泄露,也應該重新授權。具體做法是:先用Revoke命令撤消原來所有的權限,再用Grant授予新的權限。
3.對于字段:
字段級權限的授予和撤消同表級的命令方式基本一致,所不同的僅在于必須把賦予權限的字段名列在操作權限如select、insert、update等之後,通過這樣細化可以實施更有效的數據保護。
4.對于存儲過程:
存儲過程由SQL語句編寫,存放于數據庫中,常與觸發器配合,可以對數據進行批量處理,使用非常方便。但如果授權不嚴格,將導致非法修改現有數據。其權限設置格式爲:
Grant Execute on proc_name to { PUBLIC User-List };
Revoke Execute on proc_name from { PUBLIC User-List }
其中proc_name表示存儲過程名。
四、角色(role)的使用
在數據庫用戶的管理中,我們可以根據用戶對數據庫數據的需要情況把用戶分爲幾組,每一組用戶可以作爲一個"角色",每個用戶就是角色的成員。通過使用角色,數據庫系統更容易進行安全性管理,因爲一旦某個用戶屬于某一個角色,對權限的授予和撤消只需針對角色便可。具體使用方法爲:
1.創建角色:
Create Role role_name1
其中role_name1表示角色名。
2.劃分用戶角色:
即將相關用戶加入到角色中使之成爲角色的成員。
Grant role_name1 to { User-List Role_List }
其中Role_List表示角色列表,因爲一個角色可以是另外一個或一組角色的成員。
3.授權角色權限:
同授權用戶權限的方法相同,但只能對表級和字段級權限有效,不能授予數據庫級權限給一個角色。
4.激活角色:
執行以下語句,使以上定義的角色成爲可用狀態:
Set Role role_name1
五、結束語
以Internet技術爲代表的網絡業務的迅猛增長爲數據庫應用開辟了新的發展空間,同時也對數據庫的安全性管理提出了更高的要求,網絡的開放性導致非法存取常有發生,因而深刻領會和理解數據庫權限的具體設置方法,結合自身實際應用,制定出一套完整的安全保護策略具有重要意義。Informix Dynamic Server對以上控制語句的使用除角色外,嚴格執行SQL ANSI 標准,因此對建立在NT平台上的MS SQL Server同樣有效。