SQL-Server數(shù)據(jù)庫安全管理 文章分類:
數(shù)據(jù)庫轉(zhuǎn)自:http://blog.chinaunix.net/u3/112561/showart_2218234.html
以SQL-Server2005為例來說一下關(guān)于數(shù)據(jù)庫安全管理方面的知識(因為我學的就是SQL-Server2005)。SQL Server 2005主要從以下幾個方面來保證數(shù)據(jù)庫安全管理的:
1.SQL Server 2005的安全機制。
2.設置數(shù)據(jù)庫權(quán)限。
3.數(shù)據(jù)庫訪問審核。
4.屏蔽SQL Server常見的漏洞。下面我們了解一下以上各個方面的詳細信息:
一、SQL Server 2005 的安全機制:
SQL Server 2550的安全機制主要包括以下五個方面:
1.客戶機的安全機制:
客戶機的安全機制是指:用戶必須能夠登錄到客戶機,然后才能使用SQL Server 2005應用系統(tǒng)或客戶機管理工具來訪問數(shù)據(jù)庫。對于使用Windows系統(tǒng)的客戶來說,它主要涉及的是操作系統(tǒng)的安全,主要是Windows賬號的安全(這個意思就是保證你的電腦系統(tǒng)的安全,也就保證了SQL Server 2005的第一道防線)。
2.網(wǎng)絡傳輸?shù)陌踩珯C制:
網(wǎng)絡傳輸?shù)陌踩话悴捎脭?shù)據(jù)的加密和解密技術(shù)來實現(xiàn),但加密的SQL Server會使網(wǎng)絡速度變慢,所以對安全性要求不高的網(wǎng)絡一般都不采用加密技術(shù)。
3.服務器安全機制:
服務器安全機制是指:當用戶登錄服務器時,必須使用一個賬號(也稱為登錄賬號)和密碼,這個賬號和密碼是服務器上的賬號和密碼,服務器會按照不同的身份驗證方式來判斷這個賬號和密碼的正確性。
4.數(shù)據(jù)庫的安全機制:
任何能夠登錄到服務器的賬號和密碼都對應著一個默認的工作數(shù)據(jù)庫。SQL Server對數(shù)據(jù)庫級的權(quán)限管理采用的是“數(shù)據(jù)庫用戶”的概念。
5.數(shù)據(jù)庫對象的安全機制:
用戶通過前面四道防線后才能訪問數(shù)據(jù)庫中的數(shù)據(jù)對象,對數(shù)據(jù)對象能夠做什么樣的訪問稱為訪問權(quán)限。常見的訪問權(quán)限包括數(shù)據(jù)的查詢、更新、插入和刪除。
二、設置數(shù)據(jù)庫服務器的訪問權(quán)限
SQL Server的安全性是建立在認證和訪問許可兩種安全機制上的。其中認證是指用來確定登錄SQL Server的用戶的登錄賬戶是否正確,以此來驗證其是否有連接SQL Server的權(quán)限。用戶登錄數(shù)據(jù)庫的合法身份有兩種:Windows的用戶或組、SQL Server登錄用戶。
1.SQL Server的驗證模式:
SQL server有兩種身份驗證模式:Windows身份驗證模式和混合驗證模式(就是WINDOWS和SQL SERVER驗證模式)。
(1).Windows身份驗證模式:
Windows身份驗證模式是通過Windows用戶賬號直接連接SQL Server服務器,Windows用戶或組被映射到SQL Server的登錄用戶。在該模式下用戶只需要通過Windows身份驗證就可以直接連接到SQL Server服務器,而不用考慮SQL Server服務器本身。這種身份驗證模式適用于域環(huán)境下。
(2).SQL Server和Windows混合身份驗證模式:
在這種混合模式下,既可以用Windows用戶賬號直接登錄SQL Server服務器,也可以使用SQL Server用戶賬號來登錄SQL Server服務器。當然使用SQL Server身份驗證模式時必須先創(chuàng)建SQL Server用戶。這種模式適用于工作組環(huán)境下。
注意:因為Windows98不支持Windows身份驗證,所以當SQL Server運行在Windows 98環(huán)境下時,就只能使用混合模式。還有就是當我們改變了SQL Server的驗證模式時,就必須重新啟動SQL Server服務。
Windows身份驗證模式與SQL Server身份驗證模式相比有以下優(yōu)勢:
》用戶訪問SQL Server時速度更快,不用輸入用戶名和密碼。
》可以利用Windows賬戶策略來直接進行管理,在安全方面比SQL Server身份驗證模式更加安全。
》提供了更多的功能,比如:口令復雜度、口令最小長度、賬戶鎖定等。
我們可以通過打開“SQL Server Management Studio”連入數(shù)據(jù)庫后選擇系統(tǒng)默認有的那個綜合選項右擊“屬性”——“安全性”選項中來設置SQL Server的身份驗證模式。當我們修改了身份驗證模式后一定要重啟服務(當然系統(tǒng)會也會提示你重新啟動服務)。選種默認數(shù)據(jù)庫右擊選擇“重新啟動”后,SQL Server的身份驗證模式就修改了!然后斷開連接重新連接時有兩個選項“Windows身份驗證模式”與“SQL Server身份驗證模式”。
2.設置登錄賬戶:
可以通過“SQL Server Management Studio”來創(chuàng)建和管理登錄賬戶,默認的QL Server是用Windows身份驗證模式,SQL Server的登錄賬戶無法登錄。只能建立SQL Server登錄賬戶后才能使用SQL Server賬戶登錄。當然要使用SQL Server賬戶登錄,就必須把身份驗證模式改為混合模式。下面介紹一下SQL Server中創(chuàng)建登錄賬戶的方法:
其實在SQL Server中創(chuàng)建登錄賬戶的方法有兩種:一是Windows身份驗證模式的登錄名,另一種是SQL Server身份驗證模式的登錄名。Windows身份驗證模式的登錄名首先得在系統(tǒng)中存在這個賬戶才行,不然的話不可以創(chuàng)建。假如系統(tǒng)中存在這個賬戶,那么直接輸入“NETBIOS名稱/用戶賬號”或點擊“搜索”來建立。SQL Server身份驗證模式的登錄名就得自己建立一個用戶名,并且輸入密碼及設置相應的策略來創(chuàng)建 。在建立的過程中會有些別的選項,比如:服務器角色、用戶映射、安全對象、狀態(tài)等。后面我們會一一介紹各個選項的意義。
建立登錄賬戶的操作是:選擇默認數(shù)據(jù)庫下面的“安全性”右擊選擇“新建”——“登錄”來創(chuàng)建。
3.服務器角色的概念:
服務器角色(也稱做固定服務器角色)是執(zhí)行服務器級管理操作的權(quán)限的集合。我們可以簡單的把它理解成“Windows系統(tǒng)中的組”。它跟“Windows系統(tǒng)中的組”是一樣的作用。只不過稱呼不同罷了!-_-!固定服務器角色及其描述如下表:(或者你可以到“安全性”下的“服務器角色”選項中查看)。 服務器角色
描述
Sysadmin 可以執(zhí)行SQL Server上的任何活動,任何具有這種角色成員身份的人都是服務器上的SA。值得注意的是,Windows的Adminsitrators組被自動映射到該角色中,為提高安全性,建議把Administrators組Sysadmin角色中刪除。
Dbcreator 可以創(chuàng)建和更改數(shù)據(jù)庫。
Serveradmin 可以更改服務器范圍的配置選項和關(guān)閉服務器,該角色成員所控制的功能對于服務器的性能會產(chǎn)生較大的影響。
Securityadmin 管理和審核登錄賬戶(例如:管理登錄名,讀取錯誤日志以及創(chuàng)建數(shù)據(jù)庫許可權(quán)限的登錄名等)。
Processadmin 可以終止SQL Server長時間運行的進程。
Setupadmin 配置復制和鏈接服務器。
Diskadmin 用于管理磁盤文件。
Bulkadmin 可以運行Bulk Insert語句
注意:鏈接服務器可以使SQL Server對遠程服務器上的數(shù)據(jù)源執(zhí)行命令。Bulk Insert語句主要是用來實現(xiàn)SQL Server的大數(shù)據(jù)量文本文件的批量導入。
我們在實際生活中,可以根據(jù)自己工作的實際情況來運用這些個角色來為用戶分配數(shù)據(jù)庫服務器權(quán)限。打開服務器角色配置頁的方法是:默認數(shù)據(jù)庫下的“安全性”選項中的“登錄名”。然后選擇你要為哪個用戶配置服務器角色,然后選擇用戶右擊“屬性”來打開。打開后選擇第二項“服務器角色”來為用戶配置服務器角色權(quán)限。
二、新建數(shù)據(jù)庫用戶:
在建立了SQL Server登錄賬戶以后,需要授予用戶或組許可,使他們能夠在數(shù)據(jù)庫中執(zhí)行任務。登錄賬戶用于訪問SQL Server實例,數(shù)據(jù)庫用戶則用于訪問數(shù)據(jù)庫。要想訪問某個數(shù)據(jù)庫,就必須在這個數(shù)據(jù)庫上建立相對應的數(shù)據(jù)庫用戶。
實際上數(shù)據(jù)庫用戶是映射到登錄賬戶上的。也就是當我們新建一個登錄名時,就可以把它映射到一個數(shù)據(jù)庫里,成為這個數(shù)據(jù)庫的數(shù)據(jù)庫用戶。建立一個數(shù)據(jù)庫用戶的具體步驟如下:
首先建立一個登錄名——然后把這個登錄名映射到你想要建立數(shù)據(jù)庫用戶的數(shù)據(jù)庫中(當然你首先得有你自己的數(shù)據(jù)庫)。下面是建立一個數(shù)據(jù)庫DB上的一個數(shù)據(jù)庫用戶的步驟:
1.首先建立自己的數(shù)據(jù)庫:
2.然后新建登錄名(我這里是使用的Windows用戶,直接搜索找到用戶就OK了):
3.把登錄賬戶映射到數(shù)據(jù)庫DB讓其成為數(shù)據(jù)庫DB的數(shù)據(jù)庫用戶:
4.然后就可以到DB數(shù)據(jù)庫下面的“安全性”——“用戶”里面就可以找到你映射的數(shù)據(jù)庫用戶了!
如果有多個人對某個數(shù)據(jù)庫具有相同的權(quán)限的時候,我們可以直接在AD中新建一個組,然后把這些個用戶加入到組里,最后到SQL Server服務器上新建一個登錄名,新建時候輸入“域名中"."前面的部分\組名”(例如:域名是abc.com的話,那么輸入時候就輸入“abc\組名”)。新建好后,這個組中的用戶就都可以登錄SQL Server數(shù)據(jù)庫了。
三、數(shù)據(jù)庫角色:
數(shù)據(jù)庫角色的作用是為數(shù)據(jù)庫用戶設置對某個數(shù)據(jù)庫的權(quán)限,而數(shù)據(jù)庫角色又分為固定數(shù)據(jù)庫角色和用戶定義數(shù)據(jù)庫角色。固定數(shù)據(jù)庫是一組SQL Server 預定義的數(shù)據(jù)庫角色,具有數(shù)據(jù)庫級別的管理權(quán)力,用來完成常用的數(shù)據(jù)庫任務。
1.固定數(shù)據(jù)庫角色有以下幾種:
固定數(shù)據(jù)庫角色 說明
db_owner 可以執(zhí)行所有配置和維護活動,還可以刪除數(shù)據(jù)庫
db_securutyadmin 可以修改角色成員身份和管理權(quán)限
db_accessadmin 可以為Windows登錄名、組和SQL Server登錄名添加或刪除數(shù)據(jù)庫訪問權(quán)限
db_backupoperator 可以備份數(shù)據(jù)庫
db_datareader 可以從所有用戶表中讀取所有數(shù)據(jù)
db_datawriter 可以在所有用戶表中添加、刪除或更改數(shù)據(jù)
db_ddladmin 可以在數(shù)據(jù)庫中運行任何數(shù)據(jù)定義的語言命令
db_denydatareader 不能讀取數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)
db_denydatawriter 不能添加、修改或刪除數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)
public 維護默認的權(quán)限
注意:PUBLIC角色是特殊的固定數(shù)據(jù)庫角色,特點是:捕獲數(shù)據(jù)庫中用戶的所有默認權(quán)限、所有用戶和角色或組默認屬于public角色、無法將用戶和組或角色指派給它,因為默認情況下它們即屬于該角色、不能被刪除。為public角色授予權(quán)限時必須非常小心,因為一個小小的錯誤可能導致用戶非法訪問數(shù)據(jù)庫。
2.用戶自定義數(shù)據(jù)庫角色:
當固定服務器角色不能滿足要求時,就可以自己創(chuàng)建數(shù)據(jù)庫角色,定義一組用戶具有相同的權(quán)限??梢允褂肧QL Server Management Studio的對象資源管理器創(chuàng)建用戶定義數(shù)據(jù)庫角色。為數(shù)據(jù)庫設置權(quán)限的步驟如下:
(1).打開你新建的數(shù)據(jù)庫下面的“安全性”選項下的“角色”里的“數(shù)據(jù)庫角色”來設置數(shù)據(jù)庫權(quán)限。
然后你想讓你的用戶擁有什么權(quán)限就把他加入到哪個數(shù)據(jù)庫角色中。然后這個用戶就擁有了相應的權(quán)限。比如把個用戶加入到db_owner角色中。
四、數(shù)據(jù)庫訪問審核:
審核可以幫助跟蹤并阻止系統(tǒng)中未經(jīng)授權(quán)的用戶行為。對那些具有高特權(quán)但卻干壞事的管理員或者用戶進行審核,對保護系統(tǒng)十分有用。一個好的審核系統(tǒng)允許只對那些重要的事件進行過濾,因此用戶不會淹沒在海量的信息中。所有數(shù)據(jù)平臺均在不同程度上提供審查功能。
下面來說一下SQL Server安全審核的設置:
首先打開數(shù)據(jù)庫服務器的“屬性”——“安全性”里的“登錄審核”選項來設置數(shù)據(jù)庫訪問審核。根據(jù)自己的實際情況來設置那些選項。比如你是要審核“登錄失敗”的還是“登錄成功”的或者是“登錄失敗和成功”都進行審核的。當這些設置好后,你就可以用一個錯誤的登錄名或正確的登錄名來登錄一下試試審核啟動沒有。你可以在Windows系統(tǒng)中的“事件查看器”里面找到審核的內(nèi)容。
五、屏蔽SQL Server常見漏洞:
1.修改SA密碼。
因為SA是SQL Server默認的超級管理員,所以一定要確保SA密碼的安全性。最好是把SA密碼設的復雜點,如果有必要可以把SA的用戶名也修改了。
2.刪除或禁用不必要的用戶:
系統(tǒng)中包含的默認用戶,往往因為用戶名的公開,成為黑客攻擊的目標。所以安全的做法是應該將這些公開的用戶刪除或禁用后重建。比如說:默認的Administrators組就可以直接刪了或禁用。
3.刪除危險的存儲過程:
為什么要刪除不必要的存儲過程呢?因為有些存儲過程很容易被人利用,用來提升權(quán)限或進行破壞。主要有以下幾種存儲過程:
(1).執(zhí)行操作系統(tǒng)命令的存儲過程xp_cmdshell。
(2).操縱OLE自動化對象的存儲過程。
(3).注冊表訪問的存儲過程。
(4).文件操作類存儲過程。
(5).進程管理類存儲過程。
(6).任務管理類存儲過程。
上面這幾種存儲過程因為我也不怎么懂所以在這里不詳細介紹了,你們可以看我另一篇文章“SQL高級注入使用之存儲過程”(
http://blog.chinaunix.net/u3/112561/showart_2223533.html)這是我從我們老師那里轉(zhuǎn)的^_^。有興趣的可以去看看。
4.關(guān)閉不必要的網(wǎng)絡連接功能。
SQL Server 提供外圍應用配置器單一的界面,減少外圍應用,停止或禁用不必要的服務或連接。外圍應用的減少使得對系統(tǒng)的攻擊途徑減少,有助于提高安全性。使用“外圍應用配置器”可以啟用、禁用、開始或停止SQL Server2005安裝的一些功能服務和遠程連接。打開“外圍應用配置器”的步驟是:“開始”——“程序”——“Microsoft SQL Server 2005”——“配置工具”——“SQL Server外圍應用配置器”來打開“SQL Server外圍應用配置器”。打開后自己就可以配置了。
5.配合防火墻過濾指定端口訪問:
默認情況下,SQL Server2005會偵聽TCP1433端口,并將1433UDP端口用于客戶端與服務器間的協(xié)議。因此,也為攻擊者提供了大量入侵機會,所以應該結(jié)合防火墻來限制對端口的訪問。使用SQL Server配置管理器可以通過更改默認端口、配置命名實例來偵聽同一端口,也可以隱藏端口。
6.禁用不必要的協(xié)議。
7.加密數(shù)據(jù)(也就是通過證書等加密方法來加密數(shù)據(jù)來保證數(shù)據(jù)安全)。
8.定期安裝補丁。
好了,這一節(jié)就完了。。。真累-_-!。