摘要:隨著計算機技術的飛速發展, 數據庫的應用已十分廣泛, 深入到了社會各個領域, 但隨之而來產生了數據的安全保護問題,數據庫中存儲了大量的信息資源,信息安全是一個重要方面。論文針對數據庫中存在的一些安全問題, 總結了在SQL Server 中必要的數據庫完整性控制和安全設置,包括身份驗證和權限管理等。
關鍵詞:SQL Server ;數據庫;完整性;安全性;保護
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)03-526-02
On the Relational Database Protection Strategy
CHEN Yu
(Anhui Institute of Economics and Management, Hefei 230001, China)
Abstract: With the rapid development of computer technology, database applications are very extensive, has been deep into all areas of society, but the attendant had a data security protection, the database stored in a large number of information resources, information security is an important aspects. Papers exist in the database and a number of security issues, summed up in the SQL Server database integrity in the necessary controls and security settings, including authentication and access management.
Key words: SQL Server; Database; Integrity; Security; Protection
關系數據庫的特點之一就是DBMS能提供統一的數據保護功能來保證數據的安全可靠和正確有效,數據庫的數據保護主要包括數據的安全性和數據的完整性。數據庫的完整性是指數據的正確性和相容性,是為了防止數據庫中存在不符合語義的數據,也就是防止數據庫中存在不正確的數據;數據庫的安全性是指保護數據庫以防止不合法的使用所造成的數據泄露、更改或破壞。數據庫中的數據是從外界輸入的,而數據的輸入由于種種原因,會發生輸入無效或錯誤信息,保證輸入的數據符合規定,成為數據庫系統,尤其是多用戶的關系數據庫系統首要關注的問題,數據完整性因此而提出。另外數據庫中大量數據的集中存放和管理,日漸成為非法入侵者攻擊的焦點,數據庫的安全越來越多地受到網絡安全、操作系統安全、用戶等多方面因素的影響,已經成為了信息安全的主要研究課題之一。論文將以目前主流的關系數據庫系統軟件SQL Server為例來討論數據庫系統的數據保護策略。
1 關系數據庫的完整性控制
1.1 概述
為了保證數據庫的完整性,DBMS一般都提供了對數據庫完整性進行定義、檢查及違約處理機制,并把用戶定義的數據庫完整性約束條件作為模式的一部分存入數據字典中。DBMS中檢查數據是否滿足完整性約束條件的機制稱為完整性檢查,一般在對數據庫中數據進行增、刪、改操作后開始檢查,也可以在事務提交時檢查,檢查這些操作執行后數據庫中的數據是否違背了完整性約束條件。當DBMS發現用戶的操作違背了完整性約束條件,就采取一定的動作,如拒絕(NO ACTION)執行該操作或級連(CASCADE)執行其他操作,進行違約處理以保證數據的完整性。
關系數據庫的完整性控制主要包括三類:實體完整性、參照完整性與用戶自定義完整性。實體完整性規定關系中的主碼取值唯一且非空;參照完整性規定關系的外碼取值為被參照關系主碼的值或取空值;除此兩類必須滿足的完整性約束以外,關系在不同的應用環境當中,往往還需要一些特殊的約束條件,用戶自定義的完整性就是針對某一具體關系數據庫的約束條件,它反映某一具體應用所涉及的數據必須滿足的語義要求。
1.2 SQL Server中的完整性設置
在SQL Server中,可以通過“約束”、“規則”、“默認”、“觸發器”、“存儲過程”等來達到保證數據完整性的目的。
1.2.1 通過“約束”實施數據的完整性控制
約束是強制實行的應用規則,它通過限制列中數據、行中數據來保證數據的完整性,包括CHECK約束、PRIMARY KEY約束、FOREIGN KEY約束、UNIQUE約束。
舉例1:create table xs_cj
(學號char(8) not 1
constraint pk-cj primary key clustered, /*定義主鍵約束*/
課程號char(3) not 1,
成績 tinyint 1)
1.2.2 通過“規則”實施數據的完整性控制
“規則”的作用類似于“檢查約束”,若將一個“規則”綁定到指定列上,則可以檢查該列的數據是否符合“規則”的要求。“規則”與“檢查約束”的主要區別在于一列只能綁定一個“規則”,但卻可以設置多個“檢查約束”。“規則”的優點是僅創建一次就可以綁定到數據庫的多個表的列上,使同一個數據庫中所有表的不同列共享。“規則”還可以綁定到同一數據庫中一個以上的用戶定義的數據類型上。使用“規則”的過程依次為:創建規則——綁定規則——解除綁定——刪除規則。
舉例2:use xs_cj
create rule rule_cjas@成績>=0 and @成績<=100/*創建名為\"rule_cj\"的“規則”*/
go
sp_bindrule rule_cj,'學生成績表.成績'
/*將\"規則rule_cj\"綁定到的“成績”字段*/
sp_bindrule rule_cj,'學生成績表.補考成績'
/*將\"規則rule_cj\"綁定到的“補考成績”字段*/
1.2.3 通過“默認”實施數據的完整性控制
與“規則”類似,“默認值”對象(簡稱為“默認”)也是僅創建一次就可以綁定到數據庫的多個表的列或用戶定義的數據類型中,使它們共享“默認”。作用與DEFAULT約束相似,在插入數據行時,為沒有指定數據的列提供事先定義的默認值。
舉例3:use xs_cj
go
create default xscj_mr as '男'/*創建默認對象*/
use xsda
go
exec sp_bindefault 'xscj_mr',' xsda.性別' /*將默認對象綁定到表xsda的性別列上*/
2 關系數據庫的安全性控制
2.1 概述
數據庫必須具有堅固的安全系統,才能控制可以執行的活動以及可以查看和修改的信息。無論用戶如何獲得對數據庫的訪問權限,堅固的安全系統都可以確保對數據進行保護。安全系統的構架建立在用戶組的基礎上。
2.2 SQL Server中的安全設置
在SQL Server中,用戶要經過兩個安全性階段:身份驗證和授權。身份驗證能決定用戶能否連接到服務器,授權階段驗證已登陸服務器的用戶能否連接SQL Server實例的權力。
2.2.1 SQL Server 的身份驗證模式
SQL Server 服務器身份驗證有以下兩種模式:Windows 認證模式和Windows 與SQL Server混合認證模式。Windows 認證更為安全, 因為Windows 操作系統具有較高的安全性(C2 級安全標準) 。SQL Server 認證管理較為簡單, 當SQL Server 在Windows NT 或Windows2000 上運行時, 系統管理員必須制定系統使用的認證模式。當采用混合認證模式時,SQL Server 既允許使用Windows 認證模式又允許使用SQL Server 認證模式。在完成SQL Server 安裝以后, SQL Server 就建立了一個特殊帳戶sa。sa 帳戶擁有最高的管理權限, 可以執行服務器范圍內的所有操作, 既不能更改sa 用戶名稱, 也不能刪除sa, 但可以更改其密碼。在剛剛完成SQL Server 的安裝時候, sa 帳戶沒有任何密碼, 所以要盡快為其設置密碼。
2.2.2 授權階段
只有授權的用戶和系統才能訪問被保護了的數據,保密性是防止非授權訪問,這是信息安全最重要的要求。用戶在實現安全登錄之后,檢驗用戶的下一個安全等級是數據庫訪問權限。在身份驗證階段利用登陸賬號連接到服務器后,只表明該賬戶通過了Windows NT認證或SQL Server認證,并不代表用戶就能訪問數據庫,而登陸者要操作數據庫中的數據時,必須要有用戶賬號才能夠存取數據庫。就如同在自助銀行門口刷卡進門(登錄服務器),然后再憑銀行卡和密碼支取金額(進入數據庫)一樣。數據庫用戶是指在數據庫內唯一標識用戶身份的ID。SQL Server通過授權和角色管理來給用戶指定可以訪問的數據庫對象的權限。如果一組用戶具有相同的權限,那么我們可以先創建一個角色,對這個角色賦予權限,然后將這些用戶添加到該角色中使它們成為這個角色的成員。這樣就可以對這些相同權限的用戶進行統一的管理,在用戶較多的情況下減輕了管理負擔。在SQL Server中,系統的每個數據庫都定義了許多不同的固定角色,但這些角色的范圍只限于它所在的數據庫。每個用戶可以屬于多個不同的角色,從而擁有不同的權限。
3 結束語
數據庫安全保護是管理信息系統中的重要課題,涉及的范圍很廣,可以采用的安全策略也很多。因此,必須根據具體的應用環境的安全需要分析安全薄弱環節,并制定統一的安全管理策略加以實施。良好的數據庫的安全性設計,可以有效地保護數據庫,防止不合法的訪問和破壞。SQL Server 數據庫本身具備一定的安全防范能力,然而最關鍵的還需要加強對數據庫安全的認識和相關培訓。數據庫安全性問題的探討仍需繼續,還有更多的數據庫安全維護工作等著完善。
參考文獻:
[1] 王珊,薩師煊.數據庫系統概論[M].高等教育出版社,2006.
[2] 李德有,彭德林. SQL Server 數據庫應用與開發[M].中國水利水電出版社,2007:180.
[3] 張鑫燕,吳小松. SQL Server 2000程序設計[M].科學出版社,2003.
[4] 王玉,粘新育. SQL Server 數據庫應用技術[M].中國鐵道出版社,2008:183-201.
[5] 饒琛,趙曉靜. 淺談SQL Server 數據庫的安全設計與應用[J] . 電腦知識與技術,2008,5 :1-2.
[6] 王曦. 關于SQL Server 數據庫安全設置的探討[J].福建電腦,2008,10:1-2.
[7] 陳麗,王亞弟,常朝穩. 數據庫安全模型的設計[J].微計算機信息, 2007,23 (27) :94-96.
[8]顏文勝. 數據庫安全問題的策略研究[J]. 科技資訊,2007(24) :82.