摘 要:數(shù)據(jù)庫是存儲數(shù)據(jù)的重要軟件,它的安全性直接關(guān)系到信息系統(tǒng)數(shù)據(jù)的安全,本文通過分析數(shù)據(jù)庫的訪問控制、安全審計(jì)和數(shù)據(jù)如何加密來提高數(shù)據(jù)庫的信息安全。
關(guān)鍵詞:數(shù)據(jù)庫;訪問控制;數(shù)據(jù)安全
中圖分類號:TP333.2
信息安全是基層外匯局科技工作的主要工作之一,除了對網(wǎng)絡(luò)和服務(wù)器的管理外,數(shù)據(jù)庫是存儲數(shù)據(jù)的重要軟件,是科技人員日常管理和數(shù)據(jù)維護(hù)的重要工作。本文將分析數(shù)據(jù)庫的訪問控制、安全審計(jì)和數(shù)據(jù)如何加密(以SYBASE ASE12為例),保障數(shù)據(jù)安全。
1 數(shù)據(jù)庫用戶管理
用戶訪問數(shù)據(jù)庫數(shù)據(jù)時(shí)必須通過三層的安全認(rèn)證。首先,用戶要擁有登陸數(shù)據(jù)庫服務(wù)器的有效登錄賬號。接著,用戶必須是數(shù)據(jù)庫的有效用戶。最后,用戶必須擁有訪問數(shù)據(jù)庫數(shù)據(jù)的權(quán)限。
為了能夠訪問數(shù)據(jù)庫,首先,系統(tǒng)管理員要用為用戶創(chuàng)建一個登錄賬號訪問數(shù)據(jù)的第一層認(rèn)證。其次,系統(tǒng)管理員以sp_adduser操作創(chuàng)建數(shù)據(jù)庫用戶,并保存在該數(shù)據(jù)庫的系統(tǒng)表sysusers中。當(dāng)系統(tǒng)管理員進(jìn)入一個數(shù)據(jù)庫后便具有數(shù)據(jù)庫所有者的身份。數(shù)據(jù)庫的所有者是創(chuàng)建數(shù)據(jù)庫的用戶,數(shù)據(jù)庫所有者可以將數(shù)據(jù)庫的所有權(quán)轉(zhuǎn)移給另一數(shù)據(jù)庫用戶。數(shù)據(jù)庫所有者具有的權(quán)限包括設(shè)置數(shù)據(jù)庫的操作、增加或者刪除數(shù)據(jù)庫用戶、賦予或者去除創(chuàng)建數(shù)據(jù)庫對象的權(quán)限、執(zhí)行checkpoint操作、檢查數(shù)據(jù)庫的一致性、備份數(shù)據(jù)庫數(shù)據(jù)及日志、恢復(fù)數(shù)據(jù)庫數(shù)據(jù)及日志等。數(shù)據(jù)庫中的一個較為特殊的用戶是guest用戶,可以使任何登錄賬號能以guest用戶的身份進(jìn)入數(shù)據(jù)庫。并且該guest用戶是不能從這兩個數(shù)據(jù)庫中去除的,因此我們應(yīng)當(dāng)嚴(yán)格控制這些數(shù)據(jù)庫的許可權(quán)限。
2 訪問控制
數(shù)據(jù)庫的訪問控制是指用戶對數(shù)據(jù)庫及數(shù)據(jù)訪問的權(quán)限控制。圖1給出了系統(tǒng)管理員、數(shù)據(jù)庫所有者、對象所有者等用戶安全等級及操作權(quán)限的示意圖,其中上層用戶具有下層用戶的所有權(quán)限,最上層的系統(tǒng)管理員具有數(shù)據(jù)庫所有者的所有權(quán)限,中間層的數(shù)據(jù)庫所有者具有對象所有者的所有權(quán)限。在實(shí)際應(yīng)用中,我們可將相應(yīng)的權(quán)限賦予需要權(quán)限的用戶同時(shí)注意防止權(quán)限的濫用形成的安全隱患。
用戶定義的角色是所賦予的權(quán)限的集合,從另一角度看,角色用于對登錄賬號進(jìn)行分組,是具有同一角色登錄賬號的集合。用戶定義的角色與用戶組相比較,用戶定義的角色作用范圍是服務(wù)器范圍,而用戶組作用范圍僅在一個數(shù)據(jù)庫中。登錄賬號的用戶定義角色必須被激活才能生效。使用用戶定義的角色一般要通過以下的4個步驟。首先,創(chuàng)建一個用戶定義的角色。其次,把權(quán)限賦予用戶定義的角色。第三,把登錄賬號歸類到對應(yīng)的角色中。第四,激活登錄賬號所賦予的角色。
把權(quán)限賦予用戶定義角色的操作語法格式為:grant permissions to role_name,permissions是權(quán)限,role_name是角色名。把角色賦予一個登錄賬號的操作語法格式為:grant role role_name[,role_name]to login_name[,login_name],role_name是角色名,login_name是登錄賬號名。激活或者停止角色的操作語法格式為:set role role_name [with passwd “password”]{on|off}。
3 數(shù)據(jù)加密
在數(shù)據(jù)庫安全中,數(shù)據(jù)加密是數(shù)據(jù)安全的重要防線,分為存儲加密和傳輸加密兩種方式,加密保證了數(shù)據(jù)的機(jī)密性,禁止了未經(jīng)許可的用戶獲取數(shù)據(jù)的真正信息。對于安全性要求高的可以采用非對稱密鑰法加密,或者采用非對稱密鑰法或者對稱與非對稱結(jié)合法。加密算法分為對稱密鑰算法和非對稱密鑰算法,其中對稱密鑰算法有DES,3DES,IDEA和AES,3DES是DES的改進(jìn)算法,提高des的安全性,密鑰長度為168位,AES是1997年美國國家標(biāo)準(zhǔn)技術(shù)研究所提出的加密標(biāo)準(zhǔn),它的優(yōu)點(diǎn)是比3DES加密速度快。非對稱密鑰算法主要有RSA,其計(jì)算量較大,速度比對稱密鑰算法要慢。非對稱密鑰算法比對稱密鑰算法更安全,密鑰分配簡單,實(shí)現(xiàn)了密鑰的傳遞,減少了密鑰的持有量,但算法計(jì)算量大,耗資源。
數(shù)據(jù)庫加密工作可在三個層次實(shí)現(xiàn)數(shù)據(jù)庫加密工作,即操作系統(tǒng)、DBMS內(nèi)核和DBMS外層。數(shù)據(jù)先在操作系統(tǒng)內(nèi)存中加密,將加密后的數(shù)據(jù)寫入到數(shù)據(jù)庫文件中,讀取數(shù)據(jù)時(shí)則是從數(shù)據(jù)庫文件中讀出數(shù)據(jù)進(jìn)行逆向解密,這種方法只要保存好密鑰即可,但是對數(shù)據(jù)庫的讀寫和每次的數(shù)據(jù)加密工作很繁瑣,易出錯。
DBMS內(nèi)核層加密是指數(shù)據(jù)在完成數(shù)據(jù)庫物理存取之前完成數(shù)據(jù)的加解密,這種加密方式的優(yōu)點(diǎn)是加密功能強(qiáng),幾乎不會影響DBMS的功能,但加密運(yùn)算是在服務(wù)器端進(jìn)行,若運(yùn)算量大將會加重服務(wù)器的負(fù)載。DBMS外層加密是將數(shù)據(jù)庫加密系統(tǒng)開發(fā)成為DBMS的外層軟件,根據(jù)加密要求自動完成對數(shù)據(jù)庫數(shù)據(jù)的加解密處理。該方法是在客戶端完成,不會加重?cái)?shù)據(jù)庫服務(wù)器的負(fù)載。
4 安全審計(jì)
數(shù)據(jù)庫的安全審計(jì)功能,能將與數(shù)據(jù)庫安全性相關(guān)的操作記錄下來,掌握數(shù)據(jù)庫被使用情況,開展檢查。數(shù)據(jù)庫的安全審計(jì)按操作類型分為登錄審計(jì)、語句審計(jì)和對象審計(jì)。在日常工作中,我們可以在數(shù)據(jù)庫中安裝數(shù)據(jù)庫審計(jì)系統(tǒng)功能。審計(jì)系統(tǒng)功能是數(shù)據(jù)庫管理系統(tǒng)中用于收集審計(jì)蹤跡、跟蹤用戶濫用系統(tǒng)的功能。Sybase數(shù)據(jù)庫審計(jì)系統(tǒng)由安全數(shù)據(jù)庫sybsecurity、內(nèi)存中的審計(jì)隊(duì)列、用于管理審計(jì)的配置參數(shù)、用于管理審計(jì)的系統(tǒng)進(jìn)程、審計(jì)進(jìn)程組成。其中,sybsecurity數(shù)據(jù)庫是為了使用審計(jì)功能而創(chuàng)建的專門用于審計(jì)的安全數(shù)據(jù)庫,由安裝程序Sybinit來建立的,含Sysaudits審計(jì)記錄表和Sysauditoptions審計(jì)選擇設(shè)置記錄表。在審計(jì)系統(tǒng)功能的安裝過程中,可以指定審計(jì)記錄表的數(shù)量,若創(chuàng)建2個審計(jì)記錄表,則這三個審計(jì)蹤跡表的名稱分別為sysaudits_01、sysaudits_02。這些審計(jì)記錄表中僅有一個為當(dāng)前審計(jì)記錄表。
內(nèi)存審計(jì)隊(duì)列是存放還未被處理的審計(jì)記錄,空間的配置命令為sp_configure“audit queue size”,[value],value為共享內(nèi)存中審計(jì)隊(duì)列能存放的記錄數(shù)量。
審計(jì)程序激活之前,需創(chuàng)建一個用于自動轉(zhuǎn)換審計(jì)蹤跡表的門檻程序。當(dāng)審計(jì)蹤跡表快滿時(shí),門檻程序自動運(yùn)行。門檻程序可以從當(dāng)前審計(jì)蹤跡表中讀取數(shù)據(jù)并歸檔。門檻程序使用sp_configure命令截取下一個滿的審計(jì)蹤跡表,使用insert和select命令將已經(jīng)滿的審計(jì)蹤跡表歸檔。為了將門檻程序綁定到審計(jì)蹤跡表片段,可使用sp_addthreshold命令。
審計(jì)系統(tǒng)的事務(wù)日志管理空間可通過命令“trunc log on chkpt”進(jìn)行操作。當(dāng)安裝審計(jì)系統(tǒng)功能時(shí),數(shù)據(jù)庫操作“trunc log on chkpt”缺省地被設(shè)置為激活狀態(tài),可以使用sp_dboption命令來設(shè)置這個數(shù)據(jù)庫操作。當(dāng)“trunc log on chkpt”操作處于激活狀態(tài)時(shí),不必?fù)?dān)心該事務(wù)日志的空間。當(dāng)“trunc log on chkpt”操作處于“off”狀態(tài)時(shí),可將最后機(jī)會門檻程序綁定到事務(wù)日志片段。
參考文獻(xiàn):
[1](美)加伯斯.余安萍,俞俊平,譯.Sybase ASE 12.5管理員指南[M].北京:電子工業(yè)出版社,2004.
作者簡介:謝聲時(shí)(1981-),男,浙江人,工程師,研究方向:信息安全。
作者單位:中國人民銀行海口中心支行,海口 570105