程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> 輕松掌握Sybase數據庫的安全性控制策略

輕松掌握Sybase數據庫的安全性控制策略

編輯:SyBase綜合文章

安全性控制的層次結構

Sybase數據庫為開發者提供了有效的安全性控制策略,既注重數據訪問的安全性和監督用戶的登錄,又兼顧了用戶在使用數據時對速度的要求。Sybase中的安全性是依靠分層解決的,它的安全措施也是一級一級層層設置的,真正做到了層層設防。第一層是注冊和用戶許可,保護對服務器的基本存取;第二層是存取控制,對不同用戶設定不同的權限,使數據庫得到最大限度的保護;第三層是增加限制數據存取的視圖和存儲過程,在數據庫與用戶之間建立一道屏障。

安全性問題的基本原則

Sybase基於上述層次結構的安全體系,提出以下幾點實施安全的原則:

1、選擇性訪問控制(Discretionary Access Controls DAC),DAC用來決定用戶是否有權訪問數據庫對象;

2、驗證,驗證就是保證只有授權的合法用戶才能注冊和訪問;

3、授權,對不同的用戶訪問數據庫授予不同的權限;

4、審計,監視系統發生的一切事件。

Sybase的安全控制策略

基於上述四點原則,Sybase提供了四種基本策略進行安全性控制。

在創建服務器時,Sybase將所有權限都分配給系統管理員,系統管理員可以在服務器上增加注冊者(Logins)(只有系統管理員有此權限)。Logins可以登錄服務器但不能訪問數據庫。數據庫屬主(DBO)有權增加用戶(users),users可以使用分配給它的數據庫。當users訪數據庫時,首先以Logins身份進入服務器,系統自動打開默認數據庫,Logins身份轉化為users身份。

在用戶登錄後,系統要通過口令進行驗證,以防止非法用戶盜用他人的用戶名進行登錄。這一驗證步驟在登錄時的注冊對話框中出現,注冊與驗證同時進行,用戶名與口令有一個不符,登錄請求被拒絕。

權限使得用戶在數據庫中活動范圍僅被容許在小范圍內,大大提高了數據庫的安全性。在Sybase系統中,對象的所有者或創建者自動被授予對對象的許可權。所有者則有權決定把許可權授予其他用戶。Sybase提供了GRANT和REVOKE命令,以便授予或取消許可權。數據庫所有者和系統管理員享有特殊許可權,包括數據庫所有者(Database Owner,DBO)對自己所擁有的數據庫中的一切對象具有全部許可權;系統管理員(System Administrantion,SA)享有服務器內的所有數據庫的一切對象的許可權。

Sybase提供了Audit Server,它是能夠全面審計跟蹤服務器上一切活動的工具,在某些情況下,我們難以阻止非法操作的發生,但至少可以監視非法操作,並采取跟蹤措施,找出非法執行操作的人。

除了以上四點基本策略,Sybase數據庫中還提供了兩種對象——視圖和存儲過程用於增強系統的安全性。

視圖和存儲過程像數據庫中的其他對象,也要進行權限設定,這樣用戶只能取得對視圖和存儲過程的授權,而無法訪問底層表。視圖可以限制底層表的可見列,從而限制用戶能查詢的數據列的種類,還能通過應用Where子句限制表返回的行。

下面以具體實例說明Sybase的安全性控制策略。假設開發一個新項目,需要建一個服務器,命名為Server,系統自動產生SA,並要求輸入口令(在此我們均假設口令為Null)。SA通過Logins對話框(或用SQL語句)為服務器增加注冊Logins,則Logins有權訪問Sybase,SA創建數據庫DB(SA在數據庫DB中的身份為數據庫所有者DBO),同時創建兩個用戶USER1(設置登錄名為Login,默認服務器為DB)和USER2這兩個用戶只能訪問數據庫DB。DB中有兩張表TABLE1(COLUMN1 INT,COLUMN2 CHAR(5))和TABLE 2。

USER1要訪問DB時,首先以Login登錄服務器,默認數據庫DB被打開,Login的身份就會化為USER-1。在完成了登錄和驗證後,我們可以通過授權進行安全性控制。授權命令要由數據庫屬主SA發出:GRANT ALL ON TABLE-1,TABLE-2 TO USER-1則USER-1擁有對TABLE-1,TABLE-2的所有權限。當然,SA也可以收回權限:REVODE DELETE ON TABLE1 FROM USER-1,樣,USER-1就不能對TABLE-1進行刪除操作。

視圖和存儲過程就象架設在用戶與底層表之間的一道橋梁,用戶只能對視圖和存儲過程進行操作,而無法直接訪問底層表。下面創建一個視圖人為例子。

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

當用戶查詢時,只能看到COLUMN-1列值為1的行,其他行已經被PROC-1屏蔽掉了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved