蔡長(zhǎng)征 曹士玲
摘要:SQLServer的安全性是指當(dāng)服務(wù)器運(yùn)行時(shí),避免非法用戶訪問(wèn)數(shù)據(jù)庫(kù)、保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全。該文首先概述和分析SQL Server安全性和安全體系結(jié)構(gòu);然后介紹SQL Server支持的身份驗(yàn)證兩種模式及其更換方式;接下來(lái)對(duì)服務(wù)器安全性管理和數(shù)據(jù)庫(kù)安全性管理進(jìn)行了討論,包括創(chuàng)建登錄賬號(hào)、拒絕登錄賬號(hào)、刪除賬號(hào)以及數(shù)據(jù)庫(kù)用戶的基本操作等內(nèi) 容;最后對(duì)SQL Server數(shù)據(jù)庫(kù)權(quán)限管理及其種類進(jìn)行了介紹。
關(guān)鍵詞:SQL;Server;安全機(jī)制;數(shù)據(jù)庫(kù);權(quán)限
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)06-0001-02
SQL Server數(shù)據(jù)庫(kù)具有較強(qiáng)的穩(wěn)定性和可靠性,并且由于其便于操作,深受用戶的喜愛(ài),也是目前使用最廣泛的企業(yè)數(shù)據(jù)庫(kù)之一。由于數(shù)據(jù)庫(kù)中存儲(chǔ)著大量的數(shù)據(jù),這些數(shù)據(jù)被大量的用戶以共享的方式訪問(wèn),因此保證這些數(shù)據(jù)的安全性非常重要。研究數(shù)據(jù)庫(kù)的安全性也就是建立必要的安全保護(hù)措施,以保護(hù)數(shù)據(jù)庫(kù)系統(tǒng)軟件和其中的數(shù)據(jù)不因偶然或惡意原因而遭到破壞、更改和泄露。
數(shù)據(jù)庫(kù)安全性內(nèi)容主要包括三個(gè)方面,分別是數(shù)據(jù)信息的完整性、數(shù)據(jù)信息的保密性以及數(shù)據(jù)信息的可用性性。完整性主要包括物理完整性和邏輯完整性兩部分,即數(shù)據(jù)不受硬件故障的影響,可以在遭受災(zāi)難性破壞時(shí)重建和恢復(fù)所有數(shù)據(jù),同時(shí)確保數(shù)語(yǔ)義和操作的完整性。保密性是指禁止未授權(quán)的用戶讀取任何數(shù)據(jù)或通過(guò)推理方式從經(jīng)過(guò)授權(quán)的數(shù)據(jù)獲取未授權(quán)的數(shù)據(jù),造成信息泄露。可用性是確保已授權(quán)用戶對(duì)數(shù)據(jù)的正確操作,同時(shí)保證系統(tǒng)運(yùn)行效率,并提供友好的人機(jī)界面。
1SQL Server的安全機(jī)制
為更好地保護(hù)數(shù)據(jù),SQL Server的安全機(jī)制劃分為四層,如圖1所示。
第一層安全機(jī)制是訪問(wèn)操作系統(tǒng)的安全性。當(dāng)用戶訪問(wèn)SQL SERVER時(shí),必須要先登錄到服務(wù)器上。在登錄時(shí),用戶輸入合法的用戶名和密碼,并由操作系統(tǒng)進(jìn)行驗(yàn)證,成功后才能繼續(xù)其他的操作,否則被拒絕。由于第一層的安全機(jī)制一般同操作系統(tǒng)管理員或網(wǎng)絡(luò)管理員管理,SQL Server的安全性有所提高,但同時(shí)增加了數(shù)據(jù)庫(kù)管理系統(tǒng)的安全性和靈活性的難度。
第二層安全機(jī)制是訪問(wèn)SQL Server登錄安全性。用戶在登錄時(shí)必須提供有效的用戶名和密碼。在登錄SQL Server服務(wù)器成功后,根據(jù)用戶不同的權(quán)限對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)。
第三層安全機(jī)制是連接數(shù)據(jù)庫(kù)的使用安全性。用戶在登錄SQL Server服務(wù)器后,連接用戶事先指定的默認(rèn)數(shù)據(jù)庫(kù),未指定的數(shù)據(jù)庫(kù)不能訪問(wèn),但系統(tǒng)提供的數(shù)據(jù)庫(kù)除外。系統(tǒng)提供的數(shù)據(jù)庫(kù)存儲(chǔ)了大量系統(tǒng)信息,比如master數(shù)據(jù)庫(kù)允許所有用戶訪問(wèn)。
第四層安全機(jī)制是數(shù)據(jù)對(duì)象的使用安全性。數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象一般只允許數(shù)據(jù)庫(kù)的擁有者訪問(wèn)。其他需要訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象的用戶,需要數(shù)據(jù)庫(kù)擁有者對(duì)其授予相應(yīng)的訪問(wèn)權(quán)限。
2SQL Server支持的身份驗(yàn)證
SQL Server提供了兩種身份認(rèn)證模式:Windows身份認(rèn)證模式和混合身份認(rèn)證模式嘲。Windows身份驗(yàn)證模式只允許用戶使用Windows系統(tǒng)賬號(hào)連接數(shù)據(jù)庫(kù),適用于單位在一定范圍內(nèi)的數(shù)據(jù)庫(kù)訪問(wèn)。用戶在連接SQL Server服務(wù)器時(shí),必須使用相同的賬號(hào)登錄Windows系統(tǒng)。由于Windows系統(tǒng)已對(duì)用戶口令的有效性進(jìn)行了驗(yàn)證,SQL Server不再重新驗(yàn)證。Windows身份驗(yàn)證使用一系列加密消息來(lái)驗(yàn)證SQL SERVER中的用戶,加強(qiáng)數(shù)據(jù)庫(kù)的安全,建議使用Windows身份驗(yàn)證。混合驗(yàn)證模式適用于不能登錄Windows域或外界用戶訪問(wèn)數(shù)據(jù)庫(kù)。此種模式同時(shí)支持SQL Server用戶驗(yàn)證模式和Windows身份驗(yàn)證模式,為開(kāi)發(fā)人員提供了更多的選擇方式。
用戶在初始安裝或登錄SQL Server服務(wù)器時(shí),需要指定驗(yàn)證模式。若要更改已指定的驗(yàn)證模式,需要使用安裝SQL Serv-er服務(wù)器時(shí)預(yù)設(shè)的Windows賬號(hào)或sa賬號(hào)進(jìn)行更改。更改驗(yàn)證模式的方法是:登錄SQL Server Management Studio,依次選擇服務(wù)器的“性屬”中的“安全性”選項(xiàng),更改驗(yàn)證模式。如果在安裝SQL Server過(guò)程中選擇的是"Windows身份驗(yàn)證模式”,安裝程序會(huì)禁用sa賬號(hào)。禁用sa賬號(hào)需要啟用后才能使用。啟用sa賬號(hào)的方法是:在SQL Server服務(wù)器的“對(duì)象資源管理器”中,展開(kāi)“安全性”,依次展開(kāi)“登錄名”,右鍵單擊登錄名中的“sa”,選擇“屬性”命令中的“狀態(tài)”選項(xiàng),在右面的登錄處選擇“啟用”,最后選擇“確定”。修改完成后的模式需要重啟SQL Server服務(wù)后生效。
3服務(wù)器的安全性管理
SQL Server賬號(hào)分為服務(wù)器賬號(hào)和數(shù)據(jù)庫(kù)賬號(hào)兩種:服務(wù)器賬號(hào)負(fù)責(zé)連接SQL Server服務(wù)器,數(shù)據(jù)庫(kù)賬號(hào)負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問(wèn)安全性訪問(wèn)驗(yàn)證。這里介紹登錄賬號(hào)的一些基本操作,包括創(chuàng)建登錄賬號(hào)、刪除登錄賬號(hào)和拒絕登錄賬號(hào)等。
3.1服務(wù)器登錄賬號(hào)管理
安裝SQL Server時(shí),系統(tǒng)默認(rèn)創(chuàng)建sa賬號(hào)在混合登錄驗(yàn)證模式中使用,Windows登錄賬號(hào)在兩種模式下都可以進(jìn)行登錄。Windows賬號(hào)創(chuàng)建的方法是:打開(kāi)“控制面板”,再依次雙擊“管理工具”圖標(biāo),“計(jì)算機(jī)管理”圖標(biāo),打開(kāi)“計(jì)算機(jī)管理”窗口。在單擊“系統(tǒng)工具”左側(cè)的“+”號(hào),展開(kāi)“本地用戶和組”,右鍵選擇“用戶”選擇“新用戶”,完成Windows系統(tǒng)用戶創(chuàng)建。
Windows登錄賬號(hào)創(chuàng)建好后,就可以使用該賬號(hào)登錄到Windows服務(wù)器,如果要訪問(wèn)SQL Server服務(wù)器,還需要通過(guò)SQL Server登錄賬號(hào)與SQL Server服務(wù)器建立連接。具體操作方法如下:右擊“登錄名”選擇快捷菜單中的“新建登錄名”命令,在彈出的“登錄名N建”對(duì)話框中單擊“搜索”按鈕,在彈出的“選擇用戶和組”對(duì)話框中輸入新建立的Windows賬號(hào),再單擊“檢查名稱”,單擊“確定”。在選擇"Windows身份驗(yàn)證”模式內(nèi)容中,可為用戶選擇需要連接的默認(rèn)數(shù)據(jù)庫(kù)。同時(shí)可以為新創(chuàng)建的賬號(hào)設(shè)置“服務(wù)器角色”,“用戶映射”,“安全對(duì)象”等內(nèi)容,最后單擊“確定”完成用戶創(chuàng)建。
SQL Server中定義了9個(gè)服務(wù)器角色,服務(wù)器角色名稱和描述如表1所示。系統(tǒng)管理員可以為登錄賬號(hào)設(shè)置服務(wù)器角色,也可以根據(jù)需要建立所需要的角色。系統(tǒng)默認(rèn)已將sa賬號(hào)和Windows登錄賬號(hào)設(shè)置為public和sysadmin服務(wù)器角色。在“登錄屬性”對(duì)話框中,可以為用戶設(shè)置“用戶映射”,映射到用戶登錄名下的數(shù)據(jù)庫(kù)在用戶登錄時(shí)進(jìn)行訪問(wèn)。
3.2 SQL Server登錄賬號(hào)管理
SQL Server登錄賬號(hào)的創(chuàng)建方法同Windows登錄賬號(hào)的創(chuàng)建方法類似,右擊“登錄名”選擇快捷菜單中的“新建登錄名”命令,在彈出的“登錄名一新建”,在“登錄名”處輸入新建用戶名,并選擇"SQL Server身份驗(yàn)證”模式,選擇需要連接的默認(rèn)數(shù)據(jù)庫(kù),最后單擊“確定”完成用戶創(chuàng)建。如果需要拒絕某個(gè)賬號(hào)登錄,可以通過(guò)找到“登錄屬性”中“狀態(tài)”選項(xiàng),將其中“登錄”處的內(nèi)容設(shè)置為“禁用”。被禁用登錄賬號(hào)不能登錄到SQL Server服務(wù)器。為保證數(shù)據(jù)庫(kù)安全,數(shù)據(jù)庫(kù)管理員應(yīng)及時(shí)對(duì)賬號(hào)進(jìn)行刪除或停用。
4掌握數(shù)據(jù)庫(kù)的安全性管理
創(chuàng)建的服務(wù)器賬號(hào)只能連接SQL Server服務(wù)器,還不能訪問(wèn)具體的數(shù)據(jù)庫(kù)。要想訪問(wèn)數(shù)據(jù)庫(kù),還需要將服務(wù)器登錄賬號(hào)映射到需要訪問(wèn)的數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)賬號(hào)。數(shù)據(jù)庫(kù)賬號(hào)的創(chuàng)建方法是:展開(kāi)需要訪問(wèn)數(shù)據(jù)庫(kù)的“安全性”,右擊“用戶”,選擇“新建用戶”,輸入新建“用戶名”的內(nèi)容,單擊“用戶名”后的按鈕,在打開(kāi)的“選擇登錄名”窗口中輸入服務(wù)器登錄賬號(hào)名,單擊“檢查名稱”進(jìn)行檢查服務(wù)器登錄名后,單擊“確定”按鈕,在“默認(rèn)架構(gòu)”中選擇“dbo”,最后在“數(shù)據(jù)庫(kù)角色成員身份”選擇“db owner”,完成數(shù)據(jù)庫(kù)用戶創(chuàng)建。數(shù)據(jù)庫(kù)用戶進(jìn)行修改和刪除操作,需要以數(shù)據(jù)庫(kù)管理員身份登錄SQL Server進(jìn)行。
SQL Server中包括兩種數(shù)據(jù)庫(kù)角色:固定數(shù)據(jù)庫(kù)角色和用戶自定義角色。固定角色存在于每個(gè)數(shù)據(jù)庫(kù)中,如表2所示,用戶不能更改。
用戶可根據(jù)權(quán)限不同定義新的角色,自定義數(shù)據(jù)庫(kù)角色是對(duì)固定角色的補(bǔ)充。對(duì)于新創(chuàng)建的自定義數(shù)據(jù)庫(kù)角色,需要先指派權(quán)限,將用戶添加到該自定義的角色中。
5掌握數(shù)據(jù)庫(kù)權(quán)限管理
權(quán)限是用戶擁有操作的能力。在SQL Server中包括對(duì)句權(quán)限、語(yǔ)句權(quán)限和暗示性權(quán)限三種。對(duì)象權(quán)限是指為特定對(duì)象設(shè)置權(quán)限。特定對(duì)象可以為服務(wù)器、登錄賬號(hào)和服務(wù)器角色,也可以為應(yīng)用程序角色、數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)角色等。語(yǔ)句權(quán)限指創(chuàng)建數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)中對(duì)象權(quán)限時(shí)需要設(shè)置的權(quán)限。暗示性權(quán)限是系統(tǒng)預(yù)先授予固定角色的權(quán)限。
權(quán)限管理的操作有授予權(quán)限、權(quán)限收回和拒絕權(quán)限。授權(quán)是指把對(duì)象權(quán)限或語(yǔ)句權(quán)限賦予數(shù)據(jù)庫(kù)用戶或角色。權(quán)限收回是把授予用戶或角色的權(quán)限刪除。拒絕權(quán)限是使數(shù)據(jù)庫(kù)用戶或角色拒絕使用權(quán)限的操作。授予權(quán)限、權(quán)限收回和拒絕權(quán)限的操作可以使用圖形化界面或SQL語(yǔ)句方式實(shí)現(xiàn)。
6結(jié)束語(yǔ)
筆者從數(shù)據(jù)庫(kù)四層安全機(jī)制對(duì)數(shù)據(jù)安全進(jìn)行了分析。為做好安全管理工作,充分地保障網(wǎng)絡(luò)用戶的信息安全,還需要對(duì)SQL Server數(shù)據(jù)庫(kù)在使用過(guò)程中的安全問(wèn)題進(jìn)行多角度分析,例如數(shù)據(jù)加密技術(shù)、存取控制技術(shù)、安全管理模式、備份與恢復(fù)等,只有這樣才能更好地保證數(shù)據(jù)庫(kù)的安全。