計算機系統(tǒng)的安全性一直都是令開發(fā)者頭痛的問題,特別是在數(shù)據(jù)庫系統(tǒng)中,由于數(shù)據(jù)大量集中存放,且為眾多用戶直接共享,安全性問題更為突出。安全性問題給我們帶來的危害無須多言,世界上多家大型銀行都在不同程度上遭受到非法入侵者的襲擊,但由于商業(yè)原因,這些銀行都不愿意公布損失程度,使安全性問題更難以解決。Sybase作為一種大型數(shù)據(jù)庫系統(tǒng),其安全性控制策略較為典型。
安全性控制的層次結(jié)構(gòu)
Sybase數(shù)據(jù)庫為開發(fā)者提供了有效的安全性控制策略,既注重數(shù)據(jù)訪問的安全性和監(jiān)督用戶的登錄,又兼顧了用戶在使用數(shù)據(jù)時對速度的要求。Sybase中的安全性是依靠分層解決的,它的安全措施也是一級一級層層設(shè)置的,真正做到了層層設(shè)防。第一層是注冊和用戶許可,保護對服務(wù)器的基本存?。坏诙邮谴嫒】刂?,對不同用戶設(shè)定不同的權(quán)限,使數(shù)據(jù)庫得到最大限度的保護;第三層是增加限制數(shù)據(jù)存取的視圖和存儲過程,在數(shù)據(jù)庫與用戶之間建立一道屏障。
安全性問題的基本原則
Sybase基于上述層次結(jié)構(gòu)的安全體系,提出以下幾點實施安全的原則:
1、選擇性訪問控制(Discretionary Access Controls DAC),DAC用來決定用戶是否有權(quán)訪問數(shù)據(jù)庫對象;
2、驗證,驗證就是保證只有授權(quán)的合法用戶才能注冊和訪問;
3、授權(quán),對不同的用戶訪問數(shù)據(jù)庫授予不同的權(quán)限;
4、審計,監(jiān)視系統(tǒng)發(fā)生的一切事件。
Sybase的安全控制策略
基于上述四點原則,Sybase提供了四種基本策略進行安全性控制。
在創(chuàng)建服務(wù)器時,Sybase將所有權(quán)限都分配給系統(tǒng)管理員,系統(tǒng)管理員可以在服務(wù)器上增加注冊者(Logins)(只有系統(tǒng)管理員有此權(quán)限)。Logins可以登錄服務(wù)器但不能訪問數(shù)據(jù)庫。數(shù)據(jù)庫屬主(DBO)有權(quán)增加用戶(users),users可以使用分配給它的數(shù)據(jù)庫。當(dāng)users訪數(shù)據(jù)庫時,首先以Logins身份進入服務(wù)器,系統(tǒng)自動打開默認數(shù)據(jù)庫,Logins身份轉(zhuǎn)化為users身份。
在用戶登錄后,系統(tǒng)要通過口令進行驗證,以防止非法用戶盜用他人的用戶名進行登錄。這一驗證步驟在登錄時的注冊對話框中出現(xiàn),注冊與驗證同時進行,用戶名與口令有一個不符,登錄請求被拒絕。
權(quán)限使得用戶在數(shù)據(jù)庫中活動范圍僅被容許在小范圍內(nèi),大大提高了數(shù)據(jù)庫的安全性。在Sybase系統(tǒng)中,對象的所有者或創(chuàng)建者自動被授予對對象的許可權(quán)。所有者則有權(quán)決定把許可權(quán)授予其他用戶。Sybase提供了GRANT和REVOKE命令,以便授予或取消許可權(quán)。數(shù)據(jù)庫所有者和系統(tǒng)管理員享有特殊許可權(quán),包括數(shù)據(jù)庫所有者(Database Owner,DBO)對自己所擁有的數(shù)據(jù)庫中的一切對象具有全部許可權(quán);系統(tǒng)管理員(System Administrantion,SA)享有服務(wù)器內(nèi)的所有數(shù)據(jù)庫的一切對象的許可權(quán)。
Sybase提供了Audit Server,它是能夠全面審計跟蹤服務(wù)器上一切活動的工具,在某些情況下,我們難以阻止非法操作的發(fā)生,但至少可以監(jiān)視非法操作,并采取跟蹤措施,找出非法執(zhí)行操作的人。
除了以上四點基本策略,Sybase數(shù)據(jù)庫中還提供了兩種對象——視圖和存儲過程用于增強系統(tǒng)的安全性。
視圖和存儲過程像數(shù)據(jù)庫中的其他對象,也要進行權(quán)限設(shè)定,這樣用戶只能取得對視圖和存儲過程的授權(quán),而無法訪問底層表。視圖可以限制底層表的可見列,從而限制用戶能查詢的數(shù)據(jù)列的種類,還能通過應(yīng)用Where子句限制表返回的行。
下面以具體實例說明Sybase的安全性控制策略。假設(shè)開發(fā)一個新項目,需要建一個服務(wù)器,命名為Server,系統(tǒng)自動產(chǎn)生SA,并要求輸入口令(在此我們均假設(shè)口令為Null)。SA通過Logins對話框(或用SQL語句)為服務(wù)器增加注冊Logins,則Logins有權(quán)訪問Sybase,SA創(chuàng)建數(shù)據(jù)庫DB(SA在數(shù)據(jù)庫DB中的身份為數(shù)據(jù)庫所有者DBO),同時創(chuàng)建兩個用戶USER1(設(shè)置登錄名為Login,默認服務(wù)器為DB)和USER2這兩個用戶只能訪問數(shù)據(jù)庫DB。DB中有兩張表TABLE1(COLUMN1 INT,COLUMN2 CHAR(5))和TABLE 2。
USER 1要訪問DB時,首先以Login登錄服務(wù)器,默認數(shù)據(jù)庫DB被打開,Login的身份就會化為USER-1。在完成了登錄和驗證后,我們可以通過授權(quán)進行安全性控制。授權(quán)命令要由數(shù)據(jù)庫屬主SA發(fā)出:GRANT ALL ON TABLE-1,TABLE-2 TO USER-1則USER-1擁有對TABLE-1,TABLE-2的所有權(quán)限。當(dāng)然,SA也可以收回權(quán)限:REVODE DELETE ON TABLE1 FROM USER-1,樣,USER-1就不能對TABLE-1進行刪除操作。
視圖和存儲過程就象架設(shè)在用戶與底層表之間的一道橋梁,用戶只能對視圖和存儲過程進行操作,而無法直接訪問底層表。下面創(chuàng)建一個視圖人為例子。
CREATE VIEW VIEW-1
AS SELECT COLUMN-1 FROM TABLE-1
GRANT ALL ON VIEW-1 TO USER-2
USER-2通過VIEW-1可以訪問COLUMN-1而無法訪問COLUMN-2,這就是VIEW-1的屏作用。再用存儲過程舉一個屏蔽行的例子。
CREATE PROCEDURE PROC-1
AS SELECT FROM TABLE-1
WHERE (COLUMN-11)
GRANT EXECUTE ON PROC-1 TO USER-2
當(dāng)用戶查詢時,只能看到COLUMN-1列值為1的行,其他行已經(jīng)被PROC-1屏蔽掉了。
雖然Sybase為我們提供了強大的安全體系保障,但我們也要看到,安全問題不可能通過系統(tǒng)得到徹底解決,并且過分注重安全問題反而會降低系統(tǒng)效率。如何運用系統(tǒng)提供的安全策略就有賴于開發(fā)者的智慧了。
更多信息請查看IT技術(shù)專欄