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